24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1831  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

betty920

新虫 (小有名气)

[求助] 就是SVM的BPA求解算法!!!!谁能给我把这段伪代码,写成程序。。。

This  appendix   shows  the  pseudo-code  for the  training is shown  below.   The  algorithm is a
model-trust algorithm  based on the Levenberg-Marquardt algorithm [17].

Input parameters:
out = array of SVM outputs  SVM的输出
target  = array of booleans: is ith example  a positive example?(0,1)
priorl  = number  of positive examples prior0  = number  of negative examples
Outputs:
A, B = parameters of sigmoid

A = 0
B = log((prior0+l)/(priorl+l))
hiTarget = (priorl+l)/(priorl+2) yi为+1时
loTarget = l/(prior0+2)  yi为-1时
lambda  = le-3 olderr  = le300
pp = temp array to store current  estimate of probability of examples
set all pp array elements to (priorl+l)/(prior0+priorl+2)
count = 0
for it = l to l00 {
a = 0, b = 0, c         = 0, d = 0, e = 0
// First, compute  Hessian  & gradient of error function
// with respect  to A & B
for i = l to len {
if (target)
        t = hiTarget else
t = loTarget
dl = pp-t
d2 = pp*(l-pp)
a += out*out*d2 b += d2
c += out*d2
d += out*dl e += dl
}
        // If gradient is really  tiny, then stop if (abs(d)  < 1e-9 && abs(e)  < 1e-9)
break
oldA = A
oldB = B
err = 0
        // Loop until goodness of fit increases while (1) {
det = (a+lambda)*(b+lambda)-c*c
if (det == 0) {         // if determinant of Hessian  is zero,
        // increase stabilizer lambda  *= 10
continue
}
A = oldA + ((b+lambda)*d-c*e)/det
B = oldB + ((a+lambda)*e-c*d)/det
// Now, compute  the goodness of fit err = 0;
for i = 1 to len {
p = 1/(1+exp(out*A+B))
pp = p
// At this step, make sure log(0)  returns  -200 err -= t*log(p)+(1-t)*log(1-p)
}
if (err < olderr*(1+1e-7)) {
lambda  *= 0.1 break
}
// error did not decrease: increase stabilizer by factor  of 10
// & try again lambda  *= 10
        if (lambda  >= 1e6) // something is broken.  Give up break
}
diff = err-olderr
scale = 0.5*(err+olderr+1)
if (diff > -1e-3*scale && diff < 1e-7*scale)
count++
else
        count = 0 olderr  = err
if (count  == 3)
break
}


真心求助。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

betty920

新虫 (小有名气)

引用回帖:
5楼: Originally posted by gzl9901 at 2012-05-02 17:58:44:
这是哪篇论文中提到的?

Probabilisti  Outputs for Support Vetor Mahines and 。。。。。
6楼2012-05-03 08:37:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

hengxue

铜虫 (小有名气)

留下个记号,待闲时再过来看看,能不能编。
QQ:474933652
2楼2012-05-02 08:44:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

betty920

新虫 (小有名气)

引用回帖:
2楼: Originally posted by hengxue at 2012-05-02 08:44:56:
留下个记号,待闲时再过来看看,能不能编。

能帮忙编写一下吗
3楼2012-05-02 09:29:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hengxue

铜虫 (小有名气)

引用回帖:
3楼: Originally posted by betty920 at 2012-05-02 09:29:19:
能帮忙编写一下吗

这周比较忙。
我就搞过一个最小二乘法拟合的算法
现在,偏最小二乘法还没有弄呢。
其它的也没有弄过。
QQ:474933652
4楼2012-05-02 09:33:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见