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

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

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

这里不再叙述公式推导及证明,只是简单给出SMO算法第一个变量的选择方法。
SMO称选择第一个变量的过程为外层循环,外层循环在训练样本中选择违反KKT条件最严重的样本点,其KKT条件为:

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

其中,

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

违反KKT条件时,

αi=0yig(xi)<1αi=0时,yig(xi)<1
0<αi<Cyig(xi)<10<αi 0<αi<Cyig(xi)>10<αi1
αi=Cyig(xi)>1αi=C时,yig(xi)>1

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

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

需要注意的是,yig(xi)=1yig(xi)=1时,0αiC0≤α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 ))
or (( yi(g(xi)yi)>δyi∗(g(xi)−yi)>δ ) and ( αi>0αi>0 ))

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

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

和公式(1)(2)相比,多出的δδ为一个误差项

你可能感兴趣的:(机器学习)