参考:
http://mp.weixin.qq.com/s?__biz=MzIxMjAzNDY5Mg==&mid=400067748&idx=1&sn=9c88eadfba5462281cd496e85ba3329c&scene=21#wechat_redirect
http://blog.csdn.net/v_july_v/article/details/7624837
https://www.zhihu.com/question/21094489
《统计学习方法》
https://www.zhihu.com/question/19967778/answer/184073198
1,感知机(perceptron)
感知机是最简单的神经元模型,由科学家Frank Rosenblatt发明于1950至1960年代,他受到了来自Warren McCulloch 和Walter Pitts的更早工作的启发。
感知机的工作原理如下:
输入量:
权重:
阈值:threshold
输出量:0 or 1
变换,令b≡-threshold
所以,可以理解为感知机是一个线性分类器:f(x) = wx+b
该线性分类器由超平面 wx+b=0 进行划分。
2,线性硬间隔支持向量机
当我们的样本是完全的线形可分时,我们介绍最简单的一种支持向量机,
(1)改进
根据上图中感知机的超平面可以引出下面几个问题:
- 样本可以完全的被超平面划分,所以是线形可分的
- 更改w、b的取值,我们可以得到无数多个超平面f(x)。即只要保证X点都在超平面上方,O点都在下方即可;
- 那么如何挑选最优的那一个超平面呢?即超平面与最近的C点距离多远算事最优的呢?
- 最大化几何间隔找出最优超平面
(2) 函数间隔与几何间隔
.1) 几何间隔
假设图中超平面:f(x) = wx+b=0
则,w是其法向量:
因为假设在超平面上任意的两个点x1,x2,则
wx1=-b
wx2=-b
=> w(x1-x2)=0
又因(x1-x2) 是超平面上的任意向量,根据法向量定义,可知
令
其中,
又因为
.2) 函数间隔
我们是用超平面f(x) = wx+b来预测y值的。
感知机时,y值的标记是0或1,此处我们变换一下,当f(x)>=0时,y=1,f(x)<0时,y=-1。作为二分类的不同标记方式,并不影响结果。
我们定义一个函数间隔 r,
从定义上我们可知,几个间隔=函数间隔/||w||
则,函数间隔的几何意义表示任意一个点到超平面点距离的||w||倍
当我们限制法向量的长度为1,即
(3)最优目标
我们的最优目标是希望能够找到一个超平面,能够分割两类的点,并且这个超平面距离两类最近的点的间隔都是一样的远。
距离两类最近的点即为“支持向量”。
两类支持向量到超平面的几何间隔是一样的,我们的目标,就是想让支持向量到超平面的几何间隔(
max
s.t.
上式中,最大化几何间隔,可以改写为最大化函数间隔
max
s.t.
我们再来考虑一个问题:
令函数间隔为一个常数,是否可行?
函数间隔实际上是等于|wx+b|的,那么不论|wx+b|等于什么,只要w和b同比例放大或缩小之后,都可以让|wx+b|=1成立。所以,当我们研究目标函数最大或最小值时,等比例的问题是不影响求解最优值的。C为常数时,max(C*x)=C*max(x)
于是为了简化求解方程,我们令函数间隔为1,即,我们会得到两个关于f(x)=0对称的超平面,如下所示:
于是,我们的优化问题又变为
max
s.t.
其中,
即,我们研究点最优解点目标为,最大化|f(x)|=1的两个对称超平面之间的间隔,并且支持向量会落在这两个超平面上。
最后,又因为最大化
min
s.t.
现在的目标函数是二次的,约束条件是线性的,所以目标问题是一个凸二次规划问题
引入拉格朗日算子
求解过程:
原始问题的对偶问题为,
先求解
再求解
我们可以得到a的解.
求解后,带入原始方程
此处,我们把x表示成向量内积的形式,为核变换做准备。
3,线性软间隔支持向量机
(1)改进
“线性硬间隔支持向量机”的假设是数据线性可分,但是当数据是线性不
- 可分的时候要如何处理呢?
- 硬间隔最大化 -> 变成软间隔最大化
线性不可分意味着,并不是所有的点都能够满足:大于等于支持向量的几何间隔(即1).因此我们对每个样本
同时对每一个松弛变量都支付一个代价,目标函数变为:
此处,C称作惩罚参数,对代价有调节的作用。
min
s.t.
可以证明w的解是存在的且唯一,但是b的值不是唯一的,存在一个区间。
根据硬间隔支持向量机的推到,可以得到:
4,Hilbert空间
- 1).线性空间
线性空间又称作向量空间,关注的是向量的位置,对于一个线性空间,知道基(相当于三维空间中的坐标系)便可确定空间中元素的坐标(即位置);线性空间只定义了加法和数乘运算。如果我们想知道向量的长度怎么办?—-定义范数,引入赋范线性空间 - 2).赋范线性空间定义了范数的线性空间
如果我们想知道向量的夹角怎么办?—-定义内积,引入内积空间 - 3).内积空间定义了内积的线性空间。
- 4).欧式空间定义了内积的有限维实线性空间。如果我们想研究收敛性(极限)怎么办?—-定义完备
- 5).Hilbert空间完备的内积空间
5,核函数定义
如果数据集线性不可分,那么把数据集映射到高维特征空间后,往往是线性可分的。比如说,m维的数据,在m-1维空间中,往往可以被超平面线性可分。
所以说,把数据映射到高维空间是有好处的。
假设我们定义了一个高维的映射,但是联想到我们“线性硬间隔svm算法中的内积形式”,可知,这种高维映射后的内积的计算量比较大的。
那么有没有一种高维的映射,使得映射后的向量内积直接等于一个固定形式呢?
如果有,那么这种隐式的映射会大大减少计算量。(所谓隐式,是因为我们只需要知道映射到高维的内积的具体形式及结果即可,不需要中间映射后的高维向量本身) 这就引出了我们要介绍的核函数。
核函数
假设X是输入空间(欧式空间),H是特征空间(Hilbert空间),如果存在一个X到H到映射:
对于所有x,z ∈ X,函数K(x,z) 满足条件
K(x,z)=θ(x)θ(z)
则称K(x,z)为核函数,θ(x)为映射函数,核函数等于映射的内积
备注:特征空间一般是高维的,甚至是无穷维的
所以,给定和函数,把线性svm求解中的向量内积全部替换成核函数,即可隐式的实现,用线性分类的方法求解非线性问题。学习是隐式的在特征空间内进行的,这样的技巧称为核技巧。
6,常用核函数
1) 线性核函数
2) 多项式核函数
3) 高斯径向基核函数
4) Sigmoid核函数
5) 字符串核