周志华《机器学习》课后习题(第六章):支持向量机

简介: 周志华《机器学习》课后习题(第六章):支持向量机

image.png


这个问题在吴恩达老师的《机器学习》课程(斯坦福版本CS 229)里面讲解过,有兴趣的可以自己去网易公开课看看,图片截图自该课程课件。


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


答:

这里没用LIBSVM,用的sklearn中的sklearn.svm.svc,它的实现也是基于libsvm的。

使用不同参数的时候,支持向量是不同的(没有对高斯核中的gamma调参)。由于西瓜数据集3.0a线性不可分,所以使用线性核时,无论惩罚系数多高 ,还是会出现误分类的情况;而使用高斯核时在惩罚系数设置较大时,是可以完全拟合训练数据。所以在惩罚系数设置较小时,两者支持向量都类似,而在惩罚系数较大(支持向量机中,惩罚系数越大,正则化程度越低)时,高斯核的支持向量数目会较少,而线性核的会几乎没有变化。

代码在:han1057578619/MachineLearning_Zhouzhihua_ProblemSets

C = 100时训练情况如下:

高斯核支持向量: [ 8 9 11 12 13 14 16 2 3 4 5 6 7]


image.png


image.png

image.png

image.png


6.3 选择两个 UCI 数据集,分别用线性核和高斯核训练一个 SVM,并与BP 神经网络和 C4.5 决策树进行实验比较。


答:

han1057578619/MachineLearning_Zhouzhihua_ProblemSets


6.4 试讨论线性判别分析与线性核支持向量机在何种条件下等价。


答:

这道题想不出很明确的答案,这仅讨论一下。

有一点很明确的是:在数据线性可分时并不会导致线性判别分析与线性核支持向量机等价。

image.png

上图是以iris数据中第0列和第2列数据作为训练集。分别LDA和线性核SVM训练,得到图中两者的决策边界,可以看出在数据线性可分的情况下,两者决策边界还是有很大差别的。如果这里等价理解为两者决策边界相同,即两个模型决策函数是相同的,那么两者决策边界重合时,两者等价的。那么什么时候两者会重叠?

image.png

image.png


查了很多资料没找到相关信息。感觉LDA和SVM其实没有多大相似度。

ps.这里解答其实就按照结果倒推了一下。貌似都是些废话。

画图代码在:han1057578619/MachineLearning_Zhouzhihua_ProblemSets

代码有点乱。


6.5 试述高斯核 SVM 与 RBF 神经网络之间的联系。


答:

其实这个题目在p145的《休息一会儿》的注释里面已经给出答案了。

RBF神经网络中,将隐藏层神经元个数设置为训练样本数,每个样本设置为一个神经元中心,此时RBF的预测函数和SVM激活函数相同。

个人理解,两个模型还是有挺大差别的。

  • RBF中径向基激活函数中控制方差的参数 image.png 是由模型自动习得,而在SVM中是一个可调节的超参。
  • 目标函数、优化方式也不同。

但是如果将RBF中 image.png固定为和SVM一致,最后训练结果应该会比较相似。

以上是个人理解。就不写代码验证了。。。


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


答:

SVM的决策只基于少量的支持向量,若噪音样本出现在支持向量中,容易对决策造成影响,所以SVM对噪音敏感。


6.7 试给出式 (6.52) 的完整 KKT 条件。


答:

6.52式是经过将完整的KKT条件

image.png


6.8 以西瓜数据集 3.0α 的"密度"为输入"含糖率"为输出,试使用LIBSVM 训练一个 SVR。


答:

关于SVR没有理解很深,简单了解了一下。这道题就简单看一下不同参数,训练结果的变换吧。

image.png

image.png

直观上看,含糖率和密度无明显关系。所以无论模型参数怎么调,看上去对数据的拟合都不是很好,预测值和真实值还是有较大差异。不过还是可以看出来随着gamma或者C的增大,模型都会趋于更加复杂。

这里代码很简单,还是放上来。

han1057578619/MachineLearning_Zhouzhihua_ProblemSet


6.9 试使用核技巧推广对率回归,产生"核对率回归"。


答:

image.pngimage.png

image.png

image.png

可直接使用梯度下降等优化算法求解上图的目标函数即

题目没要求。就偷个懒不写代码了。

说个题外的。SVM中只有少数支持向量对应的 image.png非零,所以对于SVM来说,训练完成后只需要储存个别非零的 image.png和对应数据点即可;而不同于SVM, 核逻辑回归并没有这一性质,需要储存所有训练数据。就这一点来说核逻辑回归并不高效。


6.10* 试设计一个能显著减少 SVM 中支持向量的数目而不显著降低泛化性能的方法。(未完成)


答:

这个应该也是某个论文。最近时间不多,暂时不深究了就。。


6.11 自己编程实现SVM,并在西瓜数据集 3.0αα 测试。


答:

自己加的题目。虽然书上没要求,但还是自己写了一遍。

代码在:

han1057578619/MachineLearning_Zhouzhihua_ProblemSets

其实主要就是把SMO实现了一遍。

参考:

  • 《统计学习方法》
  • 《机器学习实战》
  • 《Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines》
  • 《THE IMPLEMENTATION OF SUPPORT VECTOR MACHINES USING THE SEQUENTIAL MINIMAL OPTIMIZATION ALGORITHM》

写代码的时候参考以上资料。代码主要根据原论文中提供的伪代码和《机器学习实战》的源码写的,《机器学习实战》中给出的代码和原论文有几个地方有差异:

image.png

image.png

训练结果和使用sklearn中结果(习题6.2)一致,支持向量也是相同的,决策边界差不多相同,其他数据未测试。不过速度上,sklearn会快很多,测试了一下训练西瓜数据集,自己写的代码需要5e-4秒,而sklearn只需要1e-8。还是有很大差距的。

代码有点乱,这里只为深刻理解一下SMO,也不做工程使用,暂时就不优化了。。以后闲下来再看看。

以上。

相关文章
|
6月前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第27天】在数据科学和人工智能的领域中,支持向量机(SVM)是一种强大的监督学习模型,它基于统计学习理论中的VC维理论和结构风险最小化原理。本文将详细介绍SVM的工作原理、核心概念以及如何在实际问题中应用该算法进行分类和回归分析。我们还将讨论SVM面临的挑战以及如何通过调整参数和核技巧来优化模型性能。
|
3月前
|
机器学习/深度学习 算法
【机器学习】SVM面试题:简单介绍一下SVM?支持向量机SVM、逻辑回归LR、决策树DT的直观对比和理论对比,该如何选择?SVM为什么采用间隔最大化?为什么要将求解SVM的原始问题转换为其对偶问题?
支持向量机(SVM)的介绍,包括其基本概念、与逻辑回归(LR)和决策树(DT)的直观和理论对比,如何选择这些算法,SVM为何采用间隔最大化,求解SVM时为何转换为对偶问题,核函数的引入原因,以及SVM对缺失数据的敏感性。
75 3
|
3月前
|
机器学习/深度学习 运维 算法
深入探索机器学习中的支持向量机(SVM)算法:原理、应用与Python代码示例全面解析
【8月更文挑战第6天】在机器学习领域,支持向量机(SVM)犹如璀璨明珠。它是一种强大的监督学习算法,在分类、回归及异常检测中表现出色。SVM通过在高维空间寻找最大间隔超平面来分隔不同类别的数据,提升模型泛化能力。为处理非线性问题,引入了核函数将数据映射到高维空间。SVM在文本分类、图像识别等多个领域有广泛应用,展现出高度灵活性和适应性。
160 2
|
3月前
|
机器学习/深度学习 算法
【机器学习】支持向量机SVM、逻辑回归LR、决策树DT的直观对比和理论对比,该如何选择(面试回答)?
文章对支持向量机(SVM)、逻辑回归(LR)和决策树(DT)进行了直观和理论上的对比,并提供了在选择这些算法时的考虑因素,包括模型复杂度、损失函数、数据量需求、对缺失值的敏感度等。
63 1
|
6月前
|
机器学习/深度学习 数据采集 算法
深入理解并应用机器学习算法:支持向量机(SVM)
【5月更文挑战第13天】支持向量机(SVM)是监督学习中的强分类算法,用于文本分类、图像识别等领域。它寻找超平面最大化间隔,支持向量是离超平面最近的样本点。SVM通过核函数处理非线性数据,软间隔和正则化避免过拟合。应用步骤包括数据预处理、选择核函数、训练模型、评估性能及应用预测。优点是高效、鲁棒和泛化能力强,但对参数敏感、不适合大规模数据集且对缺失数据敏感。理解SVM原理有助于优化实际问题的解决方案。
|
5月前
|
机器学习/深度学习 算法 Windows
【阿旭机器学习实战】【34】使用SVM检测蘑菇是否有毒--支持向量机
【阿旭机器学习实战】【34】使用SVM检测蘑菇是否有毒--支持向量机
|
6月前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第6天】在数据科学和人工智能的广阔天地中,支持向量机(SVM)以其强大的分类能力与理论深度成为机器学习领域中的一个闪亮的星。本文将深入探讨SVM的核心原理、关键特性以及实际应用案例,为读者提供一个清晰的视角来理解这一高级算法,并展示如何利用SVM解决实际问题。
193 7
|
6月前
|
机器学习/深度学习 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第31天】 在数据科学的广阔天地中,支持向量机(SVM)以其卓越的性能和强大的理论基础脱颖而出。本文将深入剖析SVM的工作原理、核心概念以及实际应用,旨在为读者提供一个清晰的理解视角,并通过实例演示其在分类问题中的有效性。我们将从线性可分的情况出发,逐步过渡到非线性问题的处理方法,并探讨如何通过调整参数来优化模型的性能。
295 0
|
6月前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第28天】 在数据科学与人工智能的领域中,支持向量机(Support Vector Machines, SVM)是一种强大的监督学习模型,它基于统计学习理论中的VC维理论和结构风险最小化原则。本文将深入探讨SVM的数学原理、关键概念以及实际应用案例。我们将透过SVM的镜头,理解其在分类和回归问题中的应用,并讨论如何通过核技巧克服维度灾难,提高模型的泛化能力。文章还将展示使用SVM解决实际问题的步骤和注意事项,为读者提供一个清晰的SVM应用指南。
|
6月前
|
机器学习/深度学习 人工智能 算法
深入解析机器学习中的支持向量机(SVM)
深入解析机器学习中的支持向量机(SVM)
376 0
下一篇
无影云桌面