机器学习与数据挖掘——作业1
问题:
根据提供的数据,训练⼀个采⽤在不同的核函数的⽀持向量机 SVM 的 2 分类器,并验证其在测试数据集上的性能。
要求:
- 考虑两种不同的核函数:i) 线性核函数; ii) ⾼斯核函数
- 可以直接调⽤现成 SVM 软件包来实现
- ⼿动实现采⽤ hinge loss 和 cross-entropy loss 的线性分类模型,并⽐较它们的优劣
实验原理
SVM支持向量机
支持向量机是一种两类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略(分割原则)便是间隔最大化,最终可转换为一个凸二次规划问题的求解。
在高维空间中,超平面可以使用如下线性方程来描述:
ω T x + b = 0 \omega^Tx+b=0 ωTx+b=0
ω \omega ω是超平面的法向量,垂直于超平面,b为位移量
如图,在线性二分类模型中,如果存在一个超平面,能将数据分开,使得一边的点y=-1,另一边的点y=1,则称其线性可分
如下图,在线性可分的样本中,会存在多个超平面满足要求
为了使求出的超平面有泛化能力,在测试集中也表现良好,选出的超平面应该里两个样本簇尽可能远。
即离超平面最近的点到超平面的距离最远。
其中,对于样本点x,记 h ( x ) = ω T x + b h(x)=\omega^Tx+b h(x)=ωTx+b
定义它到超平面距离 γ \gamma γ为
γ = h ( x ) ∣ ∣ ω ∣ ∣ \gamma=\frac{h(x)}{||\omega||} γ=∣∣ω∣∣h(x)
当点x相对超平面的方向与 ω \omega ω相同时, γ > = 0 \gamma>=0 γ>=0,否则 γ < = 0 \gamma<=0 γ<=0
要优化的目标函数变为
m a x ω , b m i n 1 < = l < = N y ( l ) ( ω T x ( l ) + b ) ∣ ∣ ω ∣ ∣ max_{\omega,b} min_{1<=l<=N}\frac{y^{(l)}(\omega^Tx^{(l)}+b)}{||\omega ||} maxω,bmin1<=l<=N∣∣ω∣∣y(l)(ωTx(l)+b)
经过一轮推导,最终可化为
m i n ∣ ∣ ω ∣ ∣ min ||\omega|| min∣∣ω∣∣
使得
y ( l ) ( ω T x ( l ) + b ) > = 1 , 1 < = l < = N y^{(l)}(\omega^Tx^{(l)}+b)>=1,1<=l<=N y(l)(ωTx(l)+b)>=1,1<=l<=N
通过拉格朗日乘数法,可获得SVM的对偶形式的最优问题
m a x α ∑ l = 1 N α l − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y ( i ) y ( j ) ( x ( i ) ) T x ( j ) max_\alpha \sum_{l=1}^N\alpha_l-\frac12\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy^{(i)}y^{(j)}(x^{(i)})^Tx^{(j)} maxαl=1∑Nαl−21i=1∑Nj=1∑Nαiαjy(i)y(j)(x(i))Tx(j)
其中
α i > = 0 , 1 < = i < = n \alpha_i>=0,1<=i<=n αi>=0,1<=