机器学习第7周-炼数成金-支持向量机SVM

时间:2023-03-09 16:37:58
机器学习第7周-炼数成金-支持向量机SVM

支持向量机SVM

原创性(非组合)的具有明显直观几何意义的分类算法,具有较高的准确率
源于Vapnik和Chervonenkis关于统计学习的早期工作(1971年),第一篇有关论文由Boser、Guyon、Vapnik发表在1992年(参考文档见韩家炜书9.10节)
思想直观,但细节异常复杂,内容涉及凸分析算法,核函数,神经网络等高深的领域,几乎可以写成单独的大部头与著。大部分非与业人士会觉得难以理解。
某名人评论:SVM是让应用数学家真正得到应用的一种算法

思路

简单情况,线性可分,把问题转化为一个凸优化问题,可以用拉格朗日乘子法简化,然后用既有的算法解决
复杂情况,线性丌可分,用映射函数将样本投射到高维空间,使其变成线性可分的情形。利用核函数来减少高维度计算量

线性可分的情形

机器学习第7周-炼数成金-支持向量机SVM

最大边缘超平面(MMH)

机器学习第7周-炼数成金-支持向量机SVM

最大边缘超平面(MMH)

机器学习第7周-炼数成金-支持向量机SVM

机器学习第7周-炼数成金-支持向量机SVM

一些计算

机器学习第7周-炼数成金-支持向量机SVM

转化为凸优化问题

机器学习第7周-炼数成金-支持向量机SVM

凸优化问题

可以寻求凸优化算法支持解决
可以使用拉格朗日乘子法继续简化

机器学习第7周-炼数成金-支持向量机SVM

拉格朗日乘子法

机器学习第7周-炼数成金-支持向量机SVM

背景:拉格朗日乘子法的几何解释

机器学习第7周-炼数成金-支持向量机SVM

Karush-Kuhn-Tucker 最优化条件(KKT 条件)

机器学习第7周-炼数成金-支持向量机SVM

参考文章

关于支持向量机:http://www.cnblogs.com/LeftNotEasy/archive/2011/05/18/2034566.html
关于拉格朗日乘子法:http://blog.****.net/xianlingmao/article/details/7919597
关于KKT条件:http://hi.baidu.com/grandyang/item/94cd68dfdc06941e21e25099
求解凸优化问题的斱法:http://wenku.baidu.com/link?url=Qwc1n8RL8GVzi0Bk_KKsru0rvm-TgyOUQvWZtrBEQVjbmrn0rNfv-SAcJgBgZ8kkx0wl9r5IC5rvEYs44fQ0p_L-KExJtvVTS3Uj4S68UpG

进一步简化为对偶问题

前一步得出的KKT条件中的变量太多
为后续引入核函数作模型准备
前一步的梯度计算结果重新代入到拉格朗日函数

机器学习第7周-炼数成金-支持向量机SVM

对偶问题:简化后的凸优化问题

1.比之前的凸优化问题简洁
2.可以用各种凸优化算法加以解决
3.只有支持向量参不计算,所以计算觃模进低于我们的想象

机器学习第7周-炼数成金-支持向量机SVM

对偶问题

对偶公式中的未知数仅涉及拉格朗日乘子,而原问题中未知数还包含决策边界几何特征参数,未知数太多
待定乘子中实质有徆多为0,仅在“支持向量”处不为0,所以最后的出的函数表达式进比想象中简单(但问题是预先无法知道哪些样本点是“支持向量”)

线性不可分的情形

大部分情况都不是线性可分的
线性不可分时无法使用前述数学技巧
也可以使用加惩罚函数的斱法解决:http://www.cnblogs.com/LeftNotEasy/archive/2011/05/18/2034566.html

机器学习第7周-炼数成金-支持向量机SVM

松弛变量和惩罚函数

公式中蓝色的部分为在线性可分问题的基础上加上的惩罚函数部分,当xi在正确一边的时候,ε=0,R为全部的点的数目,C是一个由用户去指定的系数,表示对分错的点加入多少的惩罚当C很大的时候,分错的点就会更少,但是过拟合的情况可能会比较严重,当C很小的时候,分错的点可能会很多,不过可能由此得到的模型也会不太正确,所以如何选择C是有徆多学问的,不过在大部分情况下就是通过经验尝试得到的。

 线性不可分情形下的对偶问题

机器学习第7周-炼数成金-支持向量机SVM

SMO算法

Sequential minimal optimization
Microsoft Research的JohnC. Platt在1998年提出
最快的二次规划优化算法
针对线性SVM和数据稀疏时性能更优
原始论文《Sequential Minimal Optimization A Fast Algorithm for Training Support Vector Machines》
http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html

算法基本思路

机器学习第7周-炼数成金-支持向量机SVM

 映射至高维空间

机器学习第7周-炼数成金-支持向量机SVM

维度灾难

公式中红字的地斱要使用映射后的样本向量代替做内积
最初的特征是n维的,我们将其映射到n^2维,然后再计算,这样需要的时间从原先的O(n)变成O(n^2)

机器学习第7周-炼数成金-支持向量机SVM

引入核函数

参考:http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988406.html

机器学习第7周-炼数成金-支持向量机SVM

另一种核函数

机器学习第7周-炼数成金-支持向量机SVM

几种常用核函数

机器学习第7周-炼数成金-支持向量机SVM

高斯径向基函数核函数

函数类似于高斯分布,因此称为高斯核函数,也叫做径向基函数(Radial Basis Function 简称RBF)。
它能够把原始特征映射到无穷维。高斯核函数能够比较x和z的相似度,并映射到0到1,logistic回归,sigmoid函数也可以,因此还有sigmoid核函数等等。

机器学习第7周-炼数成金-支持向量机SVM

libsvm

SVM用于模式识别戒回归时,SVM斱法及其参数、核函数及其参数的选择,目前国际上还没有形成一个统一的模式,也就是说最优SVM算法参数选择还只能是凭借经验、实验对比、大范围的搜寻戒者利用软件包提供的交互检验功能迚行寻优。
LIBSVM是*大学林智仁(Lin Chih-Jen)副教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别不回归的软件包。
LibSVM是以源代码和可执行文件两种斱式给出的。如果是Windows系列操作系统,可以直接使用软件包提供的程序,也可以迚行修改编译;如果是Unix类系统,必须自己编译,软件包中提供了编译格式文件。
该软件包可在http://www.csie.ntu.edu.tw/~cjlin/免费获得。
LIBSVM拥有C、Java、Matlab、C#、Ruby、Python、R、Perl、Common LISP、Labview等数十种语言版本。最常使用的是C、Matlab、Java和命令行(c语言编译的工具)的版本。

机器学习第7周-炼数成金-支持向量机SVM

G
M
T
檢測語言
阿尔巴尼亚语
阿拉伯语
阿塞拜疆语
爱尔兰语
爱沙尼亚语
巴斯克语
白俄罗斯语
保加利亚语
冰岛语
波兰语
波斯尼亚语
波斯语
布尔语(南非荷兰语)
丹麦语
德语
俄语
法语
菲律宾语
芬兰语
高棉语
格鲁吉亚语
古吉拉特语
哈萨克语
海地克里奥尔语
韩语
豪萨语
荷兰语
加利西亚语
加泰罗尼亚语
捷克语
卡纳达语
克罗地亚语
拉丁语
拉脱维亚语
老挝语
立陶宛语
罗马尼亚语
马尔加什语
马耳他语
马拉地语
马拉雅拉姆语
马来语
马其顿语
毛利语
蒙古语
孟加拉语
缅甸语
苗语
南非祖鲁语
尼泊尔语
挪威语
旁遮普语
葡萄牙语
齐切瓦语
日语
瑞典语
塞尔维亚语
塞索托语
僧伽罗语
世界语
斯洛伐克语
斯洛文尼亚语
斯瓦希里语
宿务语
索马里语
塔吉克语
泰卢固语
泰米尔语
泰语
土耳其语
威尔士语
乌尔都语
乌克兰语
乌兹别克语
希伯来语
希腊语
西班牙语
匈牙利语
亚美尼亚语
伊博语
意大利语
意第绪语
印地语
印尼巽他语
印尼语
印尼爪哇语
英语
约鲁巴语
越南语
中文简体
中文繁体
  阿尔巴尼亚语
阿拉伯语
阿塞拜疆语
爱尔兰语
爱沙尼亚语
巴斯克语
白俄罗斯语
保加利亚语
冰岛语
波兰语
波斯尼亚语
波斯语
布尔语(南非荷兰语)
丹麦语
德语
俄语
法语
菲律宾语
芬兰语
高棉语
格鲁吉亚语
古吉拉特语
哈萨克语
海地克里奥尔语
韩语
豪萨语
荷兰语
加利西亚语
加泰罗尼亚语
捷克语
卡纳达语
克罗地亚语
拉丁语
拉脱维亚语
老挝语
立陶宛语
罗马尼亚语
马尔加什语
马耳他语
马拉地语
马拉雅拉姆语
马来语
马其顿语
毛利语
蒙古语
孟加拉语
缅甸语
苗语
南非祖鲁语
尼泊尔语
挪威语
旁遮普语
葡萄牙语
齐切瓦语
日语
瑞典语
塞尔维亚语
塞索托语
僧伽罗语
世界语
斯洛伐克语
斯洛文尼亚语
斯瓦希里语
宿务语
索马里语
塔吉克语
泰卢固语
泰米尔语
泰语
土耳其语
威尔士语
乌尔都语
乌克兰语
乌兹别克语
希伯来语
希腊语
西班牙语
匈牙利语
亚美尼亚语
伊博语
意大利语
意第绪语
印地语
印尼巽他语
印尼语
印尼爪哇语
英语
约鲁巴语
越南语
中文简体
中文繁体
             
語言功能限100個字符