感知机算法

才疏学浅者的个人笔记

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 |\)

参考资料:

  《统计学习方法》,李航著

转载于:https://www.cnblogs.com/wenqinchao/p/9668621.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值