数据挖掘算法学习(七)SVM

SVM,支持向量机。数据挖掘中的一个经典算法,博主学了挺久,把学到的一些东西跟大家分享一下。

支持向量机(SVM,Support Vector Machine)是在高维特征空间使用线性函数假设空间的学习系统,它由一个来自最优化理论的学习算法训练,该算法实现了一个由统计学习理论到处的学习偏置.此学习策略由Vapnik和他的合作者提出,是一个准则性的
并且强有力的方法.在它提出来的若干年来,在范围广大的应用中,SVM的性能胜过其他大多数的学习系统。

一、主要思想

建立一个最优决策超平面,使得该平面两侧距离平面最近的两类样本之间的距离最大化,从而对分类问题提供良好的泛化能力。说白了就是:当样本点的分布无法用一条直线或几条直线分开时(即线性不可分)SVM提供一种算法,求出一个曲面用于划分。这个曲面,就称为最优决策超平面。而且,SVM采用二次优化,因此最优解是唯一的,且为全局最优。前面提到的距离最大化就是说,这个曲面让不同分类的样本点距离最远,即求最优分类超平面等价于求最大间隔。

放一张图直观感受下超平面。

二、求解过程

(针对线性可分情况)

很多人学习了半天,看着公式推导了一大堆,最后都没明白到底是为了求什么,接下来就先看看,我们到底要推导什么。

前文说过的最优分类超平面,我们这样表示:

当我们求出W和b之后,对于待分类的点,带入公式 注意:X是待分类点向量,W与X做向量积。然后我们通过判断结果的符号,就可以将点进行分类。

接下来言归正传。

(针对非线性可分情况)

对非线性可分情况,SVM采用如下方法:将输入向量映射到一个高维特征向量空间。引入核函数可以在解决非线性问题的同时,避免维度灾难。

三、一个例子


输入向量x


期望的响应d


( -1,-1


-1


( -1,+1


+1


( +1,-1


+1


( +1,+1


-1

a.核函数

b.基函数

根据核函数的展开式,我们得到基函数,也就是输入向量在高维空间中的映射,在此例中,输入为二维空间,通过基函数映射到六维空间。

根据此特征函数,分别计算出每个样本映射到六维空间中的向量

其他三个向量具体计算略

c.目标函数

d.求得W

e.最优超平面

四、小结

SVM的优势:

最大间隔的思想-更好的泛化能力,有助于解决过度拟合

核函数-解决非线性问题的同时避免维度灾难

二次优化-存在唯一解,并且可以找到全局最优

稀疏性-支持向量个数相对数据集小得多,易于存储

不足:

运算效率低

计算时占用资源过大

时间: 2024-11-04 01:32:20

数据挖掘算法学习(七)SVM的相关文章

数据挖掘算法学习(三)NaiveBayes算法

算法简单介绍 NBC是应用最广的分类算法之中的一个.朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率.同一时候,NBC模型所需预计的參数非常少,对缺失数据不太敏感,算法也比較简单. 算法如果 给定目标值时属性之间互相条件独立. 算法输入 训练数据   T={(x1,y1),(x2,y2),--,(xn,yn)} 待分类数据x0=(x0(1),x0(2),--,x0(n))T 算法输出 待分类数据x0的分类结果y0∈{c1,c2,--,ck} 算法思想 weka执行 以we

数据挖掘算法学习(一)K-Means算法

博主最近实习开始接触数据挖掘,将学习笔记分享给大家.目前用的软件是weka,下篇文章会着重讲解. 算法简介: K-Means算法是输入聚类个数k,以及包含n个数据对象的数据库,输出满足方差最小标准的k个聚类.并使得所获得的聚类满足:同一聚类中的对象相似度较高:而不同聚类对象相似度较小. 算法假设: 均方误差是计算群组分散度的最佳参数. 算法输入: 聚类个数k:包含n个数据对象的数据集. 算法输出: k个聚类 算法思想: (a)绿点表示数据集在二级的欧几里德空间,初始化的中心点u1和u2用红的和蓝

数据挖掘算法学习(四)PCA算法

算法简介 主成分分析(PrincipalComponentAnalysis,简称PCA)是一种常用的基于变量协方差矩阵对信息进行处理.压缩和抽提的有效方法.主要用于对特征进行降维. 算法假设 数据的概率分布满足高斯分布或是指数型的概率分布.方差高的向量视为主元. 算法输入 包含n条记录的数据集 算法输出 降维或压缩后的数据集 算法思想 ?1.计算所有样本的均值m和协方差矩阵S: ?2.计算S的特征值,并由大到小排序: ?3.选择前n'个特征值对应的特征矢量作成一个变换矩阵E=[e1,e2, -,

数据挖掘算法学习(八)Adaboost

本文不定期更新.原创文章,转载请注明出处,谢谢. Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器).Adaboost算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值.将修改过权值的新数据集送给下层分类器进行训练,最后将每次得到的分类器最后融合起来,作为最后的决策分类器. 算法概述 1.先通过对N个训练样本的学习得

数据挖掘算法学习(九)EM算法-上篇-多元高斯分布

------------------------------------------------------------------------------------ 欢迎转载,请附上链接 http://blog.csdn.net/iemyxie/article/details/42560125 ----------------------------------------------------------------------------------- EM算法大致分为两步--E步骤和

数据挖掘算法学习(五)C4.5

C4.5分类决策树算法,其核心算法是ID3算法.目前应用在临床决策.生产制造.文档分析.生物信息学.空间数据建模等领域.算法的输入是带类标的数据,输出是树形的决策规则. C4.5比ID3的改进: 1)用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足: 2)在树构造过程中进行剪枝: 3)能够完成对连续属性的离散化处理: 4)能够对不完整数据进行处理. C4.5算法优点:产生的分类规则易于理解,准确率较高. C4.5算法缺点:在构造树的过程中,需要对数据集进行多次的顺序扫

数据挖掘算法学习(六)CART

分类回归树算法:CART(Classification And Regression Tree)算法采用一种二分递归分割的技术,将当前的样本集分为两个子样本集,使得生成的的每个非叶子节点都有两个分支.因此,CART算法生成的决策树是结构简洁的二叉树. 分类树两个基本思想:第一个是将训练样本进行递归地划分自变量空间进行建树的想法,第二个想法是用验证数据进行剪枝. CART与C4.5的不同之处是节点在分裂时使用GINI指数.GINI指标主要是度量数据划分或训练数据集D的不纯度为主,系数值的属性作为测

数据结构和算法学习七,之快速排序

快速排序是编程中经常使用到的一种排序方法.可是很多朋友对快速排序有畏难情绪,认为快速排序使用到了递归,是一种非常复杂的程序,其实未必如此.只要我们使用好了方法,就可以自己实现快速排序. 首先,我们复习一下,快速排序的基本步骤是什么: 1. 判断输入参数的合法性 2.把数组的第一个数据作为比较的原点,比该数据小的数据排列在左边,比该数据大的数据排列在右边 3.按照(2)的方法分别对左边的数组和右边的数据进行和(2)一样的数据排列 那么实际编写代码中,应该怎么做呢? a)首先,判断数据的合法性? v

转载:scikit-learn学习之SVM算法

转载,http://blog.csdn.net/gamer_gyt 目录(?)[+] ====================================================================== 本系列博客主要参考 Scikit-Learn 官方网站上的每一个算法进行,并进行部分翻译,如有错误,请大家指正 转载请注明出处,谢谢 =====================================================================