学习stanford大学的机器学习课程很久了,我一直都没有写blog记录我的学习笔记,仅仅只是在笔记本上记录了。今天突然想到,为什么不分享一些自己的学习收获呢?

可能有人会问,为什么你不在coursera上进行学习呢?是啊,coursera上的机器学习课程基于吴恩达教授最新录制的线上版本,同时配套相应的课件和学习计划,还可以享受coursera上的助学金等福利。为什么不呢?

事实上,coursera也存在一些问题,例如对中文学习者不友好,它的字幕不能很好的与视频相结合。但这也只是吹毛求疵罢了,事实上,你也可以去网络上下载附有字幕的coursera机器学习系列视频。
真正让我选择网易云课堂课程的原因是,吴恩达教授在stanford线下授课的视频更加容易为人所接受(当然了,忽略它粗糙的录制),同时,和学生的交流也能解决很多你学习上遇到的问题。借着和学生沟通的机会,吴恩达教授也得以展示了他的幽默感。而对于我们学习者而言,意味着学习的过程可以更加轻松。

好了,话说回来,今天的课程首先学习了生成学习算法,它主要的应用是Naive Bayce,下面我给出一段引用来说明生成学习算法和判别式学习算法的区别:

1.判别学习算法:

  • 直接学习p(y|x),即给定输入特征,输出所属的类
  • 或学习得到一个假设hθ(x),直接输出0或1

2.生成学习算法:

  • 对p(x|y)进行建模,p(x|y)表示在给定所属的类的情况下,显示某种特征的概率。处于技术上的考虑,也会对p(y)进行建模。
  • p(x|y)中的x表示一个生成模型对样本特征建立概率模型,y表示在给定样本所属类的条件下

例:在上例中,假定一个肿瘤情况y为恶性和良性,生成模型会对该条件下的肿瘤症状x的概率分布进行建模

  • 对p(x|y)和p(y)建模后,根据贝叶斯公式p(y|x) = p(xy)/p(x) = p(x|y)p(y)/p(x),可以计算:p(y=1|x) = p(x|y=1)p(y=1)/p(x),其中,p(x) =
    p(x|y=0)p(y=0) + p(x|y=1)p(y=1)

让我收获最深的是今天对朴素贝叶斯应用于垃圾邮件分类的讲解

首先提到了构建特征向量。毕竟邮件是多个词语构成的list,如何定义x是一个问题。那么我们可以遍历训练集中所有的单次,取并集后将之作为dict,那么构建一个由0或1组成的一维向量,每一个元素对应一个可能的单词。那么一封邮件就可以构建一个特征向量用来作为它的特征。在此基础上,就可以应用朴素贝叶斯算法对其进行最大似然率估计,并且建构模型。

同时,这满足bernouli分布,凡是x属于0或者1的集合的特征,都可以认为其满足bernuoli分布。

随后,吴恩达提出一个问题,借此引出了laplace smoothing算法。如果新的邮件出现一个新词语,NIPS,贝叶斯算法会得到一个undefies的值,那么我们就需要引入一个新的优化算法去抵消这种误差。laplace smoothing可以简单的认为分子+1,分母+2,然后再进行贝叶斯的概率计算。

其中,吴恩达引入了一个比较生动的例子。例如一支球队,连输了5场,那么在新的一场中,他获胜方的概率是多少呢?实际上,在样本量极少的训练集中直接使用最大似然率估计是有所偏差的,引入laplace smoothing可以算出,他获胜的概率是1/7,是一个比较合理的预测。同理,太阳从东边升起了6天,第七天会在哪边升起呢,应用laplace smoothing可以得到一个较合理的预测。