作业说明
任务一:分别用线性SVM和高斯核SVM预测对数据进行分类。这个代码都写好了,运行一下就行了
任务二:使用高斯核SVM对给定数据集进行分类。给定数据集(文件task2.mat), 参考task1的代码, 编程实现一个高斯核SVM进行分类。输出训练参数C, sigma分别取0.01, 0.03, 0.1, 0.3, 1, 3, 10, 30时(共64组参数组合)的训练集上的准确率。这个只要用任务一给的代码,再稍微改一下别的就行了。
任务三:使用线性SVM实现对垃圾邮件分类。数据集是mat文件。这个也是用任务一给的代码就行了。只不过是线性核
因为直接用给的代码就行,所以这次作业没什么难度
复习
支持向量机学的时候我没什么感觉,因为我没有基础,学啥都觉得难。据我的同学那些提前学过机器学习的说,支持向量机是最难理解的。
支持向量机就是基于训练集在样本空间中划分一个超平面,划分超平面要找到一个最大间隔。
max
w
,
b
2
∣
∣
w
∣
∣
\max_{w,b}\frac{2}{||w||}
maxw,b∣∣w∣∣2
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
s.t. y_{i}(w^{T}x_{i}+b)\ge1
s.t.yi(wTxi+b)≥1
该问题等价于
min
w
,
b
1
2
∣
∣
w
∣
∣
2
\min_{w,b}\frac{1}{2}||w||^{2}
minw,b21∣∣w∣∣2
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
s.t. y_{i}(w^{T}x_{i}+b)\ge1
s.t.yi(wTxi+b)≥1
回忆一下大一下微积分学过的拉格朗日极值法,构建对偶问题然后求偏导为零得到极值
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
i
=
1
m
α
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
L(w,b,\alpha)=\frac{1}{2}||w||^{2}+\sum_{i=1}^{m}\alpha_{i}(1-y_{i}(w^Tx_i+b))
L(w,b,α)=21∣∣w∣∣2+∑i=1mαi(1−yi(wTxi+b))求偏导可以得到
w
=
∑
i
=
1
m
(
α
i
y
i
x
i
)
w=\sum_{i=1}^{m}(\alpha_{i}y_{i}x_{i})
w=∑i=1m(αiyixi)
0
=
∑
i
=
1
m
(
α
i
y
i
)
0=\sum_{i=1}^{m}(\alpha_iy_i)
0=∑i=1m(αiyi)
将这两个式子带入拉格朗日函数得
max
α
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
\max_{\alpha}\sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j
maxα∑i=1mαi−21∑i=1m∑j=1mαiαjyiyjxiTxj
s
.
t
.
∑
i
=
1
m
α
i
y
i
=
0
,
α
i
≥
0
s.t.\sum_{i=1}^{m}\alpha_iy_i=0,\alpha_i\ge0
s.t.∑i=1mαiyi=0,αi≥0
到这里就差不多了,对于这个的解法,核函数这些概念还得看教材好好领悟才行啊