请用 Platt 的 SMO 算法(用于 SVM)启发我

数据挖掘 支持向量机
2021-10-10 16:02:30

来自A_Roadmap_to_SVM_SMO.pdf,第 12 页。

一只忙碌的猫
(来源:postimg.org

假设我使用的是线性内核,我将如何获得第一个和第二个内积?

我的猜测是,数据点与数据点 j 的内积标记为 A 类作为方程的第一个内积,数据点 j 的内积与标记为 B 类的数据点作为第二个内积?

1个回答

你的理解是正确的。关键是等式(8)

yi(<w,ϕi>+b)1=0
不完全是一个方程,而是一个方程组,每个方程一个 i 支持向量的索引(每个 0<αi<C.

关键是你无法计算 b 在对偶问题的优化过程中,由于优化无关紧要,您必须返回计算 b 从您拥有的所有其他方程式中(一种可能的方法是(8))。

Vapnick 的建议是不要只使用这些方程中的一个,而是使用其中的两个,特别是一个支持向量用于负面观察,一个支持向量用于正面观察。换句话说,两个具有相反符号的支持向量yi.

让我们命名 A 一个支持向量的索引和 B相对侧的支持向量的索引,您可以从 (8) 处的方程组中仅选择其中两个。评估它们并取平均值。

从:

yA(<w,ϕA>+b)=1
yB(<w,ϕB>+b)=1
我们得到:
bA=1yA<w,ϕA>
bB=1yB<w,ϕB>
在哪里 bAbB 是两个估计,那么平均值是
b=(bA+bB)/2=12(<w,ϕA>+<w,ϕB>)=12i=1nyiαi(<ϕ(xi),ϕ(xA)>+<ϕ(xi),ϕ(xB)>)