机器学习算法 - 感知机

1感知机的模型

  感知机是监督学习算法,样本的特征是输入,输出是Y{1,-1},通过对样本输入输出的映射学习,我们可以得到一个函数

                 f(x) = sign(w * x + b)

  其中:w是权值向量, b是偏置 , W * X 表示W 和 X 做内积 ,sign(X) 当 X大于等于0 为 1 ,否则为 -1 

  感知机是线性分类模型,是属于判别模型。感知机确定了一个平面,把空间分为两部分即数据分为两个类别

2感知机的策略

  假设训练数据集是线性可分的,感知机学习的目标是求得一个分离超平面,从而能将训练集正负样本完全正确分开,

  为了找到这样的超平面即确定(W,b)需要一个学习策略:即定义一个(经验)损失函数并将损失函数极小化。

  损失函数很自然的选择是误分类点的总数,但是这样损失函数不可导,不好做优化,所以损失函数的另一个选择是误分类点到分离超平面的总距离.

  点X0到分割超平面的距离如下:

      D0 = |W * X0 + b |/ ||W||

  其中: ||W|| 是W的L2范数

  对于一般的误分类点都有 -1 * Y * (W * X + b)> 0 , 因为只有当分类Y和 (W * X + b)符号相反才表示其为误分类点,所以取个负号值 -1 * Y * (W * X + b)> 0,

  所以误分类点到平面的距离是

           -y0 *(W * X0 + b )/ ||W||

  损失函数(所有误分类点到平面的距离)为  ∑i€M  -yi *(W * Xi + b )/ ||W|| ,其中M为误分类点的集合。

  因为对于所有的样本||W|| 是一个定值 ,所以我们的损失函数可以化简为  ∑i€M  -yi *(W * Xi + b ) ,其中M为误分类点的集合。这就是感知机的经验风险函数。

 

  分析损失函数: 首先损失函数肯定是非负的,如果没有误分类点,损失函数为0,误分类点越少,误分类点离平面越近,损失函数就越小。

  综上所述:感知机的学习策略是在假设空间中选取使损失函数最小的模型参数 W,b

 

3感知机的算法

  感知机的学习问题转化为求解损失函数式的最优化问题,最优化的方法是随机梯度下降算法。

  感知机算法分为原始形式和对偶形式:

  原始形式:

    输入: 训练数据集T = {(xi,yi), 1< i < n},  Xi 表示特征, yi 表示标记{-1,1}, 学习率: μ  ( 0<μ <= 1 )

    输出: W,b 感知机模型 F(x) = sign(W * X + b)

    1)  选取初值W0 , X0,  随机取(可以取 W0 = X0 = 0)

     2) 在训练集中选取数据(Xi,Yi)

     3) 如果 Y * (W * Xi + b) <= 0

        更新W : W =  W +  μ *YiXi

             b = b +  μ *Yi

     4) 转至 2)直到训练集中没有误分类点

  当一个样本点被误分类,即位于分离超平面的错误一侧时,则调整参数 W,b来减少该误分类点到平面的距离,直到 为 0 

  

   对偶形式:

    对偶想法的基本想法: 将W和 b 表示为样本实例Xi 和标记Yi的线性组合的形式,假设W = b = 0,对误分类点通过更新W,b,

  设修改了n次,则w和 b的增量分别是αi =niμ 这样W,b可表示为: W = ∑αiyixi  B = ∑αiyi

  

    输入: 训练数据集T = {(xi,yi), 1< i < n},  Xi 表示特征, yi 表示标记{-1,1}, 学习率: μ  ( 0<μ <= 1 )

    输出: α,b 感知机模型 F(x) = sign(∑αiyix * X + b)  其中α = (α1,α2...αnT

    

    1)  选取初值W0 = X0 = 0

     2) 在训练集中选取数据(Xi,Yi)

     3) 如果 Y * (∑αjyjxj  * Xi + b) <= 0

        更新α : α =  α +  μ

             b = b +  μ *Yi

     4) 转至 2)直到训练集中没有误分类点

    对偶形式中训练实例以内积形式出现,为了方便可以预先将训练数据集的内积计算出来,并且以矩阵存储,这就是Gram矩阵。

    

posted @ 2018-09-08 11:44  陈老爷爷的烟斗  阅读(138)  评论(0)    收藏  举报