机器学习基础(5)-二分类问题与感知机模型
本文最后更新于:2 年前
感知机模型
感知机(perceptron)是一种二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取值为
感知机的模型如下。输入空间为
从几何上考虑,输入的
考虑机器学习的分类,感知机所属的类别为:
- 监督学习
- 非概率模型,线性模型
- 在线学习
感知机学习策略
确定了模型之后,需要确定策略,即定义(经验)损失函数并将损失函数最小化。
感知机的损失函数被定义为误分类点到超平面S的距离,任一点
感知机学习算法
感知机学习算法(Perceptron Learning Algorithm,PLA)具体包括原始形式和对偶形式。
原始形式
感知机学习算法是误分类驱动的,具体采用随机梯度下降法。首先仍选一个超平面,对应参数为
- 输入:训练数据集
;学习率 - 输出:参数
,结果感知机模型
首先选取初值
在训练集中选取数据
如果有
,则表示这个点是一个误分类的点,则进行如下的参数更新:重复执行步骤2,3,直到训练集中没有误分类的点
从直观上理解上面的算法,每次找到一个误分类的点,则调整参数
对偶形式
对偶形式的基本思想:将
首先我们可以考虑假设初值均为0,即
因此,对偶形式的感知机学习算法如下:
- 输入:训练数据集
;学习率 - 输出:参数
,结果感知机模型
首先选取初值
在训练集中选取数据
如果有
,则表示这个点是一个误分类的点,则进行如下的参数更新:重复执行步骤2,3,直到训练集中没有误分类的点
在上面的过程中,实例之间进行的操作仅有内积,因此可以预先将训练集中实例之间的内积计算出来并以矩阵的形式进行存储,我们可以通过index直接取值得到对应的内积结果。而这个矩阵就是所谓的Gram矩阵:
算法可行性
感知机算法能够发挥作用的前提是数据集线性可分。我们很容易知道,如果是线性不可分的数据集,我们是无法通过一个超平面进行划分的,从而感知机算法也无法发挥作用。不过感知机算法在线性可分的数据集上一定能够起效吗,下面就来正面感知机算法的可行性,即通过有限次的迭代,算法一定能够收敛。
这里为了方便叙述,可以将偏执
假设感知机在训练集上的误分类次数为k,那么我们需要证明的是k上界存在。
首先由于数据集线性可分,所以一定存在一个超平面
综合上面两个不等式(3)和(4),则有:
综上所述,感知机的误分类次数k是存在上界的,且上界为
感知机算法对于线性可分的数据集是有效的,但是如果想要在线性不可分的数据集上应用感知机算法,则需要对要求进行放宽。我们不强求对所有的实例点都满足正确分类,而是容忍有错误点,最终的模型应该让错误点的个数最少。不过这个问题是一个NP难问题。
我们将原始的感知机学习算法进行修改,称为Packet Algorithm。它的流程与PLA类似,每次对错误点进行修正。只不过在进行更新的时候,会计算当前分类错误点的个数,并与之前的结果进行比较,取效果更好的超平面作为当前选择。经过n次迭代之后,得到最终结果,这应该是一个相对较好的分离超平面。
Packet Algorithm是感知机算法应用在非线性可分数据集上的一种修改。但是如果两种算法都应用在线性可分的数据集上,Packet Algorithm的效率会低一些,因为它在每次迭代中都需要计算当前情况下所有的误分类点的个数,而原始感知机算法在每次迭代中只关注一个误分类点。