• 机器学习算法之感知机


    1.感知机模型

      感知器模型只是适用于线性可分的二分类情况,例如有n个样本,x是n维的特征,y是二分标签{+1, -1},任务是找到一条超平面将样本中的正负样本分开。

      具体的,如果我们有m个样本,每个样本都对应与n为特征和一个二分类别输出,如下

       

      由输入空间到输出空间的函数为:

      称为感知机,其中,w和b为感知机参数模型,w为一个n维行向量,叫做权值向量,b为一个标量,叫做偏置。表示w和b的内积。sign是符号函数,即

      对于特征空间Rn中的一个超平面S,其中w是超平面的法向量,b是超平面的截距。这个超平面将特空间划分为两个部分,法向量指向的为正类,另外一类为负类。

    2 感知机学习损失函数

      感知器的目标是找到一个超平面将训练集的正负样本分开,只要确定了权值向量w和偏置b即确定了超平面,为了可以完成任务的超平面,就要确定一个学习策略,即定义一个损失函数并将损失函数最小化。

      为了下面叙述方面,接下来做一个约定,即:

     

      上面的公式的意思就是说,存在一个分离超平面,正例样本在超平面的上面,负例在超平面的下面。将上面两个公式合成一个公式,即:

      当存在错分的样本时,则错分的样本满足关系:

      感知器的损失函数为误分类点到超平面S的总距离。

      下面是某一个样本点x0到超平面的距离:

      对于一个误分类的数据(xi, yi)来说,其到超平面S的距离是:

      这样,假设超平面S的误分类点集合为M,那么所有误分类点到超平面S的总距离为:

      当公式中分子的w扩大N倍时,公式的分母也会扩大N倍,因此可以固定分母为1,即将w和b同时缩小至w的二范数为1,这并不会改变超平。然后求分子的最小化作为损失函数,这样就得到了感知器的损失函数:

     

      其中M为误分类点的集合。这个损失函数就是感知机学习的经验风险函数。

      显然,损失函数L(w, b)是非负的,如果没有误分类点,损失函数值为0。而且,误分类点越少,误分类点离超平面越近,损失函数值就越小。

     3 感知机学习算法

       通过上一节的推导,得出感知机的损失函数,则感知机的学习问题变为求解损失函数的最优化问题,最优化的方法是随机梯度下降。

      假如我们拥有m个样本,每个样本的特征维度为n的数据集,如下:

      其中yi是一个二元类别输出+1或者-1,求参数w和b,使其为以下损失函数的极小化问题的解:

      其中M为误分类点的集合。

      感知机的损害函数只有和误分类的点有关,是误分类数据驱动的,具体采用随机梯度下降,首先先任意选择一个超平面w0,b0,然后用梯度下降法不断极小化目标函数,极小化的过程中不是一次是M中所有所有的误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。

      加入误分类集合M是固定的,那么损失函数L(w,b)的梯度是:

      然后随机选取一个误分类点(xi, yi),接着对w和b进行更新:

      上式中,是学习率,又叫学习步长,是一个大于0,小于等于1的浮点值,这样就可以通过迭代是损失函数不断减小,直到算法收敛。

      算法的执行步骤如下:

      输入:线性可分的训练数据集,其中y为二分类标签{+1, -1}, 学习率(0 <  <=1);

      输出:w和b,感知机模型

      (1)选取初值w0,b0;

      (2)在训练集中随机选取一个样本点(xi,yi);

      (3)如果

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

       算法的直观解释:当一个样本点被误分类,即位于分离超平面的错误的一侧时,则调整w, b的值,使分离超平面想该误分类点的一侧移动,以减少该误分类点与超平面的距离,直到超平面越过该误分类点使其被正确分类。

    4 感知机学习算法的对偶形式

       在上一节算法中:

      是对w和b进行逐个修改,即每一个循环迭代就只更新了一次,为了加速算法的收敛,设修改了n次,则w和b的增量为,其中ni的意思是通过样本点i修改了ni次w和b,这里可以令。这样,从学习过程中就可以推导出最后学习到的w和b的值:

      其中,m是样本的总量,当=1时,表示第i个样本由于误分类而进行更新的次数。样本点更新次数越多,意味着它距离分离超平面越近,也就越难正确分类。换句话说,这样的样本对学习的结果影响很大。

      算法的执行步骤如下:

      输入:线性可分的数据集,其中y为二分类标签{+1, -1}, 学习率(0 <  <=1);

      输出:,b;感知机模型,其中

      (1)

      (2)在训练集中随机选取数据(xi, yi);

      (3)如果

      (4)转至(2)直到没有误分样本数据。

     

     (转载请注明出处,谢谢!)

     

     

     

  • 相关阅读:
    Mac下空格预览.webp格式图片
    stl 存放对象析构问题
    初始化成员列表 ——— 类的const成员和引用成员的初始化
    一个CString的实现 拷贝构造函数的应用
    operator 的两种用法
    MFC使用TRACKMOUSEEVENT触发mouseHover和mouseLeave
    MFC重载关闭按钮
    类内定义线程的回调函数问题
    按钮的Default Button属性
    匿名管道 远程cmd
  • 原文地址:https://www.cnblogs.com/swenwen/p/11078176.html
Copyright © 2020-2023  润新知