diff --git a/svm.md b/svm.md index bb7f994..60b0a85 100644 --- a/svm.md +++ b/svm.md @@ -368,7 +368,7 @@ $$smo$$算法需要选择合适的两个变量做迭代,其余的变量做常 一般来说,我们首先选择违反$$0 < \alpha_i < C$$这个条件的点。如果这些支持向量都满足$$KKT$$条件,再选择违反$$\alpha_i=0$$和$$\alpha_i=C$$的点。 -$$smo$$算法称选择第二一个变量为内层循环,假设我们在外层循环已经找到了$$\alpha_1$$, 第二个变量$$\alpha_2$$的选择标准是让 $$|E_1−E_2|$$ 有足够大的变化。由于$$\alpha_1$$定了的时候,$$E_1$$也确定了,所以要想 $$|E_1−E_2|$$ 最大,只需要在$$E_1$$为正时,选择最小的$$E_i$$作为`E2`, 在$$E_1$$为负时,选择最大的$$E_i$$作为$$E_2$$,可以将所有的$$E_i$$保存下来加快迭代。 +$$smo$$算法称选择第二一个变量为内层循环,假设我们在外层循环已经找到了$$\alpha_1$$, 第二个变量$$\alpha_2$$的选择标准是让 $$abs(E_{1}−E_2)$$ 有足够大的变化。由于$$\alpha_1$$定了的时候,$$E_1$$也确定了,所以要想 $$abs(E_{1}−E_2)$$ 最大,只需要在$$E_1$$为正时,选择最小的$$E_i$$作为$$E_2$$, 在$$E_1$$为负时,选择最大的$$E_i$$作为$$E_2$$,可以将所有的$$E_i$$保存下来加快迭代。 如果内存循环找到的点不能让目标函数有足够的下降, 可以采用遍历支持向量点来做$$\alpha_2$$,直到目标函数有足够的下降, 如果所有的支持向量做$$\alpha_2$$都不能让目标函数有足够的下降,可以跳出循环,重新选择$$\alpha_1$$。