听课笔记(第二讲): Perceptron-感知机 (台湾国立大学机器学习基石)
来源:互联网 发布:php 即时通讯插件 编辑:程序博客网 时间:2024/05/21 19:21
转自:https://www.douban.com/note/319669984/
Learning to Answer Yes/No (二值分类)
一, Perceptron
x = (x1, x2, ..., xd) ---- features
w = (w1, w2, ..., wd) ---- 未知(待求解)的权重
对于银行是否发送信用卡问题:
perceptron 假设:
sign 是取符号函数, sign(x) = 1 if x>0, -1 otherwise
向量表示:
感知机(perceptron)是一个线性分类器(linear classifiers)。
线性分类器的几何表示:直线、平面、超平面。
二, Perceptron Learning Algorithm (PLA)
感知机求解(假设空间为无穷多个感知机;注意区分下面的普通乘法和向量内积,内积是省略了向量转置的表示,因为豆瓣不支持公式。。。)
初始w = 0 (零向量)。
第一步:找一个分错的数据(xi, yi), sign(w*xi) != yi;
第二步:调整w 的偏差,w = w + yi*xi;
循环第一、二步,直到没有任何分类错误, 返回最后得到的w。
实际操作时,寻找下一个错误数据可以按照简单的循环顺序进行(x1, x2, ..., xn);如果遍历了所有数据没有找到任何一个错误,则算法终止。注:也可以预先计算(如随机)一个数据序列作为循环顺序。
以上为最简单的PLA 算法。没有解决的一个基本问题是:该算法不一定能停止!
三, PLA 算法是否能正常终止
分两种情况讨论:数据线性可分;数据线性不可分。
注意PLA 停止的条件是,对任何数据分类都正确,显然数据线性不可分时PLA 无法停止,这个稍后研究。
1, 我们先讨论线性可分的情况。
数据线性可分时,一定存在完美的w(记为wf), 使得所有的(xi, yi), yi = sign(wf*xi).
可知:
下面证明在数据线性可分时,简单的感知机算法会收敛。
而且量向量夹角余弦值不会大于1,可知T 的值有限。由此,我们证明了简单的PLA 算法可以收敛。
四,数据线性不可分:Pocket Algorithm
当数据线性不可分时(存在噪音),简单的PLA 算法显然无法收敛。我们要讨论的是如何得到近似的结果。
我们希望尽可能将所有结果做对,即:
寻找wg 是一个NP-hard 问题!
只能找到近似解。
Pocket Algorithm
与简单PLA 的区别:迭代有限次数(提前设定);随机地寻找分错的数据(而不是循环遍历);只有当新得到的w 比之前得到的最好的wg 还要好时,才更新wg(这里的好指的是分出来的错误更少)。
由于计算w 后要和之前的wg 比较错误率来决定是否更新wg, 所以pocket algorithm 比简单的PLA 方法要低效。
最后我们可以得到还不错的结果:wg。
0 0
- 听课笔记(第二讲): Perceptron-感知机 (台湾国立大学机器学习基石)
- 听课笔记(第二讲): Perceptron-感知机 (台湾国立大学机器学习基石)
- 听课笔记(第三讲): 机器学习的分类学 (台湾国立大学机器学习基石)
- 台湾国立大学机器学习基石.听课笔记(第三讲): 机器学习的分类
- 台湾国立大学机器学习基石.听课笔记(第四讲): 机器学习的可行性
- 台湾国立大学机器学习基石.听课笔记(第四讲): 机器学习的可行性
- 听课笔记(第四讲):学习的可行性分析 (台湾国立大学机器学习基石)
- 台湾国立大学机器学习基石.听课笔记(第六讲): 一般化(举一反三)的理论
- 听课笔记(第一讲):台湾国立大学的《机器学习基石》(Coursera 版)
- 台湾国立大学机器学习基石.听课笔记(第五讲): 训练和测试有什么不同
- 台湾国立大学机器学习基石.听课笔记(第七讲):The VC Dimension
- 台湾国立大学机器学习基石.听课笔记(第八讲):Noise and Error
- 台湾国立大学机器学习基石.听课笔记(第九讲):Linear Regression
- 台湾国立大学机器学习基石.听课笔记(第十讲):Logistic Regression
- 台湾国立大学机器学习基石.听课笔记(第十一讲):Linear Models of Classification
- 台湾国立大学机器学习基石.听课笔记(第十二讲):Nonlinear Transformation
- 台湾国立大学机器学习基石.听课笔记(第十四讲):Regularization
- 台湾国立大学机器学习基石.听课笔记(第十五讲):validation
- C语言:单链表的反转
- 欧拉函数
- 【转】关于GetMemory()函数
- 使用curl指令測試REST服務
- caffe生成lmdb和mean_binaryproto的方法
- 听课笔记(第二讲): Perceptron-感知机 (台湾国立大学机器学习基石)
- “个性化视频推荐”算法的Storm实现方案
- HDU5900 QSC and Master(区间dp)
- 为什么Scrum永远不会可行
- bzoj 1026: [SCOI2009]windy数 (数位dp)
- 超像素分割技术发展情况梳理(Superpixel Segmentation)
- 项目实战:WindowManager中removeView的那些坑-随心所欲removeView
- 创建maven工程
- 汇编语言寻址方式