最近在跟台大的这个课程,以为不错,想把学习笔记发出来跟你们分享下,有错误但愿你们指正。算法
一机器学习是什么?编程
感受和 Tom M. Mitchell的定义几乎一致,机器学习
A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.函数
简而言之,就是咱们想要机器在某些方面有提升(如搜索排名的质量,即NDCG提升),就给机器一些数据(用户的点击数据等各类)而后让机器得到某些经验(Learning to rank的一种模型,也就是数学公式)。这里有点须要强调,那就是提升指标,必需要有某种指标能够量化这种提升,这点仍是很关键的,工业界作机器学习,首先关注data,其次就是有无成型的measurement,可使Precision/Recall,也能够是NDCG等。学习
二何时能够用机器学习?spa
其实就三要素:3d
编程很难作到能够有多种,大部分缘由是系统太复杂,很难用Rule-based的东西去解决,例如搜索排名,如今影响排名的因素有超多几百种,不可能去想出这些因素的规则,所以,这时候用机器学习就是恰到好处。特别是移动互联网的今天,用户更容易接触互联网,产生的数据愈来愈多,那么要找到某些不容易实现的规律,用机器学习就是很好的了,这也是为啥机器学习这么火,其实我学机器学习不只仅是一种投资(确定它将来的发展前途),我想作的事情还有一点,就是经过它更深入的理解人脑的学习过程,提升本身的学习效率和思惟能力。orm
三具体如何用机器学习?blog
输入是两个:1 data;2 假设集合。Data如何使用?经过提取出feature vector来使用,也就是那个training examples,假设集合是用来选取最终f的。也就是说,输出就是f(或近似f)。ci
四第一个机器学习算法:PLA(Perceptron Learning Algorithm)
课程讲述这个算法的整体思路以下(典型的提出问题,分析问题以及解决问题):
这个算法本质上是线性分类器,针对给定的feature vector给出Yes 或者 No的回答
下面是用这个算法去解决信用卡问题的数学抽象:
这里的思想在于朴素的把从用户信息抽出来的一些feature(年龄等)量化并组成vector,而后乘以一个权重向量,并设定一个阈值,大于这个阈值就表示好,小于表示很差,很明显这个式子的未知变量有两个(实际只有一个):
作一点小小的变形使得式子更加紧凑,
还有就是从这个模型能够知道,regression model也能够解决classification问题,转化的思想。下面是这个算法的核心,定义了学习目标以后,如何学习?这里的学习是,如何获得最终的直线去区分data?
这个算法的精髓之处在于如何作到"作错能改",其循环是不断遍历feature vector,找到错误的点(Yn和当前Wt*Xn不符合),而后校订Wt,那么为何要这样校订?由于这样能够保证Wt愈来愈靠近perfect直线Wf(ps.暂时没想到正向思惟是如何获得这个式子的)课程像大多数课本同样,用逆向思惟给予介绍,就是在给定这样可以作的状况下去证实,即证实为何这样作能够不断接近目标,以及最终必定会中止?
下面道出了PLA终止的条件:
这个是比较容易想到的,若是不能用直线去区分data(线性不可分),确定是解决不了的,因此必需要知足线性可分,其实问题的关键在于如何方便的知道某些数据是否线性可分?这个在课程中目前没有涉及,一种简单的解决方法是画出来,直观的去看,这个我以为不是好方法。
这两页PPT比较复杂,其实就是在利用条件证实,下面从新组织下给出思路,由于Latex用中文不太爽,就用英文了:
五 PLA的优缺点
为了应对Noisy,咱们不可能获得完美的直线,那么怎么衡量当前获得的直线可以知足要求呢?凭直觉,咱们知道若是当前直线犯错越少越好(对全部data),因而有了下面的改进算法,Pocket PLA,本质上就是在改错的时候多作一步 -- 判断当前改正犯的错是否比以前更小,也就是贪心选择
上了一周台大的这个课程感受老师仍是很负责任,特别是循循善诱的教学方式真正是站在学生的角度考虑问题,更重要的是,我很欣赏课程的脉络,其由几个关键问题引出整套课程,这和《如何阅读一本书》里面带着问题阅读很像,其实学习也是如此,这点必须赞一下,也作个小广告,目前你们都在推荐Ng教授的课程,我以为这个课程也值得推荐。
参考资料:
注:除了证实,其余授课ppt都来源于课程