数据挖掘十大经典算法之支持向量机(SVM)

支持向量机(SVM)

它是一种监督式学习的方法,广泛应用于统计分类和回归分析中。

一、主要思想

1. 它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能;

2. 它基于结构风险最小化理论之上在特征空间中建构最优分割超平面,使得学习器得到全局最优化,并且在整个样本空间的期望风险以某个概率满足一定上界。

概括:支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面。分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。

有很多个分类器(超平面)可以把数据分开,但是只有一个能够达到最大分割。 我们通常希望分类的过程是一个机器学习的过程。这些数据点并不需要是中的点,而可以是任意(统计学符号)中或者  (计算机科学符号) 的点。我们希望能够把这些点通过一个n-1维的超平面分开,通常这个被称为线性分类器。有很多分类器都符合这个要求,但是我们还希望找到分类最佳的平面,即使得属于两个不同类的数据点间隔最大的那个面,该面亦称为最大间隔超平面,会更有鲁棒性。如果我们能够找到这个面,那么这个分类器就称为最大间隔分类器。

图解

二、目标函数:

SVM是要使到超平面最近的样本点的“距离”最大。

使margin最大化,margin为

之后再进行化简转化...

具体推导见:https://zhuanlan.zhihu.com/p/77750026?utm_source=wechat_session

线性不可分时:

将低维空间映射到高维空间,使其线性可分。例如

线性不可分
映射到高维空间后可分

而此时,会造成计算量太大,也容易过拟合,有学者已经解决了这个问题。使用核函数k(x,y)的计算结果与高维空间的内积计算相同,可以代替。

常用核函数有:线性核函数、多项式核函数和高斯核函数。

三、优缺点

1. 优点

有严格的数学理论支持,可解释性强,不依靠统计方法,从而简化了通常的分类和回归问题;

能找出对任务至关重要的关键样本(即:支持向量);

采用核函数技巧之后,可以处理非线性分类/回归任务;

最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。

2. 缺点

训练时间长。

当采用核技巧时,如果需要存储核矩阵,则空间复杂度为O(N^2 )

模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。

因此支持向量机目前只适合小批量样本的任务,无法适应百万甚至上亿样本的任务。但是有的说适用于大量数据,笔者还未弄明白。

四、SVC方法

sklearn.svm.SVC(C=1.0,kernel='rbf', degree=3, gamma='auto',coef0=0.0,shrinking=True,probability=False,tol=0.001,cache_size=200, class_weight=None,verbose=False,max_iter=-1,decision_function_shape=None,random_state=None)

参数说明:

l  C:C-SVC的惩罚参数C?默认值是1.0

C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。

l  kernel :核函数,默认是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’

  0 – 线性:u’v

   1 – 多项式:(gamma*u’*v + coef0)^degree

  2 – RBF函数:exp(-gamma|u-v|^2)

  3 –sigmoid:tanh(gamma*u’*v + coef0)

l  degree :多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。

l  gamma : ‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’,则会选择1/n_features

l  coef0 :核函数的常数项。对于‘poly’和 ‘sigmoid’有用。

l  probability :是否采用概率估计?.默认为False

l  shrinking :是否采用shrinking heuristic方法,默认为true

l  tol :停止训练的误差值大小,默认为1e-3

l  cache_size :核函数cache缓存大小,默认为200

l  class_weight :类别的权重,字典形式传递。设置第几类的参数C为weight*C(C-SVC中的C)

l  verbose :允许冗余输出?

l  max_iter :最大迭代次数。-1为无限制。

l  decision_function_shape :‘ovo’, ‘ovr’ or None, default=None3

l  random_state :数据洗牌时的种子值,int值

主要调节的参数有:C、kernel、degree、gamma、coef0。

五、SVR

1. 介绍

SVM/SVR图示

SVR回归与SVM分类的区别在于,SVR的样本点最终只有一类,它所寻求的最优超平面不是SVM那样使两类或多类样本点分的“最开”,而是使所有的样本点离着超平面的总偏差最小。SVM是要使到超平面最近的样本点的“距离”最大;SVR则是要使到超平面最远的样本点的“距离”最小。

统计上的理解就是:使得所有的数据的类内方差最小,把所有的类的数据看作是一个类。

传统的回归方法当且仅当回归f(x)完全等于y时才认为是预测正确,需计算其损失;而支持向量回归(SVR)则认为只要是f(x)与y偏离程度不要太大,既可认为预测正确,不用计算损失。具体的就是设置一个阈值α,只是计算 |f(x) - y| > α 的数据点的loss。如图:支持向量回归表示只要在虚线内部的值都可认为是预测正确,只要计算虚线外部的值的损失即可。

SVR超平面示意图

损失函数相关的问题及改进:

在SVR中对于损失函数构成的模型,有些权重很大,有些权重很小,这样就会容易导致过拟合(就是过分拟合了训练数据集),而过拟合则是因为样本太多的特征被包含进来,很多与项目本身无关的特征也被包含进来。

解决过拟合问题有很多方式,常见的有以下几种:

1).喂数据,也就是给足够多的数据,只有数据多了,数据的很多特征才会更加明显的体现出来,训练的模型也会不断的修正,特征的作用也会体现的越来越大。

2).特征降维,越多的特征导致训练集的维度越高,降维就是把高维空间的数据投影到低维空间中(保存下来的特征是数据量大的)。主要有:PCA降维(主成分分析,无监督)、反向特征消除、随机森林/组合树、LDA(线性判别分析,有监督)、LLE(局部线性嵌入)、Laplacian Eigenmaps(拉普拉斯特征映射)等

3).针对具体的负荷预测,对电量值进行标准化或者归一化。可以时特征训练集能够快速的收敛,可以使特征值域范围变小,有利于提高精度。

2. svr方法

sklearn.svm.SVR(kernel='rbf', degree=3, gamma='auto_deprecated', coef0=0.0, tol=0.001, C=1.0, epsilon=0.1, shrinking=True, cache_size=200, verbose=False, max_iter=-1)

参数解释:

kernel: type: string;optional(default=‘rbf’)

             算法中所使用的核函数类型,其中有(‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’,‘precomputer’,默认使用‘rbf’)

 degree:type:int, optional(default=3)

             多项式核函数的次数,默认为3,所以当核函数为‘poly’时用到,其它核函数忽略

gamma:type:float, optional(default=‘auto’)

             核函数的系数, 在核函数为‘rbf’, ‘poly’, ‘sigmoid’时使用,其他核函数忽略。gamma的值必须大于0, 随着gamma的增大,对于测试集分类效果越差,对于训练集分类效果好,并且使模型的复杂度提高,泛化能力(对未知数的预测能力)较差,从而出现过拟合的情况。

coef0:type:float, optional(default=0.0)

             核函数中的独立项,只在核函数为‘poly’跟‘sigmoid’时使用。

tol:type:float, optional(default=1e-3)停止判断的公差

C:type:float, optional(default=1.0)

           错误项的惩罚因子:表征有多重视离群点,C越大越重视,也就是越不想丢掉这些离群点。C值大时对误差分类的惩罚增大,C值小时对误差分类的惩罚减小。当C趋近于无穷大时,表示不允许分类误差的存在;当C趋于0时,表示不再关注分类是否正确。

epsilon:type:float, optional(default=0.1)

shrinking:type:boolean,optional(default=True)

           是否使用收缩启发式

cache_size:type:float, optional

           内核缓存的大小

verbose:type:bool, default:False

          启用详细输出。如果启用,在多线程环境下可能无法正常工作

max_iter:type:int, optional(default=-1)

           解算器内迭代的硬性限制,默认为-1(无限制)

SVM常见面试问题:https://blog.csdn.net/yanhx1204/article/details/79481003

参考:

https://blog.csdn.net/u011067360/article/details/24368085

https://blog.csdn.net/qq_36523839/article/details/82383597

数学解释:https://zhuanlan.zhihu.com/p/77750026?utm_source=wechat_session

SVC方法解释:https://www.imooc.com/article/details/id/40903

SVR介绍:https://zhuanlan.zhihu.com/p/76609851https://www.jianshu.com/p/399ddcac2178

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350