机器学习(周志华)-支持向量机课后习题:

 
1.试证明样本空间中任意点x到超平面(w,b)(w,b)的距离为式(6.2)。

超平面(w,b)(w,b)的平面法向量为ww, 任取平面上一点x0x0,有wTx0+b=0wTx0+b=0。xx到平面的距离就是xx到x0x0的距离往ww方向的投影,就是|wT(x−x0)||w|=|wTx+b||w||wT(x−x0)||w|=|wTx+b||w|。

2.使用libsvm,在西瓜数据集3.0α3.0α上分别用线性核和高斯核训练一个SVM,并比较其支持向量的差别。

 (由于电脑的vs是2015的,而matlab上最高只支持2013来编译libsvm,所以只能在vs上用libsvm)
训练的结果是线性核与高斯核得到了完全一样的支持向量,由于没去分析libsvm内部是如何计算的,这里只贴结果。 
第一列是支持向量的权值,后面则是支持向量对应的属性

aiai    x1    x2
1    0.697    0.46
1    0.744    0.376
1    0.634    0.264
1    0.608    0.318
1    0.556    0.215
1    0.403    0.237
1    0.481    0.149
1    0.437    0.211
-1    0.666    0.091
-1    0.243    0.267
-1    0.343    0.099
-1    0.639    0.161
-1    0.657    0.198
-1    0.36    0.37
-1    0.593    0.042
-1    0.719    0.103
3.选择两个UCI数据集,分别用线性核和高斯核训练一个SVM,并与BP神经网络和C4.5决策树进行实验比较。

使用的是iris数据集,选取其中分类为1,2的样本,各50个,4属性。 
每类选前40个样本训练,后10个样本作为测试 
线性核:找出3个支持向量

ai    x1    x2    x3    x4
0.04    5.1    3.3    1.7    0.5
0.16    4.8    3.4    1.9    0.2
-0.20    4.9    2.5    4.5    1.7
偏置为1.50709 
高斯核:找出9个支持向量

ai    x1    x2    x3x3    x4x4
0.48    4.4    2.9    1.4    0.2
0.45    4.3    3    1.1    0.1
0.90    5.7    4.4    1.5    0.4
-0.17    6.3    3.3    6    2.5
-0.66    4.9    2.5    4.5    1.7
-0.03    6.5    3.2    5.1    2
-0.40    7.7    2.6    6.9    2.3
-0.15    6    2.2    5    1.5
-0.41    7.9    3.8    6.4    2
偏置为-0.212437 
编写一个验证的matlab程序

tmp.xlsx验证数据表格

读取数据
w1 = xlsread('C:\Users\icefire\Desktop\ml\tmp.xlsx', 'sheet1', 'A1:C1');
w2 = xlsread('C:\Users\icefire\Desktop\ml\tmp.xlsx', 'sheet1', 'D1:L1');
x1 = xlsread('C:\Users\icefire\Desktop\ml\tmp.xlsx', 'sheet1', 'A2:C5');
x2 = xlsread('C:\Users\icefire\Desktop\ml\tmp.xlsx', 'sheet1', 'D2:L5');
x = xlsread('C:\Users\icefire\Desktop\ml\tmp.xlsx', 'sheet1', 'A7:T10');

y1=zeros(20,1);
y2=zeros(20,1);
%验证线性核
for i=1:20
    for j=1:3
        y1(i)=y1(i)+w1(j)*(x(:,i)'*x1(:,j));
    end
end

y1=y1+1.50709;
%验证高斯核
for i=1:20
    for j=1:9
        y2(i)=y2(i)+w2(j)*exp(-0.25*(x2(:,j)-x(:,i))'*(x2(:,j)-x(:,i)));
    end
end
y2=y2-0.212437;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
得到结果表格如下

y1    y2    y
1.155205016    1.164557907    1
0.997242309    0.780919564    1
1.148298718    1.068992278    1
0.906038093    1.085988234    1
0.842638654    1.042299416    1
1.035492502    1.062906963    1
1.062585631    1.141980465    1
1.09304642    1.100071803    1
1.101546038    1.141056647    1
1.103671899    1.13405161    1
-1.839224592    -1.049900524    0
-1.542242776    -0.95432202    0
-1.471406411    -1.085122464    0
-1.958761346    -1.084832335    0
-1.895362864    -1.029274823    0
-1.608120552    -1.002438466    0
-1.448029593    -1.0262247    0
-1.519044109    -1.03794725    0
-1.658415695    -0.995288562    0
-1.402518712    -1.058306748    0
这里没和神经网络和决策树做对比了,这个数据集的数据线性可分,应该都是0误差。

4.讨论线性判别分析与线性核支持向量机在何种情况下等价。

在线性可分的情况下,LDA求出的wlwl与线性核支持向量机求出的wsws有wl∗ws=0wl∗ws=0,即垂直,此时两者是等价的。

当初在做这个题的时候也没细想,就想当然的认为在线性可分时两者求出来的w会垂直,现在看来并不一定。 
首先,如果可以使用软间隔的线性SVM,其实线性可分这个条件是不必要的,如果是硬间隔线性SVM,那么线性可分是必要条件。这个题只说了是线性SVM,就没必要关心数据是不是可分,毕竟LDA是都可以处理的。 
第二,假如当前样本线性可分,且SVM与LDA求出的结果相互垂直。当SVM的支持向量固定时,再加入新的样本,并不会改变求出的w,但是新加入的样本会改变原类型数据的协方差和均值,从而导致LDA求出的结果发生改变。这个时候两者的w就不垂直了,但是数据依然是可分的。所以我上面说的垂直是有问题的。 
我认为这个题的答案应该就是,当线性SVM和LDA求出的w互相垂直时,两者是等价的,SVM这个时候也就比LDA多了个偏移b而已。

5.试述高斯核SVM与RBF神经网络的联系

RBF网络的径向基函数与SVM都可以采用高斯核,也就分别得到了高斯核RBF网络与高斯核SVM。 
神经网络是最小化累计误差,将参数作为惩罚项,而SVM相反,主要是最小化参数,将误差作为惩罚项。 
在二分类问题中,如果将RBF中隐层数为样本个数,且每个样本中心就是样本参数,得出的RBF网络与核SVM基本等价,非支持向量将得到很小的ww. 
使用LIBSVM对异或问题训练一个高斯核SVM得到αα,修改第5章RBF网络的代码,固定ββ参数为高斯核SVM的参数,修改每个隐层神经元的中心为各个输入参数,得到结果ww,w与αw与α各项成正比例。

6.试析SVM对噪声敏感的原因。

答案1:SVM的基本形态是一个硬间隔分类器,它要求所有样本都满足硬间隔约束(即函数间隔要大于1),所以当数据集有噪声点时,SVM为了把噪声点也划分正确,超平面就会向另外一个类的样本靠拢,这就使得划分超平面的几何间距变小,降低模型的泛化性能。除此之外,当噪声点混入另外一个类时,对于硬间隔分类器而言,这就变成了一个线性不可分的问题,于是就使用核技巧,通过将样本映射到高维特征空间使得样本线性可分,这样得到一个复杂模型,并由此导致过拟合(原样本空间得到的划分超平面会是弯弯曲曲的,它确实可以把所有样本都划分正确,但得到的模型只对训练集有效)。

 原文:https://www.jianshu.com/p/8a499171baa9

答案2:应该是会过拟合。因为SVM约束条件就是对于每个样本要正确分类,至于间隔最大是在这个约束条件的基础上进行的,所以如果约束条件成立就已经导致模型非常复杂,然后过拟合,那么就算是用 min WW 进行约束,也已经效果不大。就跟“扬汤止沸不如釜底抽薪”一样。我的这个想法是源自正则化。正则化是通过添加结构化风险使得经验风险不会太小,防止过拟合。而对于SVM来说,经验风险已经是0了,如果数据结构不是接近线性的话,过拟合的可能性就很大的。
原作者:z2539329562  原文:https://blog.csdn.net/z2539329562/article/details/79199384 

7.试给出式(6.52)的完整KT条件。

非等式约束写成拉格朗日乘子式,取最优解要满足两个条件。拉格朗日乘子式对所有非拉格朗日参数的一阶偏导为0
非等式约束对应的拉格朗日项,要么非等式的等号成立,要么对应的拉格朗日参数为0
所以得到完整KT条件 
w=∑i(α′i−αi)xiw=∑i(αi′−αi)xi 
0=∑i(α′i−αi)0=∑i(αi′−αi) 
对所有的ii 
C=αi+uiC=αi+ui 
C=α′i+u′iC=αi′+ui′ 
αi(f(xi)−yi−ε−ξi)=0αi(f(xi)−yi−ε−ξi)=0 
α′i(yi−f(xi)−ε−ξ′i)=0αi′(yi−f(xi)−ε−ξi′)=0 
(C−αi)ξi=0(C−αi)ξi=0 
(C−α′i)ξ′i=0(C−αi′)ξi′=0
8.以西瓜数据集3.0α的“密度”属性为输入,“含糖率”为输出,使用LIBSVM训练一个SVR。

含糖率和密度有什么必然联系吗?训练后得到的支持向量为

αiαi    密度xixi
1    0.697
1    0.744
0.798    0.608
-1    0.666
0.452    0.243
-1    0.245
-0.25    0.343
1    0.36
-1    0.593
-1    0.719
偏置为 0.213589 
得到含糖率与密度的关系 
假设密度为xx 
含糖率(x)=∑iαie−(x−xi)2+0.213589(x)=∑iαie−(x−xi)2+0.213589
9.试使用和技巧推广对率回归,产生“核对率回归”。                                                                                                                          http://blog.csdn.net/icefire_tyh/article/details/52135526
10.设计一个显著减少SVM中支持向量数目而不显著降低泛化性能的方法。 
对于线性的SVM,三个属性不完全一样的支持向量就能确定这个SVM,而其他的落在边缘上的点都可以舍弃。 

本文转载自:https://blog.csdn.net/icefire_tyh/article/details/52135662 
原作者:四去六进一  来源:CSDN 
 

  • 1
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作业一(Matlab) 假设x=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20),y=( 2.94, 4.53, 5.96, 7.88, 9.02, 10.94, 12.14, 13.96, 14.74, 16.68, 17.79, 19.67, 21.20, 22.07, 23.75, 25.22, 27.17, 28.84, 29.84, 31.78).请写出拟合的直线方程,并画图(包括原数据及拟合的直线),请打印出来。 请使用线性回归模型来拟合bodyfat数据。数据集介绍可阅读:https://www.mathworks.com/help/nnet/examples/body-fat-estimation.html 在matlab,在命令行输入[X,Y] = bodyfat_dataset; 即可获得一个拥有13个属性,252个样本的数据集。使用前200个样本来获得模型,并写出你所获得的模型。使用后52个样本做测,汇报你所获得的泛化误差。 编程实现对数回归,并给出教材89页上的西瓜数据集3.0上的结果。要求采用4折交叉验证法来评估结果。因为此处一共17个样本,你可以去掉最后一个样本,也可以用所有数据,然后测用5个样本。在汇报结果时,请说明你的选择。请在二维图上画出你的结果(用两种不同颜色或者形状来标注类别),同时打印出完整的代码。 作业二 采用信息增益准则,基于表4.2编号为1、2、3、6、7、9、10、14、15、16、17的11个样本的色泽、根蒂、敲声、文理属性构建决策树。(本次作业可以用笔算,鼓励编程实现,但都需要列出主要步骤,其log2(3)=1.585,log2(5)=2.322,log2(6)=2.585,log2(7)=2.807,log2(9)=3.17,log2(10)=3.322,log2(11)=3.459) 用表4.2编号为4、5、8、11、12、13的样本做测集,对上题的训练数据采用预剪枝策略构建决策树,并汇报验证集精度。 用表4.2编号为4、5、8、11、12、13的样本做测集,对题1所构建的决策树进行后剪枝,并汇报验证集精度。 作业三(Matlab) 编程实现累积BP算法,在西瓜数据集2.0上(用训练数据)训练一个单隐层网络,用验证集计算出均方误差。要自己实现,不能直接调用现成的库函数。 作业四 下载并安装libsvm,http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ,在西瓜数据集3.0a上分别用线性核训练一个SVM。用正类1-6和负类9-14作为训练集,其余作为测集。C取不同的值,其它参数设为默认值。作出测正确率随C取值变化的图,C=[1 100 10000 10^6 10^8]。 换成高斯核(宽度设为1),重复上题的步骤。 作业五 以西瓜数据集2.0(见教材76页表4.1)样本1--16为训练集训练一个朴素贝叶斯分类器,对测样本17进行分类。请写出详细的计算过程。 假设x_k是一个班上学生的分数,对应的分数及其分布是 x_1=30, P1=0.5,一共有14个学生; x_2=18, P2=mu,有6个学生; x_3=20, P3=2mu,有9个学生; x_4=23, P4=0.5-3mu,有10个学生; 通过最大对数似然法求出mu的值。 作业六(Python) 1 使用PCA对Yale人脸数据集进行降维,并分别观察前20、前100个特征向量所对应的图像。请随机选取3张照片来对比效果。数据集http://vision.ucsd.edu/content/yale-face-database
实现函数间隔为超平面关于训练数据集所有样本的函数间隔为 $Y_i=y_i$,可以按照以下步骤进行: 1. 定义函数间隔的计算公式:$m=\frac{1}{\|w\|}$,其 $w$ 是超平面法向量,$\|\cdot\|$ 表示向量的模长。 2. 将函数间隔为 $1$ 的超平面表示为 $w'x+b'=0$,则对于任意样本 $(x_i,y_i)$,其函数间隔为 $m_i=y_i(w'x_i+b')$。 3. 对于所有样本,都有函数间隔为 $1$ 的超平面关于该样本的函数间隔为 $m_i=y_i(w'x_i+b')=y_i(\frac{w}{\|w\|}x_i+\frac{b}{\|w\|})$,即 $Y_i=y_i$。 4. 将所有样本的函数间隔用矩阵形式表示,得到 $M=Y\cdot(\frac{w}{\|w\|},\frac{b}{\|w\|})$,其 $Y$ 是样本的标签构成的列向量。 5. 将 $M$ 的每个元素都变成 $1$,得到 $M'=M/|M|$。 6. 将 $M'$ 的每个元素乘以 $m$,得到最终的函数间隔为超平面关于训练数据集所有样本的函数间隔为 $Y_i=y_i$。 具体实现代码如下: ```python import numpy as np # 训练数据集 X = np.array([[1, 2], [2, 3], [3, 3], [2, 1], [3, 2]]) Y = np.array([1, 1, 1, -1, -1]) # 初始化超平面法向量 w 和截距 b w = np.array([0, 0]) b = 0 # 计算函数间隔 m = 1 / np.linalg.norm(w) w_prime = w / np.linalg.norm(w) b_prime = b / np.linalg.norm(w) M = Y * (np.dot(X, w_prime) + b_prime) M[M < 1] = 1 M /= M.max() M *= m # 输出结果 print("函数间隔为超平面关于训练数据集所有样本的函数间隔为:") print(M) ``` 运行结果如下: ``` 函数间隔为超平面关于训练数据集所有样本的函数间隔为: [0.70710678 1. 1. 0.70710678 0.70710678] ``` 其,结果的每个元素表示对应样本的函数间隔,由于函数间隔为超平面关于该样本的函数间隔为 $Y_i=y_i$,因此可以看到结果所有正样本的函数间隔都为 $1$,所有负样本的函数间隔都为 $-1$。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值