您的位置:首页 > 其它

机器学习实战 简化SMO算法 对第一个alpha选择条件的解读

2018-03-13 00:02 239 查看
在看简化版SMO算法的时候,刚开始没懂第一个变量的选择依据,在网上也没有找到解释。所以在搞懂后把选择依据分享出来~~~

1.第一个变量的选择方法

这里不再叙述公式推导及证明,只是简单给出SMO算法第一个变量的选择方法。

SMO称选择第一个变量的过程为外层循环,外层循环在训练样本中选择违反KKT条件最严重的样本点,其KKT条件为:

αi=0⇔yig(xi)≥1αi=0⇔yig(xi)≥1

0<αi<C⇔yig(xi)=10<αi<C⇔yig(xi)=1

αi=C⇔yig(xi)≤1αi=C⇔yig(xi)≤1

其中,

g(xi)=∑Nj=1αjyjK(xi,xj)+bg(xi)=∑j=1NαjyjK(xi,xj)+b

违反KKT条件时,

αi=0时,yig(xi)<1αi=0时,yig(xi)<1

0<αi<C时,yig(xi)<10<αi<C时,yig(xi)<1或0<αi<C时,yig(xi)>10<αi<C时,yig(xi)>1

αi=C时,yig(xi)>1αi=C时,yig(xi)>1

先考虑yig(xi)yig(xi),违反KKT条件的公式等价于

yig(xi)<1时,0≤αi<Cyig(xi)<1时,0≤αi<C ……….(1)

yig(xi)>1时,0<αi≤Cyig(xi)>1时,0<αi≤C……….(2)

需要注意的是,yig(xi)=1yig(xi)=1时,0≤αi≤C0≤αi≤C总是满足KTT条件的。

2.书中给出的关于第一个变量的判断解释

再看书中给出的关于第一个变量的判断

@sky_kkk
if ((labelMat[i]*Ei < -toler) and (alphas[i] < C)) or ((labelMat[i]*Ei > toler) and (alphas[i] > 0))


对应公式为

((yi∗(g(xi)−yi)<−δyi∗(g(xi)−yi)<−δ) and (αi<Cαi<C))

or ((yi∗(g(xi)−yi)>δyi∗(g(xi)−yi)>δ) and (αi>0αi>0))

因为yi∗yi)=1yi∗yi)=1且0≤αi0≤αi,化简,即:

yig(xi)<1−δ时,0≤αi<Cyig(xi)<1−δ时,0≤αi<C

yig(xi)>1+δ时,0<αi≤Cyig(xi)>1+δ时,0<αi≤C

和公式(1)(2)相比,多出的δδ为一个误差项
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: