《统计学习方法》李航_学习笔记_第2章_感知机

第2章 感知机

感知机(perception)是一种二类分类线性分类模型
输入:实例的特征向量
输出:实例的类别(+1,-1)
感知机:输入空间中将实例划分为正负两类的分离超平面,属于判别模型
感知机学习
目的:求出将训练数据进行线性划分的分离超平面
方法:导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型

  • 2.1感知机模型
    感知机:
    f ( x ) = s i g n ( w ⋅ x + b ) f(x)=sign(w·x+b) f(x)=sign(wx+b)
    其中:
    w为权值(或权值向量weight vector)
    b为偏值(bias)
    sign为符号函数
    s i g n ( x ) = { + 1 x &gt;= 0 − 1 x&lt;0 sign(x)= \begin{cases} +1&amp; \text{x &gt;= 0}\\ -1&amp; \text{x&lt;0} \end{cases} sign(x)={+11x >= 0x<0

  • 2.2感知机学习策略
    数据集线性可分:存在某个超平面S能够将数据集T的正负实例点完全正确地划分到超平面的两侧,即:
    对所有 y i = + 1 y_{i}=+1 yi=+1的实例,有 w ⋅ x i + b &gt; 0 w·x_{i}+b&gt;0 wxi+b>0
    对所有 y i = − 1 y_{i}= -1 yi=1的实例,有 w ⋅ x i + b &lt; 0 w·x_{i}+b&lt;0 wxi+b<0
    则称数据集T为线性可分数据集。
    损失函数的选择:
    (1:误分类点总数,该函数不是参数w,b的连续可导函数,不易优化)
    2:误分类点到超平面S的总距离
    L ( w , b ) = − ∑ x i ϵ M y i ( w ⋅ x i + b ) L(w,b)=-\sum_{x_{i}\epsilon M}y_{i}(w·x_{i}+b) L(w,b)=xiϵMyi(wxi+b)
    损失函数是非负的,如果没有误分类点,损失函数值为0。
    误分类点越少,误分类点离超平面越近,损失函数值就越小,损失函数是w,b的连续可导函数。

  • 2.3感知机学习算法
    原始形式、对偶形式
    随机梯度下降法:
    任意选取一个超平面 w 0 w_{0} w0, b 0 b_{0} b0,利用梯度下降法不断极小化目标函数(极小化的过程是一次随机选取一个误分类点使其梯度下降)
    随机选取误分类点 ( x i , y i ) (x_{i},y_{i}) (xi,yi),对w,b进行更新:
    w = w + η y i x i w=w+\eta y_{i}x_{i} w=w+ηyixi b = b + η y i b=b+\eta y_{i} b=b+ηyi
    其中, η ( 0 &lt; η ≤ 1 ) \eta(0&lt;\eta \leq1) η(0<η1)为步长(学习率)
    通过迭代可使损失函数 L ( w , b ) L(w,b) L(w,b)不断减小,直至0

1.原始形式
(1)选取初值 w 0 , b 0 w_{0},b_{0} w0,b0
(2)在训练集中选取数据 ( x i , y i ) (x_{i},y_{i}) (xi,yi)
(3)如果 y i ( w ⋅ x i + b ) ≤ 0 y_{i}(w·x_{i}+b)\leq 0 yi(wxi+b)0
w = w + η y i x i w=w+\eta y_{i}x_{i} w=w+ηyixi b = b + η y i b=b+\eta y_{i} b=b+ηyi
(4)转至(2),直至训练集中没有误分类点

  • matlab实现代码:
function [w,b]=perception(TrainSet,learning_rate)
[M,N]=size(TrainSet);
%(1)设定初值
w=zeros(M-1,1),b=0;
count=0;
iter=0;
%(2)在训练集中选取数据
fprintf('迭代次数\t\t误分类点\t\t\tw\t\t\tb\t\n');
while count~=N
    count=0;
    for i=1:N
        count=count+1;
        x=TrainSet(2:M,i);
        y=TrainSet(1,i);
        if (w'*x+b)*y<=0  %注意是求w的转置矩阵和x的点积
            w=w+learning_rate*y*x;
            b=b+learning_rate*y;
            count=count-1;
            iter=iter+1;
            fprintf('\t%u\t',iter);%输出迭代次数  
            fprintf('\t\t%u\t',i);%输出误分类点  
            fprintf('\t(%2.1g,%2.1g)''\t',w);%输出w  
            fprintf('%4.1g\n',b);%输出b  
            break;
        end
    end
end

测试:

TrainSet=[1,1,-1  %正负点y值
          3,4,1
          3,3,1];
learning_rate=1;
[w,b]=perception(TrainSet,learning_rate)

感知机学习算法存在许多解,因初值的选择和迭代过程中误分类点选择顺序的不同而不同。
为了得到唯一的超平面,需要对分离超平面增加约束条件 (线性支持向量机)。

当训练集线性不可分时,感知机学习算法不收敛,迭代结果会发生震荡。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值