机器学习基石笔记1——感知机

机器学习——感知机

机器学习整个过程:根据模型H,使用演算法A,在训练样本D上进行训练,得到最好的h,其对应的g就是我们最后需要的机器学习的模型函数,一般g接近与目标函数f。

1.感知机原理

可以用一个简单的例子来阐述:银行需要给客户发信用卡,那符合什么样的条件的客户才能发信用卡,比如说年收入,年龄,工作单位,都会影响信用卡的派发。银行派发信用卡的问题就是一个典型的机器学习问题,我们需要根据客户信息数据集D,通过算法A,在模型H中选择最好的h,得到g,接近目标函数f,发信用卡(+1),不发信用卡(-1)。

感知机就是机器学习中最基本的一个模型(Perceptron),结合刚才银行发信用卡的信息,我们可以把客户的个人信息作为特征向量x,总共有d个特征向量。每个权重为w,w反映出特征对于派发信用卡的影响大小。最后我们将所有特征加权与一个阈值进行相减,结果大于0,则派发信用卡,若小于0,则不派发。感知机模型,就相当于特征向量加权求和与阈值相减若大于0,则输出h(x)=1;反之,h(x)=-1。我们最终的目的就是计算出权值w阈值

机器学习基石笔记1——感知机
图中 x 代表特征值,而 w 代表特征值的权重,这里我们将阈值当作w0,引入一个x0=1的量,这样我们就把阈值转换成了权值w0,简化了计算。
同时我们说的感知机,在这个模型上就是一条直线,称之为linear(binary) classifiers。但实际上感知机的线性分类不仅仅局限于二维空间,在三维空间中,线性分类用平面来表示,也就是超平面。只要是形如WTX的线性模型都是属于线性分类。当然线性分类不仅仅只有感知机一种模型,也有后来要学习的逻辑回归

2.感知机学习算法

那么如何找到一条正确的直线,能够将所有点都分类正确呢,这就是演算法需要做的了,首先我们在平面上选择一条直线,看看哪一点分类错误,开始对第一个错误分类点进行修正,我们可以通过调整直线位置,就可以使错误分类点划分到正确分类位置,不断重复此过程,直到所有的点都分类正确,当然我们可能会遇到调整直线位置,原本分类正确的点现在分类错误了,这就需要我们的数据使线性可分的了。

机器学习基石笔记1——感知机

如何调整权重

调整公式:
Wt+1Wt+yn(t)Xn(t)W_t+1←W_t+y_n(t)X_n(t)
判断错误时sign(wtTxn(t))sign(w^T_tx_n(t))
X\vec{X}是w这个向量的长度,而θ\theta则是w与x之间的夹角。由于长度不会为负数。因此影响wTxw^Tx是正还是负主要因子就是θ\thetacos(θ)\cos(\theta)的特性就是θ\theta00^\circ9090^\circ之间是正数,在9090^\circ180180^\circ之间是负数。
具体的感知机修正过程:
机器学习基石笔记1——感知机
wx+bwx+b在例子中,我们可以使用年龄和收入作为(x1, x2)来表示一个客户的属性,所以表现出的是二维平面。如果派发信用卡还和客户的性别有关呢,那就需要加一个x3来表示性别,样本属性就变成了(x1,x2,x3),自然变成了三维了。同样在高维度空间我们的wx+bwx+b依然适用,也就是我们说的超平面。在这里我也解释一下这个wx+bwx+b
wx=wTx=wxcos(θ)w \cdot x = w^Tx = |\vec{w}||\vec{x}|\cos(\theta)
分割线为什么始终与ww垂直呢,首先wwwx+bwx+b的法向量,为什么ww一定是超平面的法向量呢。可以这样解释:如果一个超平方的方程是aTx+b=0a^Tx+b=0,那么法向量ww就必须垂直于这个超平面内的任意一个向量。假设x1,x2x1,x2是超平面上的任意两点,那么它们满足
aTx1+b=0,aTx2+b=0a^Tx_1+b=0, a^Tx_2+b=0
x1x1x2x2构成的向量是x1x2x1−x2。根据上面的式子,我们也知道aT(x1x2)a^T(x1−x2)。所以aa向量就是始终和超平面内任意一个向量垂直的向量,所以法向量ww就等于aa
wx+bwx+b是一个n维空间中的超平面s,其中ww是超平面的法向量,b是超平面的截距,这个超平面将空间划分成为两部分,位于两部分的点分别被分为正负两类.

感知机的损失函数

这里我们引入一个点到超平面距离的公式,1wwx0+b\frac{1}{||w||}|w \cdot x_0+b|
机器学习基石笔记1——感知机
为什么我们可以不考虑1w\frac{1}{||w||},因为感知机学习算法是误分类驱动的,所谓误分类驱动就是,只考虑yi(wxi+b)-y_i(w \cdot x_i+b)的正负来判断分类是否正确。而1w\frac{1}{||w||}并不影响正负,所以在感知机学习过程中可以不做考虑。
感知机的损失函数计算是采用随机梯度下降法。任意选取一个超平面w0,b0w_0,b_0,然后用梯度下降法不断极小化目标函数,极小化的过程不是一次使所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。
具体调整过程

  • 预设一个w0w_0b0b_0,即wwbb的初值
  • 在训练数据集中选取(xi,yi)(x_i,y_i)
  • yi(wxi+b)<=0y_i(w \cdot x_i + b) <= 0时,利用随机梯度下降算法进行参数更新。

这里我对于梯度下降的一个简单理解就是沿着梯度(导数)方向来判断最小值在哪,然后让函数值根据方向加减一定数值。

还有一种对偶形式算法,简单的说,对偶形式相对于传统形式,wo,b0w_o,b_0的初始值都设置为0,这样最终得到的w,bw,b都是型对于0的增量,这样就会使计算过程中出现大量的xixx_i \cdot x这种内积运算,我们是先将向量内积运算完成存入Gram中,方便我们后来计算。当特征向量的维度非常高的时候,选择这种对偶形式算法。
我们给出一个统计学方法书中的例子:
机器学习基石笔记1——感知机

机器学习基石笔记1——感知机