Andrew Ng机器学习课程6


说明

  在前面尾随者台大机器学习基石课程和机器学习技法课程的设置,对机器学习所涉及到的大部分的知识有了一个较为全面的了解,可是对于没有动手敲代码并加以使用的情况,基本上是不可能掌握好的。特别是我的学习进程是袭击式的,因此。会非常快忘掉。心中仅仅剩下一个主要的纲要,所以后面要通过解说更为具体的Andrew Ng教授的机器学习课程进行回想和总结,希望能够抓住它的来龙去脉。

所以总结的内容主要是推导的思路。仅仅要能够把握住思路,就能保持长久的记忆。

主要内容

朴素贝叶斯分类器

1. 垃圾邮件特征提取方法

  通过垃圾邮件的筛选。介绍了朴素贝叶斯分类器。对于垃圾邮件,建立一个垃圾邮件中常常出现的词的字典。用于将一封邮件通过这个字典转换为特征向量,这个特征向量的长度等于字典中词的个数N=5000,且其每个位置上的值仅取“1”或“0”,表示相应位置上是否出现了垃圾词。

2. 朴素贝叶斯如果与朴素贝叶斯分类器

  已经得到了特征矢量,我们要构建一个generative model。这里先说明一下先验概率与后验概率的含义:

先验概率是指基于先验知识所得到某一件事情发生或出现的概率。通常採用大数据统计就能够得到先验概率。比方罹患肝癌(y)的概率。通过统计医院的资料。能够计算出先验概率p(y)来。而后验概率则是指当某一件事情已经发生或出现。回推导致这件事情发生的因素的概率。

比方某人已经查出罹患肝癌(y),而导致肝癌发生的因素有x={酒精、多脂肪、病毒、毒素},即后验概率就是指p(x|y)。

  然后再说明一下机器学习中两种不同的model:

discrimination modelgenerative model, 两者的区别在于对概率密度的建模上:以二分类问题为例。样本特征矢量为x,样本标签为y。y∈{−1,+1},discrimination model是直接对p(y|x)进行建模,相似logistic regression,思路就是从已知的样本集(x,y)中直接学习出给定x,输出y为1的概率是多少。等于说是直接构建以x为输入參数的y的概率模型。而generative model则是先分别对p(x|y=0)和p(x|y=1)进行建模。然后再通过后验概率公式(贝叶斯公式)计算得到:

p(y=1|x)=p(x|y=1)×p(y=1)p(x)
p(y=0|x)=p(x|y=0)×p(y=0)p(x)

,这样就考虑了样本的产生模型p(y),同一时候除去分母是不影响推断的。所以实际上generative model是对联合概率密度进行的建模p(y,x)=p(x|y)×p(y)。而对于discrimination model则没有考虑样本的生成模型。或者说是觉得样本生成模型是均匀分布的。通常对于generative model要求样本无穷大或尽可能大,而discrimination model则不须要。

  为了对p(x|y)进行建模,引入了一个非常强的如果,即如果给定y的情况下,xi是条件独立的。即每个xi之间是没有约束关系的。

这个如果叫做朴素贝叶斯如果(Naive Bayes assumption)。而这样得到的学习算法就叫做朴素贝叶斯分类器。

3. 垃圾邮件的朴素贝叶斯分类器

  接着对垃圾邮件进行建模,有:

p(x1,...,x50000|y)=p(x1|y)p(x2|y,x1)p(x3|y,x1,x2)...p(x50000|y,x1,x2,...,x49999)=p(x1|y)p(x2|y)p(x3|y)...p(x50000|y)=∏i=1np(xi|y)

  非常显然,建立的模型的參数为p(xi|y)和p(y)。

联合概率密度的似然函数为:

L(ϕy,ϕj|y=0,ϕj|y=1)=∏i=1mp(x(i),y(i))

  通过最大化联合似然函数。能够得到模型參数的最大似然预计。从而构建出例如以下模型:

p(y=1|x)=p(x|y=1)×p(y=1)p(x)=(∏ni=1p(xi|y=1))×p(y=1)p(x)
p(y=0|x)=p(x|y=0)×p(y=0)p(x)=(∏ni=1p(xi|y=0))×p(y=0)p(x)

  选择具有最高后验概率的class作为判定依据。

Ng教授绘制了一种通常的情况用于说明通过典型的generative model :GDA(Gaussian Discrimination Analysis model)方法建立的两类后验概率,生成分类边界实际上与logistic regression的边界一样。

这说明了两种模型实际上是有共通之处的。就是上面说过的如果忽略了样本的产生模型p(y)两者基本上是相似的。

拉普拉斯平滑

  在处理一些还没有出现或发生过的事件A时,如果採用上面那种联合似然函数预计出来的p(A)=0,这是不合理的,由于仅仅是在有限的训练集中没有看到这个事件发生。并不代表它一定不发生,即p(A)=0。这个时候採用laplace smoothing会有更好的预计效果。以预计一个多项随机变量z∈{1,2,...,k}的均值情况为例,多项分布的參数为ϕi=p(z=i),假定m个独立的观測值{z(1),...,z(m)}。非常简单地得到最大似然预计为:

ϕi=∑mi+11{z(i)=j}m

  如前面所讲,如果使用最大似然预计。非常有可能一些ϕi=p(z=i)会是0。

为了克服这个问题,使用laplace smoothing代替上面的预计:

ϕi=∑mi+11{z(i)=j}+1m+k

  laplace smoothing的效果就是使在观測值中没有出现的事件的概率预计保持一定的小概率出现,而不是直接认定概率为0。

事件模型

  对于上面构建垃圾邮件分类器,实际上丢掉了一些信息,即没有考虑文本的上下文。

Naive Bayes採用multi-variable Bernoulli event model能够解决这种问题。

觉得邮件是这样产生的:首先依据先验概率p(y)随机生成邮件或垃圾邮件,然后发送邮件的人遍历这个垃圾邮件的字典,依据概率p(xi=1|y)=ϕi|y独立决定是否包括第i个word。所以。这个message的概率为:

p(y)∏i=1np(xi|y)

  而multinomial event model是一个不同的模型。将具有n个words的email表示为(xi)(n)。不同的邮件的words的长度n能够不同。xi表示的是这个email的第i个word是字典中的第x_i个word的索引index。所以message的概率为:

p(y)∏i=1np(xi|y)

  尽管multi-variable Bernoulli event model与multinomial event model得到的概率模型在公式上表现了同样,可是具体的含义却区别非常大,multinomial event model中的xi|y表示的是一个多项分布,而ulti-variable Bernoulli event model中的xi|y表示的是一个bernoulli分布。

神经网络模型

  Ng教授通过两个视频的样例说明了神经网络模型的力量,一个是手写体的识别。还有一个是模拟小孩说话声音。都表现出了非常好的性能。神经网络是在logistic regression的基础上引入的,採用sigmoid函数作为激活函数。神经网络最大的缺点就是变量太多。导致非常easy陷入局部最优。神经网络的部分,能够參看我的其它博客文章神经网络模型的总结,有非常深入的介绍。

支持向量机的开篇

  Ng教授对支撑向量机(support vector machine)是从线性可分问题入手的,介绍了如何的分类边界是好的。

对于logistic regression,当θTX远大于0时,就有非常大的confidence觉得y=+1,而当θTX远小于0时。就有非常大的confidence觉得y=−1。从而引入了两个margin,一个是function margin。还有一个是geometry margin。定义了点(xi,yi)到超平面(w,b)的距离作为function margin: function margin=y(i)(wTx+b),我们求取全部点到决策平面的距离中的最小值作为样本到决策平面的距离。剩下要做的就是maximize 这个margin。

样本是固定的。而决策超平面是不定的。是由參数(w,b)决定的。我们所要做的就是调整(w,b)。而如果參数同一时候放大时,这个margin也会放大,这样最大化就没意义了。所以,定义了geometric margins,约束||w||=1。从而得到了例如以下的公式化的优化问题:

max(w,b){min y(i)(wTx+b)}, s.t.||w||=1


2015-8-23

艺少

Andrew Ng机器学习课程6的更多相关文章

  1. Andrew Ng机器学习课程笔记(五)之应用机器学习的建议

    Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...

  2. Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归)

    title: Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归) tags: 机器学习, 学习笔记 grammar_cjkRuby: true --- 之前看过一遍,但是总是模 ...

  3. Andrew Ng机器学习课程笔记--汇总

    笔记总结,各章节主要内容已总结在标题之中 Andrew Ng机器学习课程笔记–week1(机器学习简介&线性回归模型) Andrew Ng机器学习课程笔记--week2(多元线性回归& ...

  4. Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计

    Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...

  5. Andrew Ng机器学习课程笔记(四)之神经网络

    Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 ...

  6. Andrew Ng机器学习课程笔记(三)之正则化

    Andrew Ng机器学习课程笔记(三)之正则化 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365475.html 前言 ...

  7. Andrew Ng机器学习课程笔记(二)之逻辑回归

    Andrew Ng机器学习课程笔记(二)之逻辑回归 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7364636.html 前言 ...

  8. Andrew Ng机器学习课程笔记(一)之线性回归

    Andrew Ng机器学习课程笔记(一)之线性回归 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7364598.html 前言 ...

  9. Andrew Ng机器学习课程10补充

    Andrew Ng机器学习课程10补充 VC dimension 讲到了如果通过最小化训练误差,使用一个具有d个参数的hypothesis class进行学习,为了学习好,一般需要参数d的线性关系个训 ...

随机推荐

  1. python2.7安装Twisted报Microsoft Visual C++9.0 required

    环境: 操作系统:Windows 7 32位 语言:Python 2.7.9 Twisted: Twisted 安装,执行如下命令: pip install Twisted 报错如下: error:M ...

  2. ubuntu 修改权限

    在linux终端先输入ll,可以看到如: -rwx-r–r– (一共10个参数) 表示文件所属组和用户的对应权限. 第一个跟参数属于管理员,跟chmod无关,先不管. 2-4参数:属于user 5-7 ...

  3. luogu P2024 食物链

    题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C 中的一种,但是我 ...

  4. CodeForces - 981E Addition on Segments

    考虑每个点i在什么情况下会成为最大值. 当选的区间子集是 包含i的区间的一个子集的时候,i肯定会是最大值. 所以我们就可以用这种方法得到所有点的可能的最大值是多少... 也就是说,最后的局面可以仅由一 ...

  5. [UOJ300]吉夫特

    直接上lucas定理,可以得到$\binom nm=1$等价于$m$是$n$的子集(二进制) 因为数字两两不同,所以设$f_i$表示以$i$开头的满足要求的序列有多少个,转移就是$f_i\gets f ...

  6. php实现简单视图模板(视图引擎)

    视图 视图,你所看见的部分. <?php echo 'hello, world'; 从简单开始理解 这就是个视图文件中的代码,没错就这么简单.视图,实际上是在 MVC 这种架构上提出的.MVC ...

  7. Drupal 7.31 SQL Injection Exp

    #-*- coding:utf-8 -*- import urllib2,sys import hashlib   # Calculate a non-truncated Drupal 7 compa ...

  8. crontab定时任务详解

    1.安装crontab:yum install crontabs 说明:/sbin/service crond start //启动服务/sbin/service crond stop //关闭服务/ ...

  9. Django入门与实践

    安装: 1.https://www.djangoproject.com/查找最新版本 2.pip install Django==1.10.6安装Django   创建项目: 1.打开命令行,进入想要 ...

  10. Vue基础知识总结(一)

    一.基本语法: 1.实例化:new Vue({}) 2.el:一定是根容器元素(vue的作用域就是这个根元素内),就是写选择器  data:用于存储数据      methods:定义方法(方法里th ...