[笔记]生成学习算法·GDA·NB

来源:互联网 发布:女士皮鞋品牌 知乎 编辑:程序博客网 时间:2024/06/09 22:44

生成学习算法

判别学习算法(Discriminative learning algorithm)

直接学习p(y|x),或者学习得到一个假设,直接输出0、1,hθ(x){0,1}。例如Logistic回归。
该种模型只是通过一条分隔线把两种类别区分开。

生成学习算法(Generative learning algorithm)

根据特征和类别情况,对p(x|y)p(y)进行建模。
在计算分析得到其概率后,根据贝叶斯公式(Bayes rule)

p(y|x)=p(x|y)p(y)p(x)

可推导出y在给定x的概率。
根据贝叶斯公式可以变化为:
Bayes变化
表达式含义为:p(y|x)取最大值时的y值。
如果p(y)是均匀分布(每种类型的概率都相同),那么就等于:argmaxp(x|y)


高斯判别分析

GDA(Gaussian discriminative analysis)是我们要学习的第一个生成学习算法。
GDA的两个前提:

  1. 假设输入特征x∈Rn,并且是连续值
  2. p(x|y)满足多维正态分布(multivariate normal distribution)

多维正态分布

期望向量[均值向量](mean vector),μn
协方差矩阵(covariance matrix),nn=[(xμ)(xμ)T]>0,矩阵对称并且半正定(symmetric and positive semi-definite)。
多维正态分布
协方差为:Cov(X)=
例子1
a.均值为0,协方差矩阵为单位矩阵I(2*2),成为标准正态分布;
b.均值为0,协方差矩阵0.6I(2*2);
c.均值为0,协方差矩阵2I(2*2);
例子2
例子3

GDA模型

GDA
参数ϕ, ∑, μ0,μ1的对数似然性:
对数似然性
其中考虑的是p(x(i),y(i)),联合似然(Joint likelihood);而在logistic回归中考虑的是p(y(i)|x(i)),条件似然(Conditional likelihood)。
求出极大似然估计为:
GDA极大似然估计
μ0,μ1的含义是:
分母是对应标签(0/1)的样本数,分子是对应标签(0/1)的x(i)的和;整体含义为遍历整个集合,求对应标签(0/1)的x的均值。
这个算法工作起来就是这样的:
GDA图例

讨论:GDA和Logistic回归

GDA模型和logistic回归有一个很有趣的关系。
如果把p(y=1|x;ϕ,μ0,μ1,) 看成x的函数,则有:
关系
其中,θ是ϕ, ∑, μ0,μ1 的函数,这就很像是p(y=1|x) 的Logistic回归。
讨论:哪个更好?
如果p(x|y)是一个多维的高斯分布,那么p(y|x)必然能推出一个logistic函数;反之则不能。这是因为GDA做了更强的假设,(x| y)服从高斯分布。
如果数据服从或大致服从高斯分布,那么GDA的性能优于Logistic回归;如果你不确定数据的分布情况,那么Logistic回归表现会更好。
GDA因为是强假设,所以对于建模会使用更少的数据;Logistic由于假设相对较弱,所以有着不错的适应性(鲁棒性),但建模时使用更多的数据。
鲁棒性:
p(x|y=1)ExpFamily(η1)
p(x|y=0)ExpFamily(η0)
能推出p(y=1|x) 为Logistic回归。


朴素贝叶斯

在GDA模型中,特征向量x是连续的实数向量。如果x是离散值,我们需要不同的学习算法。
举例讲解:垃圾邮件分类(文本分类问题)
首先要输入一封邮件,然后与词典进行比对,如果出现了该词,则设xi=1,否则xi=0,例如:
邮件向量x
我们要对p(x|y) 建模,如果使用判别模型,那么在词典包含很多词的情况下(极端50000词),x{0,1}50000,则我们需要(2500001)维的参数向量,这显然是不可行的。
所以我们要用强假设限定p(x|y),假设给定y的时候,xis条件独立(conditionally independent)的,这就是朴素贝叶斯假设(Naive Bayes assumption),并且这种解决算法被称为朴素贝叶斯分类器(Naive Bayes classifier)。
根据链式法则和朴素贝叶斯假设得:
NB假设
数据的联合似然性(joint likelihood)为:
联合似然性
φi|y=1=p(xi=1|y=1)φi|y=0=p(xi=1|y=1)φy=p(y=1)
得到极大似然估计:
NB极大似然估计
解释φi|y=1项:分子,遍历训练样本在标签y=1邮件中词语xj出现的次数之和;分母,训练样本中标签y=1邮件的总数;总得来说,在垃圾邮件中见到xj词的概率。
m就是训练样本的数量,m封标记着“垃圾“(y=1)和“正常“(y=0)的邮件。
完成上述参数的设置,就可以得到:
这里写图片描述
存在问题:
假设新邮件出现了一个以前邮件从来没有出现的词,模型会认为这个词在任何一封邮件出现的概率为0,这在统计学中是不科学的。


拉普拉斯平滑(Laplace smoothing)

我们使用Laplace平滑来避免朴素贝叶斯出现上述问题。

p(y=1)=#1s+1#0s+1+#1s+1

一般式:
Laplace平滑
朴素贝叶斯问题,通过Laplace平滑:
NBLaplace
问题解决。

阅读全文
0 0
原创粉丝点击