版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/KevinBetterQ/article/details/84331696
1. 一句话介绍感知机
· 一个二分类的线性分类模型。
· 感知机学习旨在求出将训练集数据进行线性划分的分类超平面,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得模型。
· 分为原始形式和对偶形式。
2. 模型介绍(原始形式)
前提:数据集要求线性可分性
- 模型:
f(x)=sign(wx+b)
其中,sign(x)={+1,−1x⩾0x<0
- 损失函数(学习策略)
损失函数,误分类点到超平面的“函数间隔”和:
L(w,b)=−xi∈M∑yi(wxi+b)其中,
M为误分类的集合。
函数间隔待了解
(Q1:什么是函数间隔,和几何间隔的区别)
- 随机梯度下降(学习算法)
随机梯度下降法,最小化损失函数
L(w,b)
梯度:
▽wL(w,b)=−xi∈M∑yixi
▽bL(w,b)=−xi∈M∑yi
随机选取一个数据点
(xi,yi),判断其是否误分类,也就是判断
yi⋅(wx+b)<0与否
若
yif(x)<0,对
w,b 进行更新:
w←w+ηyixi
b←b+ηyi其中,
η为学习率。
感知机学习算法是误分类驱动的,这样,因为数据线性可分,通过迭代可以直至训练集中没有误分类点。
3. 感知机的对偶形式
- 模型:
将训练集
{(x1,y1)(x2,y2)…(xi,yi)}全部代入进行随机下降,若第 i 个样本用的次数为
ni ,则最后训练出的
w和
b:
w=i=1∑Nniηyixi
b=i=1∑Nniηyi
将
w 和
b 带入感知机原始形式得对偶形式:
f(x)=sign(j=1∑Nnjηyjxj⋅x+j=1∑Nnjηyj)
此时,参数就由
w 和
b ,变为了
n1,n2…nN
所以要求 f(x) ,就要求出
ni
- 策略:
从训练集中选数据,直到没有误分类点
- 算法:
从训练集中选数据,直到没有误分类点
1)初始化
∀ni=0
2)在训练集选数据
(xi,yi)
3)若
yi⋅(∑j=1Nnjηyjxj⋅xi+∑j=1Nnjηyj)<0,代表分错了,更新
ni=ni+1
4)转到2直到没有误分类数据
为何会有对偶形式?(对偶形式的好处):
对偶形式的目的是降低运算量,但是并不是在任何情况下都能降低运算量,而是在特征空间的维度很高时才起到作用。
设样本特征维度为n,样本数量为m,m相对于n很小,也就是特征维度很高:
首先考虑原始的感知机学习算法,每一轮迭代至少要判断某个输入实例是不是误判点,也就是要计算 是否
yi⋅(wx+b)<0。这里的运算量主要集中在
wx的内积计算上,时间复杂度为
O(m),由于特征维度m很大,所以会很慢。
在对偶形式的学习算法中,判断输入实例
(xi,yi)是否误判的条件变换为
yi⋅(∑j=1Nnjηyjxj⋅xi+∑j=1Nnjηyj)<0。可以看到这里所有的输入实例都仅仅以内积的形式
xjxi 出现,可以预先计算输入实例两两之间的内积,得到所谓的Gram矩阵
G=[xixj]N∗N,这样一来,每次误判检测时直接在Gram矩阵里查表就能拿到内积
xjxi ,所以这个误判检测的时间复杂度是
O(n)
可以看出,对偶形式的感知机,把每轮迭代的时间复杂度的从特征维度m转移到了训练集大小n上,那么对于维度非常高的空间,运算量自然就降低了。
参考:
1.《统计学习方法》李航
2. 知乎回答:如何理解感知机学习算法的对偶形式