假设样例按照到来的先后顺序依次定义为为样本特征,为类别标签。任务是到来一个样例,给出其类别结果的预测值,之后我们会看到真实值,然后根据真实值来重新调整模型参数,整个过程是重复迭代的过程,直到所有的样例完成。这么看来,我们也可以将原来用于批量学习的样例拿来作为在线学习的样例。在在线学习中,我们主要关注在整个预测过程中预测错误的样例数。

  用表示正例,表示负例,支持向量机中提到的感知算法(perception algorithm),我们的假设函数为:

  其中,x是n维特征向量,是n+1维参数权重。函数g用来将计算结果映射到-1和1上。具体公式如下:

提出一个在线学习算法如下:

新来一个样例,我们先用从之前样例学习到的来得到样例的预测值y,如果(即预测正确),那么不改变,反之

  如果对于预测错误的样例,进行调整时只需加上(实际上为正例)或者减去(实际负例)样本特征x值即可。初始值为向量0。这里我们关心的是的符号,而不是它的具体值。调整方法非常简单,然而这个简单的调整方法还是很有效的,它的错误率不仅是有上界的,而且这个上界不依赖于样例数和特征维度。

  下面定理阐述了错误率上界:  

  定理(Block and Novikoff

给定按照顺序到来的样例。假设对于所有的样例,也就是说特征向量长度有界为D。更进一步,假设存在一个单位长度向量。也就是说对于y=1的正例,,反例,u能够有的间隔将正例和反例分开。那么感知算法的预测的错误样例数不超过

根据对SVM的理解,这个定理就可以阐述为:如果训练样本线性可分,并且几何间距至少是,样例样本特征向量最长为D,那么感知算法错误数不会超过。这个定理是62年提出的,63年Vapnik提出SVM,可见提出也不是偶然的,感知算法也许是当时的热门。

  下面主要讨论这个定理的证明:

感知算法只在样例预测错误时进行更新,定义是第k次预测错误时使用的样本特征权重, 初始化为0向量。假设第k次预测错误发生在样例上,利用计算值时得到的结果不正确(也就是说,调换x和顺序主要是为了书写方便)。也就是说下面的公式成立:

根据感知算法的更新方法,我们有。这时候,两边都乘以u得到

两个向量做内积的时候,放在左边还是右边无所谓,转置符号标注正确即可。

这个式子是个递推公式,就像等差数列一样f(n+1)=f(n)+d,由此我们可得:

因为初始为0,下面我们利用前面推导出的得到

也就是说的长度平方不会超过与D的平方和。

又是一个等差不等式,得到:

两边开根号得:

其中第二步可能有点迷惑,我们细想u是单位向量的话,

因此上面的不等式成立,最后得到:

也就是预测错误的数目不会超过样本特征向量x的最长长度与几何间隔的平方,实际上整个调整过程中就是x的线性组合。

整个感知算法应该是在线学习中最简单的一种了。

最新文章

  1. Redis学习笔记八:独立功能之二进制位数组
  2. 导入maven工程并配置maven环境
  3. T-sql语句
  4. Android实例-实现扫描二维码并生成二维码(XE8+小米5)
  5. OC 加密
  6. Google搜索技术
  7. 线程间操作无效: 从不是创建控件“textBox2”的线程访问它
  8. Babel6.x 转换ES6
  9. SQL Server数据库---》增删查改
  10. Java多线程使用场景
  11. linux的视频学习4(网络配置和rpm)
  12. codeforces 372E. Drawing Circles is Fun
  13. python学习之路前端-HTML
  14. 实现JWT刷新机制以及让过期时间更精确
  15. 项目导入之后报错:The import javax.servlet cannot be resolved
  16. LeetCode【108. 将有序数组转换为二叉搜索树】
  17. Java能不能通过代码干预Java垃圾回收
  18. 微服务架构演变过程-SpringCloud
  19. php不用递归完成无限分类,从表设计入手完整演示过程
  20. front-end 前端发展学习路线参考图

热门文章

  1. 配置react, redux, next.js环境
  2. vue 数组push元素 视图没更新
  3. Python3+qrcode+zxing生成和识别二维码教程
  4. Python _Mix*9
  5. VSTO:使用C#开发Excel、Word【14】
  6. 8.6 C++文本文件的读写操作
  7. FS:[0] 链条
  8. python 文件读写时用open还是codecs.open
  9. Linux shell基础知识(上)
  10. python私有属性和私有方法