《统计学习方法》第二章

2.1 感知机

        感知机二类分类的线形分类模型,输入为实例的特征向量,输出为实例的类别,取+1和-1值

        感知机对应输入空间中将势力划分为正负两类的线形划分的分离超平面,属于判别模型

        

        定义:假设输入空间(特征空间)是X\subseteq R^{n},输出空间是Y=\left \{ +1,-1 \right \},输入x\subseteq X表示实例的特征向量,对应输入空间(特征空间)的点;输出y\subseteq Y表示实例的类别,由输入空间到输出空间的如下函数:

f(x)=sign(w*x+b)

        其中w是超平面的发向量,b是超平面的截距,书上把w称为权值向量,b称为偏置,w*x表示内积

sign(x)=\begin{cases} +1 & \text{ if } x\geqslant 0 \\ -1 & \text{ if } x< 0 \end{cases}

        所以唯一影响超平面的就是w和b两个未知量了,我们求模型,也是求模型参数w和b使得二分类正确

2.2 感知机的学习策略

        首先定义好怎样才是分类正确了

        如果是正实例点x_{i},要求w*x_{I}+b > 0

        如果是负实例点x_{i},要求w*x_{I}+b < 0

        如果是w*x_{I}+b=0,则这个点刚好落在了平面上

        接着我们选择损失函数,将误分类点到超平面S的总距离当作损失函数

        接着定义输入空间中任意一点x_{0} 到超平面S的距离为\frac{1}{\left \| w \right \|} \left | w*x_{0}+b \right |

        所以,假设误分类点集合M,那么所有误分类点到超平面的总距离为:

        -\frac {1}{\left \| w \right \|}\sum_{x_{i}\subseteq M}^{}y_{i}(w*x_{i}+b)

        因为对于误分类点来说,y_{I}(w*x_{I}+b)<0

        于是损失函数被定义为L(w,b)=-\sum_{x_{i}\subseteq M}^{}y_{i}(w*x_{i}+b) 是一个经验风险函数

        现在感知机的问题就转化为损失函数的最优解问题,我们肯定要求损失函数的最小值,采用的策略是随机梯度下降

        于是损失函数的梯度:\bigtriangledown_wL(w,b)=-\sum_{x_{i}\in M}y_{i}x_{i}\bigtriangledown_bL(w,b)=-\sum_{x_{i}\in M}y_{i} 分别对wb求导

        对应的更新策略w\leftarrow w+\eta y_{i}x_{i} 和 b\leftarrow b+\eta y_{i},其中\eta 是学习率

        Summary:

        (1)选取超平面的两个参数的初值

        (2)根据随机梯度下降的做法,选取一个点做距离判断,如果满足y_{i}(w*x_{i}+b)<0,就代表这个点在当前超平面分错了。根据更新策略对w和b进行更新

        (3)再次判断下一个点,走到(2)直到没有错误分类点出现

        就是每一个样本有N个特征表示,那么w这个权值向量就有N个维度

        但是感知机会有 当我们选取参数初始值不同/选取点不同的情况,那么最后出来的超平面也会不一样

2.3 算法的收敛性

        就是为了证明经过有限次迭代后,我们可以找到一个超平面可以完全正确地划分数据

        主要是用了Novikoff定理,证明了如下结论,这里太多了,略略略

2.4 感知机学习算法的对偶形式

        因为用原始形式的话,每次更新都要计算一下,当样本特征比较大的时候,速度后很慢,所以我们打算将两个参数w和b给以x和y的线形组合形式表示出来,换句话说就是用x和y的线形组合形式表示w和b。

        我们观看原始形式w和b的更新方式,是用当前点的梯度乘以学习率得到的,也就是每当有一个错误点,就把这个点代入进更新公式内,所以其实也就是我们知道每个点错误了多少次,就可以知道最终w和b的表达式了,于是我们引进了一个新的参数N,这里表示当前点因为被判错误分类的次数,于是我们可以得到一个新的w和b的表达式

    w= \sum_{i=1}^{N}a_{i}y_{i}x_{i}

b=\sum_{i=1}^{N}a_{i}y_{i}

        这里的a_{i}=n_{i}\eta,当学习率=1,表示当前第i个点因为分错了而被送去更新参数的次数

        这里a_{i}越高,意味着这个点啊,经常被分错,也就是非常难以把握好,所以就是越接近超平面

        所以我们的感知机模型也变成了f(x)=sign(\sum_{j=1}^{N}a_{j}y_{j}x_{j}*x+b)a=\left ( a_{1},a_{2}......a_{n} \right )^{T}

        也就是说,有多少个点,就对应a向量都有多长

        与此同时我们判断是不是分错了的公式也变成y_{i}(\sum_{j=1}^{N}a_{j}y_{j}x_{j}*x_{I}+b)\leq 0

        summary:

        (1)初始化a向量(里面的值都是0),b=0

        (2)在训练集中选取数据(x_{i},y_{i})        

        (3)如果y_{i}(\sum_{j=1}^{N}a_{j}y_{j}x_{j}*x_{I}+b)\leq 0

                则代表当前点就是被误分类了,对应的a_{i} 要加1

a_{i}\leftarrow a_{i}+\eta

b\leftarrow b+\eta y_{i}

为什么这里只加\eta呢?因为a_{j}是跟点挂钩的,所以错误多一个,就增加多一个\eta,后面总更新w的时候我们就直接让\eta乘对应的点就完事了

除此之外,我们还发现在第三步过程中,公式里面的y_{j}x_{j}(内积)是我们训练集的数据,所以我们在开始计算感知机的时候,就可以先把这个内积矩阵给计算出来,我们把这个矩阵称为Gram矩阵G=\left [ x_{i}*x_{j} \right ]_{N*N}

        

      

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值