林轩田机器学习基石课程个人笔记-第二讲

本文深入讲解感知机模型,包括其在信用卡审批等场景的应用,以及如何通过调整权重进行分类。探讨了感知机模型的线性分类原理,以及如何在数据线性可分的情况下,通过不断修正权重实现对数据的正确分类。

第二讲学习一个很基本的模型:感知机模型(Percenptron)


在这里插入图片描述

为了更好的理解感知机模型,首先举一个例子:当我们去银行申请信用卡的时候,通常需要填写一些相关的信息,然后银行审查后会决定是否发放。常用的信息有如下几种:

  • 年龄、性别
  • 工作年限
  • 目前收入
  • 信用情况
  • ……

    在这里插入图片描述

那么有了上述的信息后,银行如何来决定是否放发信用卡呢?其中一种简单的做法就是对于每一个数据赋予一个权重www,然后求加权和∑i=1dwixi\sum_{i = 1}^d w_i x_ii=1dwixi,判断结果和我们设置的阈值的大小关系。如果大于阈值,发放,否则不予发放。


在这里插入图片描述

我们也可以使用sign(x)来将结果二值化,+1表示可以,-1表示否决。


在这里插入图片描述

如果h(x)h(x)h(x)进行一个转化,将其写成WWW的转置和XXX向量相乘的形式


在这里插入图片描述

假设数据分布如下图所示,特征xxx表现在二维平面上就是一系列的点,标签就是o和×,表示前面提到的+1和-1。而我们所作出的假设h(x)h(x)h(x)就是图中的线,目标就是找到一个可以正确对图中的点进行划分的线。


在这里插入图片描述
在这里插入图片描述

感知机模型在这里也可以认为是一种二分类的线性模型。


在这里插入图片描述

既然我们的目标是找到一条最好的划分的线,换言之,我们做的很多的假设都可以取得想要的结果,但是如何在假设集中找到最接近于fffggg


在这里插入图片描述

但是最优的ggg是很难直接获取到的,因为用于分个数据点的直线稍微移动一点就是一条不同的线,那么理论上ggg有无限多个。因此,因此寻找最优ggg的过程就是不断优化ggg和真实fff之间误差的过程。


在这里插入图片描述

那么应该怎么去做呢?既然我们无法一次性找到最好的,我们这里采用逐点修正的方法,随机的从一个gig_{i}gi开始,不断地调整来到达最好的ggg


在这里插入图片描述

感知机模型是怎么做的?首先随机选择一条直线进行分类,然后找到第一个分类错误的点,如果这个点表示正类,被误分为负类,即乘积<0,那表示wwwxxx夹角大于90度,其中www是直线的法向量。所以,xxx误分在直线的下侧(相对于法向量,法向量的方向即为正类所在的一侧),修正的方法就是使wwwxxx夹角小于90度。通常做法是,W←W+YX,Y=1W \leftarrow W+YX,Y=1WW+YX,Y=1,如图右上角所示,一次或多次更新后的W+YXW+YXW+YXxxx夹角小于90度,能保证xxx位于直线的上侧,则对误分为负类的错误点完成了直线修正。

同理,如果是误分为正类的点,即乘积>0,那表示wwwxxx夹角小于90度,xxx被误分在直线的上侧,修正的方法就是使wwwxxx夹角大于90度。通常做法是W←W+YX,Y=−1W \leftarrow W+YX,Y=-1WW+YX,Y=1,如图右下角所示,一次或多次更新后的W+YXW+YXW+YXxxx夹角大于90度,能保证xxx位于直线的下侧,则对误分为正类的错误点也完成了直线修正。

按照这种思想,遇到个错误点就进行修正,不断迭代。实际操作中,可以一个点一个点地遍历,发现分类错误的点就进行修正,直到所有点全部分类正确。这种被称为Cyclic PLA。


在这里插入图片描述

每次修正直线,可能使之前分类正确的点变成错误点,这是可能发生的。但是没关系,不断迭代,不断修正,最终会将所有点完全正确分类(PLA前提是线性可分的)。

具体的过程示例如下:


在这里插入图片描述

那么在这个过程中就会有两个问题:

  • 算法迭代一定会停下吗?
  • 如果停下了是否一定有g接近于f?在其中的过程中是否有接近于f的g存在呢?

那么PLA什么时候会停下来呢?根据PLA的定义,当找到一条直线,能将所有平面上的点都分类正确,那么PLA就停止了。要达到这个终止条件,就必须保证D是线性可分(linear separable)。如果是非线性可分的,那么PLA就不会停止。


在这里插入图片描述

对于线性可分的情况,如果有这样一条直线,能够将正类和负类完全分开,令这时候的目标权重为WfW_fWf,则对每个点,必然满足Yn=sign(WfTXn)Y_n=sign(W_f^TX_n)Yn=sign(WfTXn),即对任一点:

在这里插入图片描述
PLA会对每次错误的点进行修正,更新权重Wt+1W_{t+1}Wt+1的值,如果Wt+1W_{t+1}Wt+1WfW_fWf越来越接近,数学运算上就是内积越大,那表示Wt+1W_{t+1}Wt+1是在接近目标权重WfW_fWf,证明PLA是有学习效果的。所以,我们来计算Wt+1W_{t+1}Wt+1WfW_fWf的内积:

在这里插入图片描述
从推导可以看出, Wt+1W_{t+1}Wt+1WfW_fWf的内积跟与的内积相比更大了。似乎说明了Wt+1W_{t+1}Wt+1更接近WfW_fWf,但是内积更大,可能是向量长度更大了,不一定是向量间角度更小。所以,下一步,我们还需要证明Wt+1W_{t+1}Wt+1WfW_fWf向量长度的关系:


在这里插入图片描述

WtW_tWt只会在分类错误的情况下更新,最终得到的∣∣Wt+12∣∣||W_{t+1}^2||Wt+12相比∣∣Wt2∣∣||W_t^2||Wt2的增量值不超过max⁡∣∣Xn2∣∣\max ||X_n^2||maxXn2。也就是说, WtW_tWt的增长被限制了, Wt+1W_{t+1}Wt+1WtW_tWt向量长度不会差别太大!如果令初始权值W0=0W_0=0W0=0,那么经过T次错误修正后,有如下结论:


在这里插入图片描述

上一部分,我们证明了线性可分的情况下,PLA是可以停下来并正确分类的。但对于非线性可分的情况, PLA不一定会停下来。


在这里插入图片描述

对于非线性可分的情况,我们可以把它当成是数据集D包含有noise的情况。事实上,大多数情况下我们遇到的数据集都或多或少地掺杂了noise。


在这里插入图片描述

在非线性情况下,我们可以把条件放松,即不苛求每个点都分类正确,容忍有错误点,取错误点的个数最少时的权重www


在这里插入图片描述

事实证明,上面的解是Np−hardNp-hardNphard问题,难以求解。然而,我们可以对在线性可分类型中表现很好的PLA做个修改,把它应用到非线性可分类型中,获得近似最好的g。修改后的PLA称为Packet Algorithm。它的算法流程与PLA基本类似,首先初始化权重,计算出在这条初始化的直线中,分类错误点的个数。然后对错误点进行修正,更新www,得到一条新的直线,在计算其对应的分类错误的点的个数,并与之前错误点个数比较,取个数较小的直线作为我们当前选择的分类直线。之后,再经过n次迭代,不断比较当前分类错误点个数与之前最少的错误点个数比较,选择最小的值保存。直到迭代次数完成后,选取个数最少的直线对应的www,即为我们最终想要得到的权重值。


在这里插入图片描述

如何判断数据集D是不是线性可分?对于二维数据来说,通常还是通过肉眼观察来判断的。一般情况下,Pocket Algorithm要比PLA速度慢一些。


总结


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值