1.生成学习算法(Generative learning algorithm)
2.高斯判别分析(GDA,Gaussian Discriminant Analysis)
3.朴素贝叶斯(Naive Bayes)
4.拉普拉斯平滑(Laplace smoothing)算法
判别学习算法(discriminative learning algorithm):直接学习p(y|x)(好比说logistic回归)或者说是从输入直接映射到{0,1}.函数
生成学习算法(generative learning algorithm):对p(x|y)(和p(y))进行建模.性能
简单的来讲,判别学习算法的模型是经过一条分隔线把两种类别区分开,而生成学习算法是对两种可能的结果分别进行建模,而后分别和输入进行比对,计算出相应的几率。学习
好比说良性肿瘤和恶性肿瘤的问题,对良性肿瘤创建model1(y=0),对恶性肿瘤创建model2(y=1),p(x|y=0)表示是良性肿瘤的几率,p(x|y=1)表示是恶性肿瘤的几率.优化
根据贝叶斯公式(Bayes rule)推导出y在给定x的几率为:orm
GDA是咱们要学习的第一个生成学习算法.图片
GDA的两个假设:get
2.1 多维正态分布
若x服从多维正态分布(也叫多维高斯分布),均值向量(mean vector),协方差矩阵(convariance matrix)
,写成x~
, 其密度函数为:
表示行列式(determinant).it
均值:
协方差Cov(Z)==
= ∑io
高斯分布的一些例子:
左图均值为零(2*1的零向量),协方差矩阵为单位矩阵I(2*2)(成为标准正态分布).
中图协方差矩阵为0.6I,
右图协方差矩阵为2I
均值为0,方差分别为:
2.2 高斯判别分析模型
写出几率分布:
模型的参数为φ,μ0,μ1,∑,对数似然性为:
求出最大似然估计为:
结果如图所示:
1.3 讨论GDA和logistic回归
GDA模型和logistic回归有一个颇有意思的关系.
若是把看作是x的函数,则有:
其中是
的函数,这正是logistic回归的形式.
关于模型的选择:
刚才说到若是p(x|y)是一个多维的高斯分布,那么p(y|x)必然能推出一个logistic函数;反之则不正确,p(y|x)是一个logistic函数并不能推出p(x|y)服从高斯分布.这说明GDA比logistic回归作了更强的模型假设.
可是,logistic回归作了更弱的假设,相对于不正确的模型假设,具备更好的鲁棒性(robust).许多不一样的假设可以推出logistic函数的形式. 好比说,若是那么p(y|x)是logistic. logstic回归在这种类型的Poisson数据中性能很好. 可是若是咱们使用GDA模型,把高斯分布应用于并非高斯数据中,结果是很差预测的,GDA就不是很好了.
在GDA模型中,特征向量x是连续的实数向量.若是x是离散值,咱们须要另外一种学习算法了.
例子:垃圾邮件分类问题
首先是把一封邮件做为输入特征,与已有的词典进行比对,若是出现了该词,则把向量的xi=1,不然xi=0,例如:
咱们要对p(x|y)建模,可是假设咱们的词典有50000个词,那么,若是采用多项式建模的方式,会有
,明显参数太多了,这个方法是行不通的.
为了对p(x|y)建模,咱们作一个很强的假设,假设给定y,xi是条件独立(conditionally independent)的.这个假设成为朴素贝叶斯假设(Naive Bayes assumption).
所以有:
虽说朴素贝叶斯假设是很强的,可是其实这儿算法在不少问题都工做的很好.
模型参数包括:
联合似然性(joint likelihood)为:
获得最大似然估计值:
很容易计算:
朴素贝叶斯的问题:
假设在一封邮件中出现了一个之前邮件历来没有出现的词,在词典的位置是35000,那么得出的最大似然估计为:
也即便说,在训练样本的垃圾邮件和非垃圾邮件中都没有见过的词,模型认为这个词在任何一封邮件出现的几率为0.
假设说这封邮件是垃圾邮件的几率比较高,那么
模型失灵.
在统计上来讲,在你有限的训练集中没有见过就认为几率是0是不科学的.
为了不朴素贝叶斯的上述问题,咱们用laplace平滑来优化这个问题.
回到朴素贝叶斯问题,经过laplace平滑:
分子加1,分母加1就把分母为零的问题解决了.