五、SVDD
5.1 one class 分类
通常分类问题是两类或者多类,但有一种分类为一类
one class
的分类问题:它只有一个类,预测结果为是否属于这个类。一类分类的策略是:训练出一个最小的超球面把正类数据包起来。识别一个新的数据点时,如果这个数据点落在超球面内,则属于正类;否则不是。
示例:给定一些用户的购物行为日志,其中包括两类用户:
- 购买了某个商品的用户。可以肯定该类用户对于该商品是感兴趣的(标记为正例)。
- 未购买某个商品的用户。此时无法断定该用户是对该商品感兴趣,还是不感兴趣(无法标记为反例)。
现在给定一群新的用户,预测这些用户中,哪些可能对该商品有兴趣。
如果简单的使用二类分类问题,则有两个问题:
- 未购买商品的用户,不一定是对该商品不感兴趣,可能是由于某些原因未能购买。
- 通常未购买商品的用户数量远大于购买用户的数量。如果使用二类分类,则容易造成正负样本不均匀。
5.2 SVDD 算法
support vector domain description:SVDD
可以用于一类分类问题。给定训练集 ,这些样本都是属于同一类。
SVDD
的的优化目标是:求一个中心为 ,半径为 的最小球面,使得 中的样本都在该球面中。类似
SVR
,SVDD
允许一定程度上的放松,引入松弛变量。对松弛变量 ,其代价为 。其中 为惩罚系数:
- 若 较大,则不能容忍那些球面之外的点,因此球面会较大。
- 若 较小,则给予球面之外的点较大的弹性,因此球面会较小。
SVDD
的求解也是采用拉格朗日乘子法:- 根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题: 。
- 先求极小问题:根据 对 偏导数为零可得:
- 代入拉格朗日函数有:
引入核函数:
其解法类似支持向量机的解法。
判断一个新的数据点 是否属于这个类,主要看它是否在训练出来的超球面内:若 ,则判定为属于该类。
- 如果使用支持向量,则判定准则为: 。
- 如果是用核函数,则判定准则为: 。