浅谈感知机算法

来源:互联网 发布:java destroy方法 编辑:程序博客网 时间:2024/06/05 19:40

感知机是一种二分类算法,其输入的实例为一特征向量,输出的实例的实例类别只有+1,-1两个值。
感知机属于线性分类模型,是判别模型的一种。其原理是,通过训练集求出一个分离超平面,将正负样本进行分离。
谈到超平面,我们自然地就想到了到这个平面的距离,嘿嘿,没错,感知机的损失函数就是基于样本到超平面的距离来度量的

感知机概念及算法推导

先来看看,感知机函数:
这里写图片描述

f(x)表示最终预测的分类,w*x+b被称为感知机模型参数W被称作权值或权值向量,b叫做偏置,x表示输入的特征变量。
好啦,根据这个函数,我们要做的事情很简单,即确定函数参数来达到一个效果 —– 使正负样本在超平面两侧。白话的来说,让这个函数预测精确,即要达到下图效果。
这里写图片描述

那么,我们还得确定一个经验损失函数,来使经验损失最小化。因为有“距离”度量,损失函数定义为误分点到超平面S的总距离经验损失函数定义如下:
这里写图片描述

这里||w||表示的是 w的 L2范数,作用的防止过拟合。

有了损失函数,那么如何判别样本是否为误分点呢?我们知道输出的结果只有{+1,-1},如果样本被误分,必然有:
这里写图片描述

因此,我们可定义误分点到超平面S的距离为:
这里写图片描述

那么,所有误分点到超平面S的距离公式如下,其中M为误分点的集合
这里写图片描述

所以,损失函数L(w,b)最终可定义为:
这里写图片描述

自然,我们要求出损失函数的最小值minL(w,b)
这里写图片描述

这里,我们用到随机梯度下降法,即不断的对w和b求导,使函数沿着w和b最快的方向减小,直到损失函数L(w,b)不断减小直至为0。具体步骤如下:
这里写图片描述
随机选取一个误分类点(xi,yi),定义学习速率η,对w,b进行更新
这里写图片描述
综上所述,感知机算法如下(李航老师版《统计学习方法》定义)
这里写图片描述

感知机算法使用前提

到这里,感知机算法算是讲完啦,那么感知机算法使用前提是什么呢?对了,那就是数据集必须线性可分,否则无法使用,线性可分定义如下:

这里写图片描述

感知机和支持向量机的区别

感知机和支持向量机都是通过“距离”来对样本进行区分。它们的区别在于:
1. 感知机只支持线性可分数据集;而支持向量机有核函数,支持线性不可分的数据集
2. 感知机通过梯度下降法,求误分类样本到超平面的距离来确定参数的取值;支持向量机都过求超平面到样本的最大距离来确定参数的取值

小结:

感知机是基础的分类算法,很多算法都是从感知机中衍生出来的,比如支持向量机,神经网络等。其中,为了保证易懂,感知机的对偶性、损失函数的收敛性在本博客中没有讲述。建议大家通过其他博客进行了解,很有意思。在之后的博客中,会将对偶性和收敛性分别讲述,之后会贴出链接,欢迎大家参阅及批评指正。

参考

李航版 《统计学习方法》

原创粉丝点击