Andrew NG 机器学习课程笔记(五)

来源:互联网 发布:什么软件可以root 编辑:程序博客网 时间:2024/06/05 09:16
生成学习算法

本次课Andrew老师主要讲述了生成学习算法的定义,并详细描述了高斯判别分析的例子。之后对比了生成学习算法和判别学习算法的不同,介绍了一个适合对文本分类的算法,朴素贝叶斯。并借此介绍了一种平滑技术——拉普拉斯平滑。

生成学习算法的定义:
这里借用李航博士《统计学习方法》中的一段话
生成方法由数据学习联合概率分布P(x,y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型
P(Y|X)=P(X,Y)/P(X)
这样的方法之所以称为生成方法,是因为模型表示了给定输入X产生输出Y的生成关系。典型的生成模型有:朴素贝叶斯法和隐马尔科夫模型。
判别方法由数据直接学习决策函数f(X)或者条件概率分布P(Y|X)作为预测的模型,即判别模型。判别方法关心的是对给定的输入X,应该预测什么样的输出Y。典型的判别模型包括:K近邻法、感知机、决策树、逻辑回归,最大熵模型、支持向量机、提升方法和条件随机场等。

上述两者都属于监督学习。两者各有优缺点,适合不同条件下的学习问题。
生成方法的特点:生成方法可以还原出联合概率分布P(X,Y),而判别方法则不能;生成方法的学习收敛速度更快,即当样本容量增加的时候,学习到的模型可以更快的收敛于真实模型;当存在隐变量时,仍可以用生成算法学习,此时判别方法就不能用。
判别方法的特点:判别方法直接学习的时条件概率P(Y|X)或决策函数f(X),直接面对预测,往往学习的准确率更高;可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题。

高斯判别分析:
多变量正态分布描述的是n维随机变量的分布情况,这里的u变成了向量,σ也变成了矩阵Σ。写作N(u,Σ),假设有n个随机变量X1,X2。。。Xn.u的第i个分量是E(Xi),而概率密度函数为:

其中|Σ|是Σ的行列式,Σ是协方差矩阵,而且是对称半正定的。当Σ是二维的时候如下所示:


u决定的是中心位置,Σ决定的是投影椭圆的朝向和大小


如果输入的X是连续随机变量,那么可以用高斯判别分析模型来确定P(X|Y)。

输出结果服从伯努利分布,在给定模型下特征符合多值高斯分布。
概率密度函数如下:

然后就可以做最大似然估计


求导后得到参数估计公式:


是训练样本中y=1占的比例
u0是y=0样本中特征的均值
u1是y=1样本中特征的均值
是样本中特征方差的均值


直线两边的y值不同,但协方差矩阵相同,因此形状相同,u不同,因此位置不同。


朴素贝叶斯:
如果X是离散值的话,可以考虑采用朴素贝叶斯的分类方法。假如要分类垃圾邮件和正常邮件,采用最简单的特征描述方法,首先找一部英文词典,将里面的单词全部列出来。然后将每封邮件表示成一个向量,向量中的每一维都是字典中的一个词的0/1值,1表示该词在邮件中出现,0表示未出现。
比如一封邮件中出现了a和buy,没有出现aardvark、aardwolf、zygmurgy,那么可以形式化表示为:

假设字典中共有50000个词,那么X是50000维的。这时候如果要建立多项式分布模型对应到上面的问题上来,把每封邮件当做一次随机试验,那么结果的可能性有2^50000种,意味着参数有这么多个,不可能用来建模
换一种思路,我们要求的是P(y|X),根据生成模型定义我们可以求P(X|Y)和P(Y),假设X中的特征是条件独立的,这个称作朴素贝叶斯假设。如果一封邮件是垃圾邮件(y=1),且这封邮件出现词buy与是否出现price无关,那么这两个词是独立的。当然这是不可能的,不可能完全没关系。

所以这里我们实际上建了2个模型,这50000个词每个出现都有一个概率值,分别对于y=0和y=1这个概率值就是需要我们估计的,这里用二项分布去拟合它们。

最大似然求出:

那么,新输入一个X:输出y=1的概率为

当遇到X为连续值时,可以采用分段的方式把连续值转化为离散值。

拉普拉斯平滑:

朴素贝叶斯有个致命的缺点就是对数据稀疏问题过于敏感。前面提到的邮件分类,如果某个词在训练数据中从来没出现过,那不论y=0或1,概率都是0了。但实际上不可能概率就是0.这时候我们赋予它之前出现过的次数一个极小值。简单的讲就是遇到为0的情况,就分子加1,分母有几类就加几。如下所示,对二项分布的出现概率估计修正如下(二类问题,j是第j个单词,i是样本):







0 0
原创粉丝点击