机器学习思考题目——05支持向量机(SVM)

本文直译自《hands on ML》课后题。(有改动的以【】表示)。

1.支持向量机的基本原理(fundamental idea)是什么?

【硬间隔】支持向量机的基本原理是在(不同的)类间找到合适的最宽的‘街道’(street)。换句话说,目标是在划分两类训练样本的决策边界之间找到最大的间隔。
【软间隔】当用软间隔(soft-margin)进行分类时,SVM在‘完美划分两类’和‘找到最宽街道’之间做一个折中(亦即少数样本会落到‘街道’上)。
【核】另外一个关键思想是当在非线性数据集上用核(kernel)。

2. 什么是支持向量(support vector)?

训练完一个SVM之后,落在‘街道’(street)及其边界上的样本称为支持向量。
决策边界完全由这些支持向量决定。不是支持向量的样本(亦即远离‘街道’的那些)对SVM没有任何影响;可以移除它们,添加更多样本或者移动它们,只要它们远离‘街道’它们就不会影响决策边界。计算预测值时只用到支持向量而非整个训练集。

3.为什么用SVM的时候,scale the input 很重要?

SVM是在不同的类中寻找最宽的合适街道,因此如果训练集没有scaled,SVM倾向于忽视小特征。如下图所示:左图为Unscaled,右图为Scaled。
在这里插入图片描述

4.SVM分类器在对样本进行分类的时候,能输出置信度数值(confidence score)么?能输出概率值么?

SVM分类器能输出(测试)样本和决策边界的距离,可以把这个距离当做一个置信度数值。当然,这个数值不能直接转化成类的概率。在Scikit-Learn的SVM函数中,设置probability=True,训练完之后,程序会用LogisticsRegression把SVM输出的分值校准(calibrate)为概率值(在这个训练集上对LR用五折交叉验证训练)。这会给SVM(python对象)添加predict_proba()和predict_log_proba()方法。

5.在一个有百万量级的样本和数以百计的特征的训练集上,该用原始形式还是对偶形式的SVM来训练模型?

这个问题只能是对线性SVM来说有意义,因为核-SVM只能用 对偶形式。
SVM的原始形式的计算复杂度与样本数m成比例(O(m)),对偶形式的计算复杂度在m2和m3之间(O(m2)~O(m3))。因此如果有百万量级的样本,肯定需要用原始形式,因为对偶形式慢得多。

6.假如用RBF核训练一个SVM分类器的时候,模型似乎出现欠拟合了:此时应该增大还是减小γ(gamma)?增大还是减小C?

欠拟合可能是因为过分正则化了。需要增加gamma或增加C(或二者都增加)。

7.用现成(off-the-shelf )的QP(二次规划,Quadratic Programming)求解器,如何设置QP参数(H,f,A,b)来解决软间隔线性SVM分类问题?【另一种表述,如何设置这些参数,把软间隔线性SVM模型转化为二次规划问题】【除非特别说明,以下向量默认为列向量】

把硬间隔SVM问题的QP参数记为H’,f’,A’,b’。软间隔问题的QP参数有m个额外参数和m个额外的约束条件。这些可以定义如下:
(a)对H’扩充,在其右侧添加m列0向量,在其底部添加m行0向量。得到H,如下:
在这里插入图片描述
(b)在f’(尾端)添加m个超参数C,得到f。
(c)在b’(尾端)添加m个0,得到b。
(d)对A’进行扩充,在其右侧添加m阶单位矩阵,在其右下方添加m阶负单位矩阵,其下方添加0矩阵,得到A如下:【个人觉得原答案有问题,右上角应该也为负单位矩阵,下面有解释】
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 机器学习实战Python基于支持向量机SVM)是一种强大的分类器算法。SVM是一种监督学习方法,可以用于解决二分类和多分类问题。 SVM的基本思想是找到一个最佳的超平面,将数据分割成不同的类别。超平面被定义为在n维空间中具有n-1维的子空间。这个子空间可以将不同类别的数据点分开,并且尽可能地最大化边界。这就意味着SVM在分类时尽量避免误分类,并且对于新的未知数据具有较好的泛化能力。 在Python中,我们可以使用scikit-learn库中的SVM实现机器学习任务。首先,我们需要导入必要的库和数据集。然后,我们可以对数据集进行预处理,如特征缩放和数据划分。接下来,我们可以创建一个SVM分类器,并使用训练数据进行模型的训练。训练完成后,我们可以使用测试数据进行预测,并评估模型的性能。 SVM还有一些重要的参数需要调节,如C和gamma。C表示惩罚项的权重,用于控制分类器的错误率和边界的平衡。较大的C值会减小错误率,但可能导致边界过拟合。gamma表示径向基函数核的参数,影响分类器的决策边界的灵活性。较大的gamma值会导致边界更加精确地拟合训练数据,但可能导致过拟合。 总的来说,机器学习实战Python基于支持向量机SVM)是一个强大的分类器算法,可以用于解决二分类和多分类问题。在实际应用中,我们需要注意调节参数,使得分类器具有良好的泛化能力。 ### 回答2: 机器学习实战是一本非常实用的书籍,其中详细介绍了如何使用Python编程语言基于支持向量机SVM)进行机器学习实践。 支持向量机是一种强大的监督学习算法,可以用于解决分类和回归问题。该算法通过寻找一个最优的超平面来分割样本空间,使得不同类别的样本尽可能远离超平面。实际上,SVM通过最大化支持向量与超平面的距离,来确保分类的准确性和泛化能力。 在书籍中,作者通过经典的例子和详细的代码示例,展示了如何应用Python编程语言和scikit-learn库来构建和训练SVM模型。读者将学会如何准备数据集,进行特征选择和数据预处理,选择合适的SVM参数以及评估模型的性能。 此外,书中还强调了交叉验证、网格搜索和模型调优等重要概念。这些概念是整个机器学习过程中不可或缺的一部分,能够帮助我们提高模型的准确性和可靠性。 机器学习实战还提供了丰富的示例和应用,涵盖了多个领域,如文本分类、手写数字识别和人脸识别等。通过这些实例,读者可以深入理解SVM在实际问题中的应用。 总而言之,机器学习实战是一本非常实用的书籍,提供了丰富的例子和代码,使读者能够快速上手并应用SVM算法解决实际问题。无论是对于初学者还是有一定机器学习经验的人来说,这本书都是一本值得推荐的学习资料。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值