机器学习实战 支持向量机

机器学习实战 支持向量机

1.SVM

。SVM有很多实现,但是本章只 关注其中流行的一种实现,即序列最小优化①(Sequential Minimal Optimization,SMO)算法。 在此之后,将介绍如何使用一种称为核函数(kernel)的方式将SVM扩展到更多数据集上。后 会回顾第1章中手写识别的例子,并考察其能否通过SVM来提高识别的效果

2. 基于最大间隔分隔数据

支持向量机
优点:泛化错误率低,计算开销不大,结果易解释。
缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题。 适用数据类型:数值型和标称型数据。
在这里插入图片描述
上述将数据集分隔开来的直线称为分隔超平面(separating hyperplane)。在上面给出的例子 中,由于数据点都在二维平面上,所以此时分隔超平面就只是一条直线。但是,如果所给的数据 集是三维的,那么此时用来分隔数据的就是一个平面。显而易见,更高维的情况可以依此类推。 如果数据集是1024维的,那么就需要一个1023维的某某对象来对数据进行分隔。这个1023维的某 某对象到底应该叫什么?N1维呢?该对象被称为超平面(hyperplane),也就是分类的决策边界。 分布在超平面一侧的所有数据都属于某个类别,而分布在另一侧的所有数据则属于另一个类别。
支持向量(support vector)就是离分隔超平面近的那些点。接下来要试着大化支持向量 到分隔面的距离,需要找到此问题的优化求解方法。

2 寻找最大间隔

SVM应用的一般框架
SVM的一般流程
(1) 收集数据:可以使用任意方法。
(2) 准备数据:需要数值型数据。
(3) 分析数据:有助于可视化分隔超平面。
(4) 训练算法:SVM的大部分时间都源自训练,该过程主要实现两个参数的调优。
(5) 测试算法:十分简单的计算过程就可以实现。
(6) 使用算法:几乎所有分类问题都可以使用SVM,值得一提的是,SVM本身是一个二类 分类器,对多类问题应用SVM需要对代码做一些修改。

3 利用完整 Platt SMO算法加速优化

在几百个点组成的小规模数据集上,简化版SMO算法的运行是没有什么问题的,但是在更大 的数据集上的运行速度就会变慢。刚才已经讨论了简化版SMO算法,下面我们就讨论完整版的 Platt SMO算法。在这两个版本中,实现alpha的更改和代数运算的优化环节一模一样。在优化过 程中,唯一的不同就是选择alpha的方式。完整版的Platt SMO算法应用了一些能够提速的启发方 法。或许读者已经意识到,上一节的例子在执行时存在一定的时间提升空间。 Platt SMO算法是通过一个外循环来选择第一个alpha值的,并且其选择过程会在两种方式之 间进行交替:一种方式是在所有数据集上进行单遍扫描,另一种方式则是在非边界alpha中实现单用圆圈标记的支持向量 遍扫描。而所谓非边界alpha指的就是那些不等于边界0或C的alpha值。对整个数据集的扫描相当 容易,而实现非边界alpha值的扫描时,首先需要建立这些alpha值的列表,然后再对这个表进行 遍历。同时,该步骤会跳过那些已知的不会改变的alpha值。 在选择第一个alpha值后,算法会通过一个内循环来选择第二个alpha值。在优化过程中,会 通过最大化步长的方式来获得第二个alpha值。在简化版SMO算法中,我们会在选择j之后计算错 误率Ej。但在这里,我们会建立一个全局的缓存用于保存误差值,并从中选择使得步长或者说 Ei-Ej大的alpha值。

4 在复杂数据上应用核函数

我们就要使用一种称为核函数(kernel)的工具将数据转换成易于分类器理解的形式。本节首先解 释核函数的概念,并介绍它们在支持向量机中的使用方法。然后,介绍一种称为径向基函数(radial bias function)的流行的核函数。后,将该核函数应用于我们前面得到的分类器。

5 示例:手写识别问题回顾

基于SVM的数字识别
(1) 收集数据:提供的文本文件。
(2) 准备数据:基于二值图像构造向量。
(3) 分析数据:对图像向量进行目测。
(4) 训练算法:采用两种不同的核函数,并对径向基核函数采用不同的设置来运行SMO算法 。
(5) 测试算法:编写一个函数来测试不同的核函数并计算错误率。 (6) 使用算法

6 本章小结

支持向量机是一种分类器。之所以称为“机”是因为它会产生一个二值决策结果,即它是一种 决策“机”。支持向量机的泛化错误率较低,也就是说它具有良好的学习能力,且学到的结果具有 很好的推广性。这些优点使得支持向量机十分流行,有些人认为它是监督学习中好的定式算法。
核方法不止在SVM 中适用,还可以用于其他算法中。而其中的径向基函数是一个常用的度量两个向量距离的核函数。 支持向量机是一个二类分类器。当用其解决多类问题时,则需要额外的方法对其进行扩展。 SVM的效果也对优化参数和所用核函数中的参数敏感。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值