支持向量机

Aaron12 Aaron12     2022-09-25     767

关键词:

 

0.相关概念

分类器:分类器就是给定一个样本的数据,判定这个样本属于哪个类别的算法。例如在股票涨跌预测中,我们认为前一天的交易量和收盘价对于第二天的涨跌是有影响的,那么分类器就是通过样本的交易量和收盘价预测第二天的涨跌情况的算法。

特征:在分类问题中,输入到分类器中的数据叫做特征。以上面的股票涨跌预测问题为例,特征就是前一天的交易量和收盘价。

线性分类器:线性分类器是分类器中的一种,就是判定分类结果的根据是通过特征的线性组合得到的,不能通过特征的非线性运算结果作为判定根据。还以上面的股票涨跌预测问题为例,判断的依据只能是前一天的交易量和收盘价的线性组合,不能将交易量和收盘价进行开方,平方等运算。

1.线性分类器起源

在实际应用中,我们往往遇到这样的问题:给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。技术分享怎么分呢?把整个空间劈成两半呗(让我想到了盘古)。用二维空间举个例子,如上图所示,我们用一条直线把空间切割开来,直线左边的点属于类别-1(用三角表示),直线右边的点属于类别1(用方块表示)。

如果用数学语言呢,就是这样的:空间是由X_1和X_2组成的二维空间,直线的方程是X1+X2=1,用向量符号表示即为 [1,1]T[X1,X2]?1=0。点x在直线左边的意思是指,当把x放入方程左边,计算结果小于0。同理,在右边就是把x放入方程左边,计算出的结果大于0。都是高中数学知识。

在二维空间中,用一条直线就把空间分割开了:技术分享在三维空间中呢,需要用一个平面把空间切成两半,对应的方程是X1+X2+X3=1,也就是 [1,1,1]T[X1,X2,X3]?1=0技术分享在高维(n>3)空间呢?就需要用到n-1维的超平面将空间切割开了。那么抽象的归纳下: 如果用x表示数据点,用y表示类别(y取1或者-1,代表两个不同的类),一个线性分类器的学习目标便是要在n维的数据空间中找到一个超平面(hyper plane),把空间切割开,这个超平面的方程可以表示为(WT中的T代表转置):

WTX+b=0

感知器模型和逻辑回归:

 

常见的线性分类器有感知器模型和逻辑回归。上一节举出的例子是感知器模型,直接给你分好类。有时候,我们除了要知道分类器对于新数据的分类结果,还希望知道分类器对于这次分类的成功概率。逻辑回归就可以做这件事情。

逻辑回归(虽然称作回归,但是不是一个回归方法,却是一个分类算法。很蛋疼的说)将线性分类器的超平面方程计算结果通过logistic函数从正负无穷映射到0到1。这样,映射的结果就可以认为是分类器将x判定为类别1的概率,从而指导后面的学习过程。

举个例子,看天气预报,用感知器的天气预报只会告诉你明天要下雨(y=1),或者明天不下雨(y=-1);而用了逻辑回归的天气预报就能告诉你明天有90%的概率要下雨,10%的概率不下雨。

逻辑回归的公式是g(z)=11+e?z,图像大概长这个样子:技术分享怎么用呢?比如感知器模型中,将特征代入判别方程中,如果得到的值是-3,我们可以判定类别是-1(因为-3<0)。而逻辑回归中呢,将-3代入g(z),我们就知道,该数据属于类别1的概率是0.05(近似数值,谢谢),那么属于类别-1的概率就是1 – 0.05 = 0.95。也就是用概率的观点描述这个事情。

本文深度为“了解”,如果想知道更多的感知器模型和逻辑回归细节,可以参照《统计学习方法》等机器学习的相关书籍。或者持续关注我们的量化课堂,未来会深度探讨。

2.支持向量机 VS 感知器和逻辑回归

根据上面的讨论,我们知道了在多维空间下,用一个超平面就把数据分为了两类。这个超平面我们叫它为分离超平面。但是这个分离超平面可以有很多个,那么用哪个呢?技术分享上图中,对于目前的训练数据,绿色和黑色的直线(二维特征空间,分离超平面就是直线啦)都可以很可以很好的进行分类。但是,通过已知数据建立分离超平面的目的,是为了对于未知数据进行分类的。在下图中,蓝色的星星图案就是新加入的真实数据。技术分享这时候我们就可以看出不同的分离超平面的选择对于分类效果的影响了。有的绿线会将三个点都划归蓝色圆圈,有的绿线会将三个点都划归红色正方形。

那么绿线和黑线留下谁?我们认为,已有的训练数据中,每个元素距离分离超平面都有一个距离。在添加超平面的时候,尽可能的使最靠近分离超平面的那个元素与超平面的距离变大。这样,加入新的数据的时候,分的准的概率会最大化。感知器模型和逻辑回归都不能很好的完成这个工作,该我们的支持向量机(support vector machine,SVM)出场了。

首先,SVM将函数间隔(|WTX+b|,将特征值代入分离超平面的方程中,得到的绝对值)归一化,归一化的目的是除掉取值尺度的影响;其次,对所有元素求到超平面的距离,(这个距离是|WTX+b||W|,也就是几何间隔)。给定一个超平面P,所有样本距离超平面P的距离可以记为dij,这其中最小的距离记为DP,SVM的作用就是找到DP最大的超平面。

可以看出,大部分数据对于分离超平面都没有作用,能决定分离超平面的,只是已知的训练数据中很小的一部分。这与逻辑回归有非常大的区别。上图中,决定黑色的这条最优分离超平面的数据只有下方的两个红色的数据点和上方的一个蓝色的数据点。这些对于分离超平面有着非常强大影响的数据点也被称为支持向量(看没看到,这就是传说中的支持向量啦,原来如此)。

3.引入黑科技-核函数

上面说的都是在原始特征的维度上,能直接找到一条分离超平面将数据完美的分成两类的情况。但如果找不到呢?

比如,原始的输入向量是一维的,0<X<1的类别是1,其他情况记做-1。这样的情况是不可能在1维空间中找到分离超平面的(一维空间中的分离超平面是一个点,X+b=0)。你用一个点切一下试试?技术分享这就要说到SVM的黑科技—核函数技巧。核函数可以将原始特征映射到另一个高维特征空间中,解决原始空间的线性不可分问题。

继续刚才那个数轴。技术分享如果我们将原始的一维特征空间映射到二维特征空间X2X,那么就可以找到分离超平面X2?X=0。当X2?X<0的时候,就可以判别为类别1,当X2?X>0的时候,就可以判别为类别0。如下图:技术分享再将X2?X=0映射回原始的特征空间,就可以知道在0和1之间的实例类别是1,剩下空间上(小于0和大于1)的实例类别都是0啦。技术分享利用特征映射,就可以将低维空间中的线性不可分问题解决了。是不是很神奇,这就是特征映射的牛逼之处了。核函数除了能够完成特征映射,而且还能把特征映射之后的内积结果直接返回,大幅度降低了简化了工作,这就是为啥采用核函数的原因。

(为啥要返回数据间的内积结果涉及到比较高深的内容,在此先略过,可以在《统计学习方法》等更加专业的资料中自行阅读,未来量化课堂会产生这部分的内容。)

4.异常值的处理-松弛变量的引入

你以为就结束了吗?并没有。

在原始空间线性不可分时,可以映射到高维空间之后,转换为线性可分的问题。但是万一映射之后还是不能线性可分,该如何处理呢?

再比如正常的数据中混入了异常数据,很有可能会使应该的最佳分离超平面移位,或者直接使数据变得线性不可分。又怎么办捏?技术分享上图中用黑色的圆圈圈起来的就是一个异常值,这个异常值的存在,使得分离超平面发生了移位。这时候就该引入松弛变量了。松弛变量可以允许某些数据点在不满足分离超平面两边的类别要求,从而使得某些严格线性不可分的数据集也可以使用SVM进行分类了。

由于篇幅有限,这部分内容只是为了完整性,不做深入讨论。欢迎关注量化课堂。

5.SVM的具体使用-sklearn

SVM的基本原理基本上已经说的差不多了,下面咱们就来看看SVM在实际应用该如何使用了。幸运的是,在python下面,sklearn提供了一个非常好用的机器学习算法,我们调用相关的包就好啦。

在下面的这个例子中,特征是通过收盘价数据计算的SMA,WMA,MOM指标,训练样本的特征是从2007-1-4到2016-6-2中每一天的之前的交易日的收盘价计算的SMA,WMA,MOM指标,训练样本的标签就是2007-1-4日到2016-6-2中每一天的涨跌情况,涨了就是True,跌了就是False,测试样本是2016-6-3日的三个指标以及涨跌情况。我们可以判定之后判断结果是正确还是错误,如果通过SVM判断的结果和当天的涨跌情况相符,则输出True,如果判断结果和当天的涨跌情况不符,则输出False。

我这次的预测结果是输出了True哦。

支持向量机原理smo算法原理

    支持向量机原理(一)线性支持向量机    支持向量机原理(二)线性支持向量机的软间隔最大化模型    支持向量机原理(三)线性不可分支持向量机与核函数    支持向量机原理(四)SMO算法原理    支持向... 查看详情

支持向量机原理线性不可分支持向量机与核函数

    支持向量机原理(一)线性支持向量机      支持向量机原理(二)线性支持向量机的软间隔最大化模型    支持向量机原理(三)线性不可分支持向量机与核函数    支持向量机原理(四)SMO算法原... 查看详情

支持向量机原理smo算法原理

  支持向量机原理(一)线性支持向量机    支持向量机原理(二)线性支持向量机的软间隔最大化模型    支持向量机原理(三)线性不可分支持向量机与核函数    支持向量机原理(四)SMO算法原理    支持向... 查看详情

机器学习之支持向量机:支持向量机的公式推导

注:关于支持向量机系列文章是借鉴大神的神作,加以自己的理解写成的;若对原作者有损请告知,我会及时处理。转载请标明来源。序:我在支持向量机系列中主要讲支持向量机的公式推导,第一部分讲到推出拉格朗日对偶函... 查看详情

支持向量机(svm)的原理推导及解释

文章目录支持向量机(SVM)的原理推导及解释1.线性可分支持向量机(linearsupportvectormachineinlinearlyseparablecase)2.线性支持向量机(linearsupportvectormachine)3.非线性支持向量机(non-linearsupportvectormachine)支持向量机(SVM)的原理推导及解释支持向... 查看详情

支持向量机

来源:http://www.hankcs.com/ml/support-vector-machine.html一、概述支持向量机(supportvectormachines,SVM)是一种二类分类模型。支持向量机的学习算法是求解凸二次规划的最优化算法。 分类:线性可分支持向量机(linearsupportvectormachineinlin... 查看详情

《统计学习方法》--支持向量机

《统计学习方法》第七章–支持向量机支持向量机概述支持向量机是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。支持向量机由简至繁依次可分为:线性可分支持向量机,线性支持... 查看详情

从支持向量机返回最佳支持向量

】从支持向量机返回最佳支持向量【英文标题】:Returningbestsupportvectorsfromsupportvectormachine【发布时间】:2019-06-0312:45:16【问题描述】:我正在使用来自sklearn(在Python中)的支持向量分类器来找到一组“0”和“1”标记数据之间的... 查看详情

支持向量机(svm)

支持向量机是一种分类模型。模型认为,离分类超平面越远的点,判定结果越准确,所以模型的训练目标就是让离分类超平面最近的样本点距离最大。我们先从最基本的线性可分支持向量机(硬间隔支持向量机)开始推导,之后... 查看详情

机器学习——支持向量机

支持向量机支持向量机是一种二分类机器学习模型,适用于小样本数据集。下面通过建模,优化方法求解,支持向量机在多分类问题的应用以及支持向量机优缺点四个方面讲:第一部分:建模一.线性可分支持向量机:若数据样... 查看详情

机器学习——支持向量机:线性可分支持向量机到非线性支持向量机

线性可分支持向量机回顾前面总结了线性可分支持向量机,知道了支持向量机的最终目的就是通过“间隔最大化”得到最优分类器,能够使最难区分的样本点得到最大的分类确信度,而这些难区分的样本就是支持向量... 查看详情

sparkmllib模型支持向量机supportvectormachine

目录  支持向量机原理  支持向量机代码(SparkPython) 支持向量机原理   待续... 返回目录 支持向量机代码(SparkPython)     代码里数据:https://pan.baidu.com/s/1jHWKG4I密码:acq1 #-*-coding=utf-8-*-frompysparkimpo... 查看详情

统计学习笔记之支持向量机

  支持向量机(SVM)是一种二分类模型,跟之前介绍的感知机有联系但也有区别。简单来讲,感知机仅仅是找到了一个平面分离正负类的点,意味着它是没有任何约束性质的,可以有无穷多个解,但是(线性可分)支持向量机和感... 查看详情

多核支持向量机原理及实现(代码片段)

了解非线性支持向量机模型后,应该对支持向量机的原理与核技巧都有掌握,本文在传统非线性支持向量机基础上向大家介绍多核支持向量机,这里就不对支持向量机原理与核函数花费太多笔墨了,主要介绍将单... 查看详情

3.支持向量机

3.支持向量机3.1本质基本模型是定义在特征空间上的间隔最大的线性分类器。核技巧使之成为实质上的非线性分类器。学习策略是间隔最大化,可形式化为求解凸二次优化问题。等价于正则化的合页损失函数的最小化问题。学习... 查看详情

支持向量机(svm:supportvectormachine)

传统机器学习分类任务中,我认为支持向量机是最难、最复杂、最有效的一种模型。可能是由于其是一种特殊的神经网络的缘故吧!1、支持向量机简介支持向量机(supportvectormachines,SVM)是一种二类分类模型。它的基本模型是定... 查看详情

数据挖掘十大算法之svm支持向量机分类算法

目录1基本概念2线性可分支持向量机2.1定义2.2相关概念2.3学习算法4线性支持向量机4.1软间隔最大化4.2线性支持向量机的原始最优化问题4.3线性支持向量机定义4.4线性支持向量机的对偶最优化问题4.5线性支持向量机学习算法4.6软间... 查看详情

支持向量机——线性可分支持向量机

支持向量机(SupportVectorMachine,SVM)是一种二分类模型。它的基本思想是间隔最大化。1、线性可分支持向量机给定训练集T=(x1,y1),(x2,y2),...,(xm,ym)T=(x1,y1),(x2,y2),...,(xm,ym)T=\\(\\boldsymbolx_1,y_1),(\\boldsymbolx_2,y_2),...,(\\boldsymbol 查看详情