才疏学浅者的个人笔记
1 感知机的算法原理
给定数据集
\(T=\left \{(x_{1},y_{1}),(x_{2},y_{2}),...(x_{n},y_{n})\right \}\)
其中\(y= \left \{ +1,-1 \right \}\)
模型的目的是求得一个分离超平面
\(\mathbf{\omega \cdot x}+b=0\)
将数据集划分为两部分
对于正例样本,\(y_{i}=+1\), \(\mathbf{\omega \cdot x_{i}}+b> 0\)
对于负例样本,\(y_{i}=-1\),\(\mathbf{\omega \cdot x_{i}}+b< 0\)
2 感知机的损失函数
感知机的损失函数基于误分类的点进行定义。
首先,空间中任意一点x0 到超平面\(\mathbf{\omega \cdot x}+b=0\)的距离为
\(d= \frac{1}{\left \| \omega \right \|}\left | \omega \cdot x_{0} +b\right |\)
对于误分类的点xi,可以得知其满足
\(-y_{i}(\omega \cdot x_{i}+b)>0\)
所以,点xi到分离超平面的距离为 (推导见文末)
\(-\frac{1}{\left \| \omega \right \|}y_{i}\left ( \omega \cdot x_{i} +b\right )\)
假设M为误分类点的集合,那么所有误分类点到超平面的距离和为
\( -\frac{1}{\left \| \omega \right \|}\sum\limits_{x_{i}\in M} y_{i}\left ( \omega \cdot x_{i} +b\right )\)
不考虑\( \frac{1}{\left \| \omega \right \|}\),则得到感知机的损失函数
\(L(\omega ,b)=-\sum\limits_{x_{i}\in M}y_{i}(\omega \cdot x_{i}+b)\)
3 感知机模型的优化
感知机模型的优化使用随机梯度下降法,随机选择一个被错误分类的点,对\(\omega \)和b进行更新,使得损失函数不断减小,直至没有误分类的点
具体如下:
感知机模型:\(f(x)= sign(\omega \cdot x+b)\)
(1) 初始化\(\omega \)和b
(2) 随机选择一点\((x_{i},y_{i})\)
(3) 如果\(y_{i}(\omega \cdot x_{i}+b) \leq 0\),更新\(\omega \)和b:
\(\omega = \omega + \eta y_{i}x_{i}\)
\(b = b + \eta y_{i}\)
更新规则由损失函数分别对\(\omega \)和b求偏导得到:
\(\frac{\partial L}{\partial \omega }= - \sum\limits_{x\in M}y_{i}x_{i}\)
\(\frac{\partial L}{\partial b }= - \sum\limits_{x\in M}y_{i}\)
其中\(\eta \)为学习率,更新完成后,得到新的分离超平面
(4) 重复步骤(2),(3)直至没有被误分类的点
4 感知机的对偶算法
对偶形式的基本思想是,,将w和b标记为实例点(xi,yi)的线性组合的形式,通过求解系数得到w,b
根据原始算法中\(\omega \)和b的更新方式,假设\((x_{i},y_{i})\)在更新中学习了ni 次,且\(\omega \)和b均初始化为0,N为样本的总个数那么:
\(\omega = \sum\limits_{i=1}^{N}\eta n_{i}y_{i}x_{i}\)
\(b = \sum\limits_{i=1}^{N}\eta n_{i}y_{i}\)
令\(a_{i} = \eta n_{i}\):
\(\omega = \sum\limits_{i=1}^{N}a_{i}y_{i}x_{i}\)
\(b = \sum\limits_{i=1}^{N}a_{i}y_{i}\)
感知机对偶形式:\(f(x) = sign(\sum\limits_{j=1}^{N}a_{j}y_{j}x_{j}\cdot x+b)\)
(1) 初始化 a,b 为0
(2) 随机选择点\((x_{i},y_{i})\)
(3) 如果\(y_{i}(\sum\limits_{j=1}^{N}a_{j}y_{j}x_{j}\cdot x_{i}+b)\leq 0\),更新ai和bi
\(a_{i}= a_{i}+\eta \) (如不理解可以对比原始形式中\(\omega\)的更新方式)
\(b_{i}= b_{i}+\eta y_{i}\)
(4) 重复(2),(3)直至没有被误分类的点
对偶算法的优势在于,训练实例以内积的形式出现,可以提前把实例间的内积计算出来并以矩阵的形式存储(Gram矩阵),在进行模型优化时,直接从矩阵中取值即可
5 算法的特点
(1) 不能处理线性不可分的数据
(2) 对线性可分的数据必定收敛(证明参考《统计学习方法》)
(3) 初始化不同,得到的分离超平面可能不同
附 点到平面距离的推导(仅仅为其中一种方法)
假设平面为\(\omega \cdot x +b=0\),点x0在平面上的投影为x1,x0到平面的距离为d,公式中的上标不是幂函数,而是表示点在每个轴上的坐标
\(\left | \omega \cdot x_{0}x_{1} \right |=\left | \omega \right |\cdot \left | x_{0}x_{1} \right |=\sqrt{(\omega^{1})^{2}+(\omega ^{2})^{2}+...+(\omega^{n})^{2}}d=\left \| \omega \right \|d\)
\(\omega \cdot x_{0}x_{1} = \omega ^{1}\left ( x_{0}^{1} -x_{1}^{1}\right )+\omega ^{2}(x_{0}^{2}-x_{1}^{2})+...+\omega ^{n}(x_{0}^{n}-x_{1}^{n})\)
\(=\omega ^{1}x_{0}^{1}+\omega ^{2}x_{0}^{2}+...+\omega ^{n}x_{0}^{n}-(\omega ^{1}x_{1}^{1}+\omega ^{2}x_{1}^{2}+...+\omega ^{n}x_{1}^{n})\)
\(=\omega \cdot x_{0}+b\)
所以:\(d = \frac{1}{\left \| \omega \right \|}\left | \omega \cdot x_{0}+b \right |\)
参考资料:
《统计学习方法》,李航著