机器学习实战【5】(SVM-支持向量机)
来源:互联网 发布:最好听的网络歌曲 编辑:程序博客网 时间:2024/04/30 20:46
本博客记录《机器学习实战》(MachineLearningInAction)的学习过程,包括算法介绍和python实现。
SVM(支持向量机)
SVM是一种分类算法,通过对训练集数据的分析找到最好的分隔平面,然后用该平面对新数据进行分类。本篇文章介绍SVM的总体思路,通过一些数学推导把初始问题不断简化,最后转化为一个比较简单的二次优化问题。
线性二分类器
设想二维平面上的一组数据点,分为两个类别:
用平面上的直线
几何间隔
点到直线的距离(推广到高阶就是点到超平面的距离)称为几何间隔(Geometrical margin),计算公式如下,其中的分子
上式中的y表示数据点的类别,在直线上方的点类别为1,下方为-1,这使得有错误分类点的那些直线会得到负的几何间隔,从而被筛选掉。
现在我们可以通过几何间隔来描述最优直线的条件,设
即最大化数据集中最小的几何间隔。
接着继续对问题进行简化,函数间隔的大小可以通过成倍地改变w来改变,直线本身却不会变化,这意味可以取合适的值使得这些支持向量与直线的函数间隔为1,这样,问题就变成:
进一步分析,该式又等价于:
这是一个带约束的二次优化问题,可以通过拉格朗日对偶的方法来解决。
拉格朗日对偶
通过引入拉格朗日乘子把条件统一到式子中进行优化,构造拉格朗日函数,其中
将
这样,问题:
就等价于问题:
即先以
交换求最值的顺序,得到原问题的对偶问题:
这个对偶问题更易求解,并且在满足kkt条件的情况下,两者的解相同,于是问题又转化为求对偶问题的解。
首先固定
把这两个式子带回原式经过一番化简,消去
现在,问题转化为:
这是一个二次优化问题,可以用高效的SMO算法解决,具体实现将在以后的文章中介绍。
总结
总的来说,SVM的思路是找到一个最优的分隔平面来进行分类,最优的判断标准是最靠近分类平面的数据点(也就是支持向量)到分类平面的几何间隔最大,这是一个带条件的优化问题。通过拉格朗日对偶,把最初的问题转化为一个更简单的优化问题,其中的变量是拉格朗日乘子
限于篇幅,本文中对原理推导只给出了大致的步骤,对于拉格朗日对偶及kkt条件的数学原理未做解释(因为我也不是很懂),要了解其中细节,这部分内容还需要单独学习一波。
- 机器学习实战【5】(SVM-支持向量机)
- 机器学习---支持向量机(SVM)
- 机器学习:支持向量机(SVM)
- 机器学习-支持向量机(SVM)
- 机器学习(支持向量机-SVM)
- PYTHON机器学习实战——SVM支持向量机
- 【机器学习实战-python3】支持向量机(Support Vecrtor Machines SVM)
- 【机器学习实战】第6章 支持向量机(Support Vector Machine / SVM)
- 【机器学习】支持向量机SVM学习(1)
- 【机器学习】支持向量机SVM学习(2)
- 机器学习 支持向量机(SVM)
- Stanford机器学习--- 支持向量机SVM
- 机器学习之支持向量机(svm)
- 【机器学习】支持向量机SVM
- 机器学习:支持向量机(SVM)
- 机器学习--SVM支持向量机
- 机器学习之支持向量机(SVM)
- Stanford机器学习---支持向量机SVM
- 让CSDN记下自己成长
- 内ARCHLine.XP.2017.R1 x64多学科设计
- 【SVN】导入项目检出项目
- 网易校招第4题
- [算法]贪心算法的详解以及使用
- 机器学习实战【5】(SVM-支持向量机)
- 如何快速在windows下搭载apache环境?
- 1165: 实数的小数部分(指针专题)
- 组合数 (Lucas)
- 配对碱基链 (Coursera 程序设计与算法 专项课程2 C程序设计进阶 李戈;OpenJudge)
- android fragment
- 图
- HTML5基础
- book1 unit1 after-class reading 1 : Love Thy Neighbor