整理:统计学习-2 感知机
2016-03-08 20:54
211 查看
感知机是线性分类器,属于判别模型。在二维空间里,感知机模型就是一条直线,f(x)=a·x+b,a就是该直线超平面的法向量,b就是截距。需要注意的是,这里a·x是内积,比如一个输入是x=(x1,x2,x3),那么a=(a1,a2,a3),a·x=a1x1+a2x2+a3x3,一定要转换思维。形象的看:
感知机的作用就是对输入的点分类,看它是属于正类还是负类,所以就用到符号函数,f(x)=sign(w·x+b),f(x)只有两种情况,正类或负类。
策略
定义:数据集的线性可分性
给定一个数据集
T={(x1,y1),(x2,y2),...,(xn,yn)},其中xi属于输入特征空间即实数空间,yi属于输出空间{+1,-1},i=1,2,...N,如果存在某个超平面S
w·x+b=0
能够将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,即对所有yi=+1的实例i,有w·x+b>0,对所有yi=-1的实例 i,有w·x+b<0,则称数据集T为线性可分数据集。否则为线性不可分。
当然,感知机学习的数据都是线性可分的。感知机的学习策略同样用到损失函数,这里的思路是评价错误分类点到超平面的总距离,如果这个距离越小,那么这个分类器效果越好。首先,某一点到超平面S的距离为:
(1/||w||) |w·x+b|,如果该点被误分类,那么输出y就=-1,此时误分类点的距离就可以表示为: -y(1/||w||) (w·x+b),那么我们就可以得到损失函数,即所有误分类点到超平面的距离和(可以去掉w的模,以简化计算):
那么我们后面的任务就是要把这个损失函数即经验风险函数最小化。
算法
原始形式
根据上一篇的储备知识,我们利用梯度下降法来求上面损失函数的最小情况。
对L求w和b的梯度很好求,
然后就是不断迭代直到w,b的结果不会产生误分类点:
1、选取初值 w0,b0;
2、在训练集中选取数据(xi,yi);
3、如果yi(w·xi+b)<=0,
另 w <- w+nyixi, b<-b+nyi
4、转至2,直至无误分类点。
这里的n是学习率,就是梯度下降法里的步长。这种算法实现简单,也比较直观,称为感知机的原始算法。
对偶形式
感知机算法的对偶形式和原始形式相对应,主要思想就是
将参数w和b表示为实例xi和标记yi的线性组合形式,通过求解其系数而求得w和b。
我们从w <- w+nyixi, b<-b+nyi ,可以将w和b归纳为 w=sigma(ai yi xi),b=sigma(ai yi),i=1,2,...,N。如果我们将步长设为1,那么ai就表示第i个实例点由于误分类而进行的更新次数。实例点更新次数越多,说明它离超平面越近,也就越难分类。
对偶形式的算法步骤因为符号函数改变,f(x)=sign(sigma(aj yj xj ·xi+b)),而在第3步更新时变为:
ai <- ai+n
b<- b+nyi
对偶形式其实是使原始形式的计算更加简便了,我们可以事先计算出xi和xj的内积,这样迭代更快。
感知机的作用就是对输入的点分类,看它是属于正类还是负类,所以就用到符号函数,f(x)=sign(w·x+b),f(x)只有两种情况,正类或负类。
策略
定义:数据集的线性可分性
给定一个数据集
T={(x1,y1),(x2,y2),...,(xn,yn)},其中xi属于输入特征空间即实数空间,yi属于输出空间{+1,-1},i=1,2,...N,如果存在某个超平面S
w·x+b=0
能够将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,即对所有yi=+1的实例i,有w·x+b>0,对所有yi=-1的实例 i,有w·x+b<0,则称数据集T为线性可分数据集。否则为线性不可分。
当然,感知机学习的数据都是线性可分的。感知机的学习策略同样用到损失函数,这里的思路是评价错误分类点到超平面的总距离,如果这个距离越小,那么这个分类器效果越好。首先,某一点到超平面S的距离为:
(1/||w||) |w·x+b|,如果该点被误分类,那么输出y就=-1,此时误分类点的距离就可以表示为: -y(1/||w||) (w·x+b),那么我们就可以得到损失函数,即所有误分类点到超平面的距离和(可以去掉w的模,以简化计算):
那么我们后面的任务就是要把这个损失函数即经验风险函数最小化。
算法
原始形式
根据上一篇的储备知识,我们利用梯度下降法来求上面损失函数的最小情况。
对L求w和b的梯度很好求,
然后就是不断迭代直到w,b的结果不会产生误分类点:
1、选取初值 w0,b0;
2、在训练集中选取数据(xi,yi);
3、如果yi(w·xi+b)<=0,
另 w <- w+nyixi, b<-b+nyi
4、转至2,直至无误分类点。
这里的n是学习率,就是梯度下降法里的步长。这种算法实现简单,也比较直观,称为感知机的原始算法。
对偶形式
感知机算法的对偶形式和原始形式相对应,主要思想就是
将参数w和b表示为实例xi和标记yi的线性组合形式,通过求解其系数而求得w和b。
我们从w <- w+nyixi, b<-b+nyi ,可以将w和b归纳为 w=sigma(ai yi xi),b=sigma(ai yi),i=1,2,...,N。如果我们将步长设为1,那么ai就表示第i个实例点由于误分类而进行的更新次数。实例点更新次数越多,说明它离超平面越近,也就越难分类。
对偶形式的算法步骤因为符号函数改变,f(x)=sign(sigma(aj yj xj ·xi+b)),而在第3步更新时变为:
ai <- ai+n
b<- b+nyi
对偶形式其实是使原始形式的计算更加简便了,我们可以事先计算出xi和xj的内积,这样迭代更快。
相关文章推荐
- 软件测试(二) 第二次作业
- C语言:动态内存会被自动释放吗?杜绝“野指针”
- 数组求和
- Django模板
- PAT-Deduplication on a Linked List (25)
- jQuery获取复选框checkbox的值的正确方法
- POJ 2229 Sumsets
- 数据结构 第二章 线性表(1)顺序线性表的实现
- android I/O Performance 的一些查看方法
- 《GPU编程与CG语言之阳春白雪下里巴人》 读书笔记2
- 点击 UITextField 清除按钮,文本框中内容清除
- 第1周项目3—1~m的求解任务
- 曲面等值线
- iOS设计模式--原型模式
- 4.4.3 Android animation制作 跳动的心
- android editText 软键盘enter键图标的设置
- JavaScript
- Qt中ioctl
- 第一个Django项目
- 数据库事务的隔离级别