《统计学习方法》李航_学习笔记_第2章_感知机
来源:互联网 发布:开淘宝店技巧 编辑:程序博客网 时间:2024/05/16 01:06
第2章 感知机
感知机(perception)是一种二类分类的线性分类模型
输入:实例的特征向量
输出:实例的类别(+1,-1)
感知机:输入空间中将实例划分为正负两类的分离超平面,属于判别模型
感知机学习
目的:求出将训练数据进行线性划分的分离超平面
方法:导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型
2.1感知机模型
感知机:f(x)=sign(w⋅x+b)
其中:
w为权值(或权值向量weight vector)
b为偏值(bias)
sign为符号函数sign(x)={+1−1x >= 0x<0 2.2感知机学习策略
数据集线性可分:存在某个超平面S能够将数据集T的正负实例点完全正确地划分到超平面的两侧,即:
对所有yi=+1 的实例,有w⋅xi+b>0
对所有yi=−1 的实例,有w⋅xi+b<0
则称数据集T为线性可分数据集。
损失函数的选择:
(1:误分类点总数,该函数不是参数w,b的连续可导函数,不易优化)
2:误分类点到超平面S的总距离L(w,b)=−∑xiϵMyi(w⋅xi+b)
损失函数是非负的,如果没有误分类点,损失函数值为0。
误分类点越少,误分类点离超平面越近,损失函数值就越小,损失函数是w,b的连续可导函数。2.3感知机学习算法
原始形式、对偶形式
随机梯度下降法:
任意选取一个超平面w0 ,b0 ,利用梯度下降法不断极小化目标函数(极小化的过程是一次随机选取一个误分类点使其梯度下降)
随机选取误分类点(xi,yi) ,对w,b进行更新:w=w+ηyixi b=b+ηyi
其中,η(0<η≤1) 为步长(学习率)
通过迭代可使损失函数L(w,b) 不断减小,直至0
1.原始形式
(1)选取初值
(2)在训练集中选取数据
(3)如果
(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 endend
测试:
TrainSet=[1,1,-1 %正负点y值 3,4,1 3,3,1];learning_rate=1;[w,b]=perception(TrainSet,learning_rate)
感知机学习算法存在许多解,因初值的选择和迭代过程中误分类点选择顺序的不同而不同。
为了得到唯一的超平面,需要对分离超平面增加约束条件 (线性支持向量机)。
当训练集线性不可分时,感知机学习算法不收敛,迭代结果会发生震荡。
0 0
- 《统计学习方法》李航_学习笔记_第2章_感知机
- 《统计学习方法》李航_学习笔记_第3章_k近邻法
- 统计学习方法学习笔记2:感知机
- 统计学习方法 第2章 感知机
- 统计学习方法 李航---第2章 感知机
- 第一章统计学习方法概论_李航
- 统计学习方法_读书笔记_10章_HMM
- 《统计学习方法》-感知机模型学习笔记
- 《统计学习方法》学习笔记-感知机
- 第二章 感知机_李航
- 【统计学习方法】第2章 感知机(Perceptron)
- 统计学习方法 第2章+ 感知机python实现
- 《李航:统计学习方法》笔记之感知机
- 《李航:统计学习方法》笔记之感知机
- 《统计学习方法》笔记(2):感知机
- 统计学习方法笔记2--感知机
- 人工神经网路学习笔记_感知机_前馈网络
- 第一天学习_笔记
- 解决wsimport 带https协议wdsl 时报错的处理 (解决mac系统默认不开启1024以下端口权限问题 )
- 出现Building an MFC project for a non-Unicode character set is deprecated不用怕一招解决
- 记部署javaxian项目到linux服务器
- googLeNet--Inception四部曲三Rethinking the Inception Architecture for Computer Vision
- Android的跨进程通信介绍----------------aidl,传递复杂对象以及Server和Clicent之间的回调
- 《统计学习方法》李航_学习笔记_第2章_感知机
- cocos2dx从服务器下载文件操作
- 27. Remove Element 难度:easy
- Qt框架浅析之二 ------ d指针
- Mysql常用命令(二)
- c++学习路线
- Android 集成友盟分享(集成了微信,微信朋友圈,QQ,QQ空间,新浪,豆瓣,需要加,自己去官网导入包)
- 441. Arranging Coins
- python总结小计