沿着SVM的进化路线,不断改进SVM算法。
TSVM算法的思路是在SVM的外面套了一个搜寻,有意思的是它将惩罚因子也作为迭代的调整参数。
本文从编程优化的角度讨论了TSVM 算法的来龙去脉,并给出了伪代码。
半监督SVM
我们先看看【西瓜书式】第6章中,SVM的进化路线:最大化间隔【西瓜书式(6.5)】最小化【西瓜书式(6.6)】(即SVM基本型)放开硬控制,不满足约束的样本尽可能少【西瓜书式(6.29)】软间隔支持向量机【西瓜书式(6.35)】.
进一步地:若改为分隔线穿过数据的低密度区,则为S3VM【西瓜书图13.3】;若对打上预测标记,则可用来监督SVM,由此可将【西瓜书式(6.35)】推广到【西瓜书式(13.9)】(将改为)即TSVM。
TSVM算法的思路是在SVM的外面套了一个搜寻,有意思的是它将惩罚因子也作为迭代的调整参数。
TSVM的直接逻辑(如图13.1所示):
图13.1 TSVM原理
(1)初始化:用训练一个,用对中样本进行预测,得,初始化两惩罚因子。
(2)循环调整:
(2.1)基于,求解【西瓜书式(13.9)】(求解方法见【西瓜书式(6.35)】),得到新的SVM;
(2.2)用新的重新预测中的样本,更新;
(2.3)调大,即的作用越来越大;
(2.4)未到结束条件时,返回(2.1)。
然而,(2.2)步重新预测可以改为: 根据原与间的不协调性,调整出新的(如图13.2 所示):
图13.2 TSVM
我们回到【西瓜书式(6.41)】下面的讨论:“若,则有,此时,若则,若则该样本被错误分类”,即: 当则对该样本的预测可能错误(在前述“该样本被错误分类”的肯定结论中,去掉了部分前提条件,则结论改为“可能”)。
将该结论应用于(2.2)步:当时,认为可能错误,调整:,调整后,再训练,再调整,即
(2.2)的修订
当然,细节上还应该考虑避免死循环(后续也一样)。
然而,上述对(2.2)的修订破坏了初始化时得到的伪标记中正反例的比例。 由于初始化伪标记是由有监督学习基于训练来预测得到的,虽然对个体的预测可能不准确,但认为总体上正、反例的比例正确。 为了不破坏这个比例关系,应在与之间,配对反号:即一个由正改负,另一个由负改正,式子表示为:。
(2.2)的再修订
(2.2)定稿
进一步地,有人研究认为:将范围稍扩大为更好。 由此得到TSVM算法【西瓜书图(13.4)】的第6至10行。即
我们以罚参作为停机的控制条件:
- 第3句:初始化;
- 第4句:判断是否停机(停机);
- 第11句:调整参数()。
为解决类别不平衡问题(如,正例远小于反例),修订【西瓜书式(13.9)】,将的处罚项分拆为两项
我们修订罚参的控制条件:
- 第3句:初始化(),其中,与为对第2句预测结果的统计。
- 第4句:判断是否停机(停机)。
- 第11句:调整参数()。