感知机可以说是最古老的分类方法之一了,在1957年就已经提出。今天看来它的分类模型在大多数时候泛化能力不强,但是它的原理却值得好好研究。因为研究透了感知机模型,学习支持向量机的话会降低不少难度。
在机器学习中,泛化(Generalization) 指的是模型对新数据的适应能力,即模型在训练数据上学到的规律能否很好地应用到未见过的测试数据上。
泛化的具体含义
- 如果一个模型泛化能力强,说明它不仅能很好地拟合训练数据,还能对新数据做出准确的预测。
- 如果一个模型泛化能力弱,它可能在训练数据上表现很好,但在测试数据上表现很差,通常是过拟合的表现。
1. 感知机模型
感知机的思想很简单,比如我们在一个平台上有很多的男孩女孩,感知机的模型就是尝试找到一条直线,能够把所有的男孩和女孩隔离开。放到三维空间或者更高维的空间,感知机的模型就是尝试找到一个超平面,能够把所有的二元类别隔离开。
当然你会问,如果我们找不到这么一条直线的话怎么办?找不到的话那就意味着类别线性不可分,也就意味着感知机模型不适合你的数据的分类。
使用感知机一个最大的前提,就是数据是线性可分的。这严重限制了感知机的使用场景。
2. 损失函数
其中M是所有误分类的点的集合。这个损失函数可以用梯度下降法或者拟牛顿法来解决,常用的是梯度下降法。
但是用普通的基于所有样本的梯度和的均值的批量梯度下降法(BGD)是行不通的,原因在于我们的损失函数里面有限定,只有误分类的M集合里面的样本才能参与损失函数的优化。所以我们不能用最普通的批量梯度下降,只能采用随机梯度下降(SGD)或者小批量梯度下降(MBGD)
感知机模型选择的是采用随机梯度下降,这意味着我们每次仅仅需要使用一个误分类的点来更新梯度。