统计学习方法之感知机

在翻阅知乎时,得知李航所著的《统计学习方法》一书,于是就买了一本,看到CSDN上已有大牛都发了相关的博客,再次赘述就显得啰嗦了,就直接上干货吧,,自己用Matlab写的代码,和一些自己再看书时的小小的理解。
感知机是一种二类分类的线性模型模型,是一个将输入空间(特征空间)分成正负两类的分离超平面。它的更多文字简介可参考这篇博文,http://blog.csdn.net/qll125596718/article/details/8394186,里面已经讲的很详细了。
下面总结了一些自己的理解以及需要自己注意的地方,更加的利于我们去理解。
知机学习算法分为原始形式和对偶形式:
1、在原始形式中,权重w的维度与训练集中单个实例是一样的,它是通过误分类点不断的改变w的值,而在对偶形式中,w被表示为实例和每个实例的线性组合,在yita为1的前提下,其可表示为n个alfa,n是训练集中实例的个数。
2、因为二者的解太多了,所以需要加上相关的约束条件,于是便有了后面的svm。
例2.1的代码:
close all;
clear all;
clc;

x =[3 3  1; 
    4 3  1; 
    1 1 -1];
w=[0 0]'; b=0;
misPot=1;%只是让循环能够开始
while misPot~=0
    misPot=0;%每次循环后,记录误分类点的个数,并将其归零进行下一次记录
    for row_=1:row
        temp=x(row_,3)*(x(row_,1:2)*w+b);
        if temp<=0
            misPot=misPot+1;
            w=w+x(row_,1:2)'*x(row_,3); b=b+x(row_,3);
            disp('w_dq'),disp(w);
            disp('b_dq'),disp(b);
        end
    end
end
例2.2
close all;
clear all;
clc;
x =[3 3; 4 3; 1 1];
y=[1 1 -1];
alfa=zeros(1,3);
b=0;
yita=1;
[row,col]=size(x);
Gram=zeros(3,3);
for i=1:row
    for j=1:row
        Gram(i,j)=x(i,:)*x(j,:)';
    end
end
count=1;
while count~=0
    count=0;
    for i=1:row    
        temp=y(i)*(...
            alfa(1)*y(1)*Gram(1,i)+...
            alfa(2)*y(2)*Gram(2,i)+...
            alfa(3)*y(3)*Gram(3,i)+...
            b);
        
        if temp<=0
            count=count+1;
            alfa(i)=alfa(i)+yita;
            b=b+y(i);
        end
    end    
end
一些愚见奉上!


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值