#SMO算法的伪代码 #创建一个alpha向量并将其初始化为0向量 #当迭代次数小于最大迭代次数时(w外循环) #对数据集中每个数据向量(内循环): #如果该数据向量可以被优化: #随机选择另外一个数据向量 #同时优化这两个向量 #如果两个向量都不能被优化,退出内循环 #如果所有向量都没有被优化,增加迭代次数,继续下一次循环
优先选择遍历非边界数据样本,因为非边界数据样本更有可能需要调整,边界数据样本常常不能得到进一步调整而留在边界上。由于大部分数据样本都很明显不可能是支持向量,因此对应的α乘子一旦取得零值就无需再调整。遍历非边界数据样本并选出他们当中违反KKT 条件为止。当某一次遍历发现没有非边界数据样本得到调整时,遍历所有数据样本,以检验是否整个集合都满足KKT条件。如果整个集合的检验中又有数据样本被进一步进化,则有必要再遍历非边界数据样本。这样,不停地在遍历所有数据样本和遍历非边界数据样本之间切换,直到整个样本集合都满足KKT条件为止。以上用KKT条件对数据样本所做的检验都以达到一定精度ε就可以停止为条件。如果要求十分精确的输出算法,则往往不能很快收敛。
https://blog.csdn.net/woaidapaopao/article/details/52667366
https://blog.csdn.net/zouxy09/article/details/17292011
https://www.cnblogs.com/zy230530/p/6901277.html