SVM的点滴】的更多相关文章

SVM 1. 普通SVM的分类函数可表示为: 其中ai为待优化参数,物理意义即为支持向量样本权重,yi用来表示训练样本属性,正样本或者负样本,为计算内积的核函数,b为待优化参数. 其优化目标函数为: 其中||w||用来描述分界面到支持向量的宽度,越大,则分界面宽度越小.C用来描述惩罚因子,而 则是用来解决不可分问题而引入的松弛项. 在优化该类问题时,引入拉格朗日算子,该类优化问题变为: 其中待优化参数ai在数学意义上即为每个约束条件的拉格朗日系数. 而MKL则可认为是针对SVM的改进版,其分类函…
<Machine Learning in Action>-- 剖析支持向量机,单手狂撕线性SVM 前面在写NumPy文章的结尾处也有提到,本来是打算按照<机器学习实战 / Machine Learning in Action>这本书来手撕其中代码的,但由于实际原因,可能需要先手撕SVM了,这个算法感觉还是挺让人头疼,其中内部太复杂了,涉及到的数学公式太多了,也涉及到了许多陌声的名词,如:非线性约束条件下的最优化.KKT条件.拉格朗日对偶.最大间隔.最优下界.核函数等等,天书或许.可…
[TOC] 前言 在自然语言处理过程中,经常会涉及到如何度量两个文本之间的相似性,我们都知道文本是一种高维的语义空间,如何对其进行抽象分解,从而能够站在数学角度去量化其相似性.而有了文本之间相似性的度量方式,我们便可以利用划分法的K-means.基于密度的DBSCAN或者是基于模型的概率方法进行文本之间的聚类分析:另一方面,我们也可以利用文本之间的相似性对大规模语料进行去重预处理,或者找寻某一实体名称的相关名称(模糊匹配).而衡量两个字符串的相似性有很多种方法,如最直接的利用hashcode,以…
在前面的几篇文章中,我们介绍了EasyPR中车牌定位模块的相关内容.本文开始分析车牌定位模块后续步骤的车牌判断模块.车牌判断模块是EasyPR中的基于机器学习模型的一个模块,这个模型就是作者前文中从机器学习谈起中提到的SVM(支持向量机). 我们已经知道,车牌定位模块的输出是一些候选车牌的图片.但如何从这些候选车牌图片中甄选出真正的车牌,就是通过SVM模型判断/预测得到的.   图1 从候选车牌中选出真正的车牌 简单来说,EasyPR的车牌判断模块就是将候选车牌的图片一张张地输入到SVM模型中,…
从前面SVM学习中可以看出来,SVM是一种典型的两类分类器.而现实中要解决的问题,往往是多类的问题.如何由两类分类器得到多类分类器,就是一个值得研究的问题. 以文本分类为例,现成的方法有很多,其中一劳永逸的方法,就是真的一次性考虑所有样本,并求解一个多目标函数的优化问题,一次性得到多个分类面,就像下图这样: 多个超平面把空间划分为多个区域,每个区域对应一个类别,给一篇文章,看它落在哪个区域就知道了它的分类. 只可惜这种算法还基本停留在纸面上,因为一次性求解的方法计算量实在太大,大到无法实用的地步…
核函数(Kernels) 定义 1.1 (核或正定核) 设是中的一个子集,称定义在上的函数是核函数,如果存在一个从到Hilbert空间的映射 使得对任意的,都成立.其中表示Hilbert空间中的内积. 在低纬度空间里不可分的问题,我们可以通过将其向高纬度空间转化,使其线性可分.而转换的关键是找到低维空间向高纬的映射方法. 考虑我们最初在“线性回归”中提出的问题,特征是房子的面积x,这里的x是实数,结果y是房子的价格.假设我们从样本点的分布中看到x和y符合3次曲线,那么我们希望使用x的三次多项式来…
最优间隔分类器(optimal margin classifier) 重新回到SVM的优化问题: 我们将约束条件改写为: 从KKT条件得知只有函数间隔是1(离超平面最近的点)的线性约束式前面的系数,也就是说这些约束式,对于其他的不在线上的点(),极值不会在他们所在的范围内取得,此时前面的系数.注意每一个约束式实际就是一个训练样本. 看下面的图: 实线是最大间隔超平面,假设×号的是正例,圆圈的是负例.在虚线上的点就是函数间隔是1的点,那么他们前面的系数,其他点都是.这三个点称作支持向量.构造拉格朗…
在一个线性分类器中,可以看到SVM形成的思路,并接触很多SVM的核心概念.用一个二维空间里仅有两类样本的分类问题来举个小例子.如图所示 和是要区分的两个类别,在二维平面中它们的样本如上图所示.中间的直线就是一个分类函数,它可以将两类样本完全分开. 实际上,一个线性函数是一个实值函数,而我们的分类问题需要离散的输出值,例如用1表示某个样本属于类别,而用0表示不属于(不属于也就意味着属于),这时候只需要简单的在实值函数的基础上附加一个阈值即可,通过分类函数执行时得到的值大于还是小于这个阈值来确定类别…
从这一部分开始,将陆续介绍SVM的相关知识,主要是整理以前学习的一些笔记内容,梳理思路,形成一套SVM的学习体系. 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中. 支持向量机方法是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(…
SVM(支撑向量机模型)是二(多)分类问题中经常使用的方法,思想比较简单,但是具体实现与求解细节对工程人员来说比较复杂,如需了解SVM的入门知识和中级进阶可点此下载.本文从应用的角度出发,使用Libsvm函数库解决SVM模型的分类与回归问题. 说明:libsvm是实现svm的便捷开源工具,应用广泛,由国立台湾大学Chih-Chung Chang和Chih-Jen Lin编写,可以实现基于SVM的分类和回归. 1.分类 在Matlab下下载测试数据heart_sacle运行程序: load hea…
[十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART SVM(Support Vector Machines)是分类算法中应用广泛.效果不错的一类.<统计学习方法>对SVM的数学原理做了详细推导与论述,本文仅做整理.由简至繁SVM可分类为三类:线性可分(linear SVM in linearly separable case)的线性SVM.线性不可分的线性SVM.非线性(nonlin…
模式识别课程的一次作业.其目标是对UCI的手写数字数据集进行识别,样本数量大约是1600个.图片大小为16x16.要求必须使用SVM作为二分类的分类器. 本文重点是如何使用卷积神经网络(CNN)来提取手写数字图片特征,主要想看如何提取特征的请直接看源代码部分的94行左右,只要对tensorflow有一点了解就可以看懂.在最后会有完整的源代码.处理后数据的分享链接.转载请保留原文链接,谢谢. UCI手写数字的数据集 源数据下载:http://oddmqitza.bkt.clouddn.com/ar…
--------------------------------------------------------------------------------------- 本系列文章为<机器学习实战>学习笔记,内容整理自书本,网络以及自己的理解,如有错误欢迎指正. 源码在Python3.5上测试均通过,代码及数据 --> https://github.com/Wellat/MLaction -----------------------------------------------…
支持向量机的学习说是刚刚开始,又不合理,只能说隔了很长的时间再看,终于在分类这块的层面上有了新的认识. 总的来说,支持向量机分为线性支持向量机和非线性支持向量机,线性支持向量机又可以分为硬间隔最大化线性支持向量机和軟间隔最大化线性支持向量机:非线性支持向量机需要选择合适的核函数,从而达到非线性分类. 线性支持向量机和线性分类和logictic regression分类的比较: (1)线性支持向量机只支持二分类,而逻辑回归既支持二分类又支持多分类: (2)进行二分类的时候,逻辑回归模型原始输出为g…
昨天和李老师讨论一会还是有所得的,虽然我发誓要早睡又泡汤了,又无原则晚睡了. 总结一下有这么几点心得认识: (1)MATLAB再带的svm工具箱得不到参数,必须在路径中添加libsvm工具箱,安装在MATLAB toolbox的文件夹下,这样就能在训练模型完成后就可以查看模型参数 (2)多查看函数的帮助文档中的说明和例子,好多参数可以很方便的设置,如果在浏览器中,参考别人的设置,很有局限性,也许会错过自己的需要,造成不必要的麻烦 (3)有时间一定要把各种经典算法的公式推导一遍,公司笔试题还偏重于…
sklearn包对于SVM可输出支持向量,以及其系数和数目: print '支持向量的数目: ', clf.n_support_ print '支持向量的系数: ', clf.dual_coef_ print '支持向量:', clf.support_  处理不平衡数据常用方法:将少数类的数据权值加重 sklearn中的SVM分类问题加入权重可以通过class_weight属性clfs = [svm.SVC(C=1, kernel='linear', decision_function_shap…
原文 接下来要说的东西其实不是松弛变量本身,但由于是为了使用松弛变量才引入的,因此放在这里也算合适,那就是惩罚因子C.回头看一眼引入了松弛变量以后的优化问题: 注意其中C的位置,也可以回想一下C所起的作用(表征你有多么重视离群点,C越大越重视,越不想丢掉它们).这个式子是以前做SVM的人写的,大家也就这么用,但没有任何规定说必须对所有的松弛变量都使用同一个惩罚因子,我们完全可以给每一个离群点都使用不同的C,这时就意味着你对每个样本的重视程度都不一样,有些样本丢了也就丢了,错了也就错了,这些就给一…
    数据模型:并不是简单地二维数据,多个维度或者对象的数据聚合起来      {           persion1's attr1:value1,...,persion1's attrN:valueN,persion2's attr1:value1,...,persion2's attrN:value1,whetherSuccess:value      }   同一个问题:不同的分类方法的类比           决策树:存在多个数值型输入,且这些数值所呈现的关系并不简单,决策树往往不…
Logistic模型和SVM都是用于二分类,现在大概说一下两者的区别 ① 寻找最优超平面的方法不同 形象点说,Logistic模型找的那个超平面,是尽量让所有点都远离它,而SVM寻找的那个超平面,是只让最靠近中间分割线的那些点尽量远离,即只用到那些"支持向量"的样本--所以叫"支持向量机". ② SVM可以处理非线性的情况 即,比Logistic更强大的是,SVM还可以处理非线性的情况.​ ③Logistic regression 和 SVM本质不同在于loss f…
对于线性不可分的数据集,可以利用核函数(kernel)将数据转换成易于分类器理解的形式. 如下图,如果在x轴和y轴构成的坐标系中插入直线进行分类的话, 不能得到理想的结果,或许我们可以对圆中的数据进行某种形式的转换,从而得到某些新的变量来表示数据.在这种表示情况下,我们就更容易得到大于0或者小于0的测试结果.在这个例子中,我们将数据从一个特征空间转换到另一个特征空间,在新的空间下,我们可以很容易利用已有的工具对数据进行处理,将这个过程称之为从一个特征空间到另一个特征空间的映射.在通常情况下,这种…
SVM有很多实现,现在只关注其中最流行的一种实现,即序列最小优化(Sequential Minimal Optimization,SMO)算法,然后介绍如何使用一种核函数(kernel)的方式将SVM扩展到更多的数据集上. 1.基于最大间隔分隔数据 几个概念: 1.线性可分(linearly separable):对于图6-1中的圆形点和方形点,如果很容易就可以在图中画出一条直线将两组数据点分开,就称这组数据为线性可分数据 2.分隔超平面(separating hyperplane):将数据集分…
1. soft-margin SVM的形式 其中ξn表示每个点允许的犯错程度(偏离margin有多远),但是犯错是有代价的,也就是目标函数里面要最小化的.c控制对犯错的容忍程度. 2. 推导soft SVM的对偶问题 首先写出拉格朗日函数: 可以推导出对偶问题为: 即: 最优解满足KKT条件: 代入后可以将贝塔消去,ξ消去: 因此,对偶问题基本和原来相似: 3. 解 soft SVM问题 如何求b?需要找到阿尔法大于零小于C的那些向量,称为free向量: 4. soft-margin SVM中的…
1.对偶问题的推导 为什么要求解对偶问题?一是对偶问题往往更容易求解,二是可以自然的引入核函数. 1.1 用拉格朗日函数将原问题转化为"无约束"等价问题 原问题是: 写出它的拉格朗日函数: 然后我们的原问题就等价为: 为什么可以这样等价: 即:对于不满足约束条件的(b,w),min里面趋于无穷大,因此min就把这些b,w舍去了:对于满足约束条件的解,min里面就刚好是原来的目标函数,刚好与原问题等价. 1.2 导出拉格朗日对偶问题 首先我们有如下成立: 然后我们取右边式子中的"…
摘要 本文主要说明SVM中用到的超平面方程是怎么来的,以及各个符号的物理意义,怎么算空间上某点到该平面的距离. 正文 < 统计学习方法>一书给出如下说明: 首先说明我对超平面的理解: 在三维坐标系里,XoY平面把三维坐标系"分割"成两个空间,这个分割平面引申到一维,二维,四维空间-来,他就是一个超平面.一维里是一个点分割空间,二维里是条线,3维刚好是个平面,4维的用几何已经无法表示了,但是我们赋予这个分割的东西为超平面,就比较形象了. 对于这个分离超平面方程时怎么来的,书中…
摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 6.适用场合 内容: 1.算法概述 其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解. 或者简单的可以理解为就是在高维空间中寻找一个合理的超平面将数据点分隔开来,其中涉及到非线性数据到高维的映射以达到数据线性可分的目的. 模型函数是:其中w(n维),b待定 2.算法推导 2.1几个基本概念: 2.1.1 函数间隔(function…
本文主要介绍支持向量机理论推导及其工程应用. 1 基本介绍 支持向量机算法是一个有效的分类算法,可用于分类.回归等任务,在传统的机器学习任务中,通过人工构造.选择特征,然后使用支持向量机作为训练器,可以得到一个效果很好的base-line训练器. 支持向量机具有如下的优缺点, 优点: 高维空间有效: 维度大于样本数量的情况下,依然有效: 预测时使用训练样本的子集(也即支持向量),节省内存: 可以使用不同的核函数用于决策: 缺点: 如果特征的数目远远大于样本的数目,性能将会降低: 不能直接提供概率…
%% [Input]:s_train(输入样本数据,行数为样本数,列为维数):s_group(训练样本类别):s_sample(待判别数据)%% [Output]:Cla(预测类别) function Cla = fun_panbie(s_train,s_group,s_sample,index )switch index case 1%Classify %[s_train,~]=mapminmax(s_train);%标准化处理 %[s_sample,~]=mapminmax(s_sample…
现简单对屏幕回显信息进行说明: #iter 为迭代次数, nu  与前面的操作参数 -n nu  相同, obj 为 SVM 文件转换为的二次规划求解得到的最小值, rho  为判决函数的常数项 b , nSV  为支持向量个数, nBSV 为边界上的支持向量个数, Total nSV 为支持向量总个数. 训练后的模型保存为文件 *.model ,用记事本打开其内容如下: svm_type c_svc %  训练所采用的 svm 类型,此处为 C- SVC kernel_type rbf % 训…
LIBSVM 使用的一般步骤是:1)准备数据集,转化为 LIBSVM支持的数据格式 :[label] [index1]:[value1] [index2]:[value2] ...即 [l类别标号] [特征1]:[特征值] [特征2]:[特征值] ...2)对数据进行简单的缩放操作(scale):(为什么要scale,这里不解释了)3)考虑选用核函数(通常选取径函数,程序默认):4)采用交叉验证(一般采用5折交叉验证),选择最佳参数C与g :5)用得到的最佳参数C与g 对整个训练集进行训练得到S…
最近有被问到SVM的问题,不懂装懂,羞愧不已.百度有很多深入浅出介绍SVM的文章,我就不赘述了,这里写一点自己肤浅的理解. SVM的核心思想是把求解低维空间上的高维分类器转化为求解高维函数空间上的线性分类器.为了达到这一目的,SVM引入了三大法宝. 第一是支持向量.支持向量相当于样本数据的典型代表(或者临界样本),分类器只依赖于支持向量,简化了其复杂度. 第二是核函数.SVM通过核函数把低维空间上的样本数据的关系转化为高维函数空间的内积关系.把数据从低维空间向高维函数映射,实际上增加了模型的复杂…