master
aolingwen 5 years ago
parent e42b04984d
commit 64900b6113

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

Loading…
Cancel
Save