Dod-o / Statistical-Learning-Method_Code

手写实现李航《统计学习方法》书中全部算法

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SVM E值得更新

lsabrinax opened this issue · comments

self.alpha[i] = alphaNew_1
self.alpha[j] = alphaNew_2
self.b = bNew

self.E[i] = self.calcEi(i)
self.E[j] = self.calcEi(j)

在每次更新完alpha1和alpha2之后,我认为应该更新所有的E值,因为alpha1和alpha2的不仅影响Ej和Ej,其他的也会受影响,下一次更新时用到的E1和E2应该是用最近一次更新之后的alpha计算的

commented

明白了你的意思,实际代码应该按你的想法去写,不过这样子时间复杂度上需要再乘上一个n的平方,也许会被无法接受。
实际上目前E的值像进度条一样更新,当前位置i的E是刚更新的,最可靠的,离当前位置i越远越不可靠,但随着迭代轮数的增加,整个模型会趋于稳定,每次更新alpha后对E的影响也就越来越小。
这是对时间的一种折中,我相信按照你说的做法实际迭代所需轮数可能会小一点,但多走几个轮数,让模型自己趋于稳定也一样可以,虽然轮数增加了,但我相信总时间会少很多很多。