机器学习svm算法入门(代码片段)

赵广陆 赵广陆     2022-11-01     384

关键词:

目录


1 SVM算法简介

1.1 SVM算法导入

在很久以前的情人节,大侠要去救他的爱人,但魔鬼和他玩了一个游戏。

魔鬼在桌子上似乎有规律放了两种颜色的球,说:

“你用一根棍分开它们?要求:尽量在放更多球之后,仍然适用。”

于是大侠这样放,干的不错?

然后魔鬼,又在桌上放了更多的球,似乎有一个球站错了阵营。

怎么办??

把分解的小棍儿变粗。

SVM就是试图把棍放在最佳位置,好让在棍的两边有尽可能大的间隙。

现在即使魔鬼放了更多的球,棍仍然是一个好的分界线。

然后,在SVM 工具箱中有另一个更加重要的技巧( trick)。 魔鬼看到大侠已经学会了一个trick,于是魔鬼给了大侠一个新的挑战。

现在,大侠没有棍可以很好帮他分开两种球了,现在怎么办呢?

当然像所有武侠片中一样大侠桌子一拍,球飞到空中。然后,凭借大侠的轻功,大侠抓起一张纸,插到了两种球的中间。

现在,从魔鬼的角度看这些球,这些球看起来像是被一条曲线分开了。

再之后,无聊的大人们,把上面的物体起了别名:

  • 球—— 「data」数据
  • 棍子—— 「classifier」分类
  • 最大间隙——「optimization」最优化
  • 拍桌子——「kernelling」核方法
  • 纸——「hyperplane」超平面

案例来源:http://bytesizebio.net/2014/02/05/support-vector-machines-explained-well/

支持向量机直观感受:https://www.youtube.com/watch?v=3liCbRZPrZA

1.2 SVM算法定义

1.2.1 定义

SVM:SVM全称是supported vector machine(支持向量机),即寻找到一个超平面使样本分成两类,并且间隔最大。

SVM能够执行线性或非线性分类、回归,甚至是异常值检测任务。它是机器学习领域最受欢迎的模型之一。SVM特别适用于中小型复杂数据集的分类。

1.2.2 超平面最大间隔介绍

上左图显示了三种可能的线性分类器的决策边界:

虚线所代表的模型表现非常糟糕,甚至都无法正确实现分类。其余两个模型在这个训练集上表现堪称完美,但是它们的决策边界与实例过于接近,导致在面对新实例时,表现可能不会太好

右图中的实线代表SVM分类器的决策边界,不仅分离了两个类别,且尽可能远离最近的训练实例

1.2.3 硬间隔和软间隔

1.2.3.1 硬间隔分类

在上面我们使用超平面进行分割数据的过程中,如果我们严格地让所有实例都不在最大间隔之间,并且位于正确的一边,这就是硬间隔分类。

硬间隔分类有两个问题,首先,它只在数据是线性可分离的时候才有效;其次,它对异常值非常敏感

当有一个额外异常值的鸢尾花数据:左图的数据根本找不出硬间隔,而右图最终显示的决策边界与我们之前所看到的无异常值时的决策边界也大不相同,可能无法很好地泛化。

1.2.3.2 软间隔分类

要避免这些问题,最好使用更灵活的模型。目标是尽可能在保持最大间隔宽阔和限制间隔违例(即位于最大间隔之上,甚至在错误的一边的实例)之间找到良好的平衡,这就是软间隔分类。

要避免这些问题,最好使用更灵活的模型。目标是尽可能在保持间隔宽阔和限制间隔违例之间找到良好的平衡,这就是软间隔分类。

在Scikit-Learn的SVM类中,可以通过超参数C来控制这个平衡:C值越小,则间隔越宽,但是间隔违例也会越多。上图显示了在一个非线性可分离数据集上,两个软间隔SVM分类器各自的决策边界和间隔。

左边使用了高C值,分类器的错误样本(间隔违例)较少,但是间隔也较小。

右边使用了低C值,间隔大了很多,但是位于间隔上的实例也更多。看起来第二个分类器的泛化效果更好,因为大多数间隔违例实际上都位于决策边界正确的一边,所以即便是在该训练集上,它做出的错误预测也会更少。


1.3 小结

  • SVM算法定义【了解】
    • 寻找到一个超平面使样本分成两类,并且间隔最大。
  • 硬间隔和软间隔【知道】
    • 硬间隔
      • 只有在数据是线性可分离的时候才有效
      • 对异常值非常敏感
    • 软间隔
      • 尽可能在保持最大间隔宽阔和限制间隔违例之间找到良好的平衡

2 SVM算法api初步使用

>>> from sklearn import svm
>>> X = [[0, 0], [1, 1]]
>>> y = [0, 1]
>>> clf = svm.SVC()
>>> clf.fit(X, y)  
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
 decision_function_shape='ovr', degree=3, gamma='scale', kernel='rbf',
 max_iter=-1, probability=False, random_state=None, shrinking=True,
 tol=0.001, verbose=False)

在拟合后, 这个模型可以用来预测新的值:

>>> clf.predict([[2., 2.]])
array([1])

机器学习入门之四:机器学习的方法--svm(支持向量机)(转载)

...)    支持向量机算法是诞生于统计学习界,同时在机器学习界大放光彩的经典算法。   支持向量机算法从某种意义上来说是逻辑回归算法的强化:通过给予逻辑回归算法更严格的优化条件,支持向量机算法可以获得... 查看详情

spark学习10_1sparkmllib入门与相关资料索引(代码片段)

...eans聚类算法SVM算法其他算法实例的文件目录位置资料Spark机器学习库(MLlib)中文指南关于spark机器学习的知乎专栏Spark入门实战系列--8.SparkMLlib(上)--机器学习及SparkMLlib简介基本Kmeans算法介绍及其实现sparkMLlib概念1:相关系数... 查看详情

机器学习基础---支持向量机svm(代码片段)

到目前为止,你已经见过一系列不同的学习算法。在监督学习中,许多监督学习算法的性能都非常类似。因此,重要的不是你该选择使用学习算法A还是学习算法B,而更重要的是,应用这些算法时,所使用的数据量。这就体现了你... 查看详情

机器学习知识总结——16.如何实现一个简单的svm算法(代码片段)

文章目录创建具有特征的二维数据实现SVM算法线性核函数梯度下降和损失函数训练实验效果总结在前面的章节里,已经简要的介绍了SVM算法的工作原理,现在在这篇文章里,我们来看看SVM算法的一些简单实现。创建具... 查看详情

机器学习svm算法案例:数字识别器(代码片段)

案例:数字识别器1.案例背景介绍2.数据介绍3.案例实现3.1获取数据3.1.1确定特征值\\目标值3.1.2查看具体图像3.2数据基本处理3.2.1数据归一化处理3.2.2数据集分割3.3特征降维和模型训练3.4确定最优模型1.案例背景介绍MNIST(“... 查看详情

机器学习:svm(scikit-learn中的svm:linearsvc)(代码片段)

一、基础理解HardMarginSVM和SoftMarginSVM都是解决线性分类问题,无论是线性可分的问题,还是线性不可分的问题;和kNN算法一样,使用SVM算法前,要对数据做标准化处理;原因:SVM算法中设计到计算Margin距离,如果数据点在不同的... 查看详情

支持向量机(svm)|机器学习(代码片段)

目录1.SVM基本原理1.1特点1.2线性二分类问题1.3间隔与支持向量1.4核函数2.实例取数据观察绘制散点图决定使用哪种核函数建立并训练模型绘制图形查看分类效果1.SVM基本原理1.1特点∙\\bullet∙支持向量机(SupportVectorMachine)... 查看详情

机器学习实验五基于多分类线性svm实现简易人机猜拳游戏(代码片段)

文章目录基于多分类线性SVM&mediapipe手势关键点实现简易人机猜拳游戏基于SMO优化的SVM分类算法完整实现版本SVM决策结果与数据集可视化多分类SVM实战:基于mediapipe手势关键点实现简易版人机猜拳二分类算法如何实现多分... 查看详情

机器学习---算法---神经网络入门(代码片段)

转自:http://www.ruanyifeng.com/blog/2017/07/neural-network.html 眼下最热门的技术,绝对是人工智能。人工智能的底层模型是"神经网络"(neuralnetwork)。许多复杂的应用(比如模式识别、自动控制)和高级模型(比如深度学习)都基于... 查看详情

机器学习的相关算法了解和总结(代码片段)

文章目录机器学习的相关算法了解和总结1、机器学习的一般步骤2、相关算法3、决策树4、支持向量机SVM5、神经网络6、随机森林算法机器学习的相关算法了解和总结1、机器学习的一般步骤训练集训练->提取特征向量->结合一... 查看详情

机器学习算法(代码片段)

机器学习常用算法一、线性回归1.基本概念2.代码实现二、逻辑回归1.基本概念Sigmoid预测函数2.代码实现三决策树1.基本概念2.代码实现四支持向量机(SVM)1.基本概念2.代码实现五全连接神经网络DNN1.基本概念全连接神经网... 查看详情

机器学习基础---支持向量机svm(代码片段)

到目前为止,你已经见过一系列不同的学习算法。在监督学习中,许多监督学习算法的性能都非常类似。因此,重要的不是你该选择使用学习算法A还是学习算法B,而更重要的是,应用这些算法时,所使用的数据量。这就体现了你... 查看详情

机器学习的相关算法了解和总结(代码片段)

文章目录机器学习的相关算法了解和总结1、机器学习的一般步骤2、相关算法3、决策树4、支持向量机SVM5、神经网络6、随机森林算法机器学习的相关算法了解和总结1、机器学习的一般步骤训练集训练->提取特征向量->结合一... 查看详情

机器学习--入门介绍(代码片段)

...一:ARTHURSAMUL显著式编程⭐定义二:TomMitshell一、机器学习的分类监督学习分类一传统的监督学习非监督学习半监督学习⭐⭐分类二分类问题回归问题强化学习总结二、机器学习算法过程第一步:特区特征(FeatureEx... 查看详情

sklearn机器学习基础(day02基础入门篇)(代码片段)

文章目录基本算法使用(Sklearn)算子API调用分步曲数据分析分步曲分类算法KNN算法网格优化KNN案例(预测facebook签到位置)数据清洗KNN处理预测完整代码朴素贝叶斯算法决策树案例可视化决策树随机森林回归与聚类算... 查看详情

机器学习算法--svm实战

1、不平衡数据分类问题对于非平衡级分类超平面,使用不平衡SVC找出最优分类超平面,基本的思想是,我们先找到一个普通的分类超平面,自动进行校正,求出最优的分类超平面测试代码如下:importnumpyasnpimportmatplotlib.pyplotaspltf... 查看详情

机器学习:从入门到晋级(代码片段)

摘要:什么是机器学习,为什么学习机器学习,如何学习机器学习,这篇文章都告诉给你。目前,人工智能(AI)非常热门,许多人都想一窥究竟。如果你对人工智能有所了解,但对机器学习(MachineLearning)的理解有很多的困惑... 查看详情

机器学习入门knn分类算法|附加小练习(代码片段)

目录1.聚类与分类1.1聚类1.2分类2.关于KNN算法2.1`Lp距离`定义:2.1`K`值的选取3.练习第一题:第二题:最后1.聚类与分类1.1聚类聚类是将数据对象的集合分成相似的对象类的过程。使得同一个簇(或类࿰... 查看详情