Preface
主要内容:
Generative Learning Algorithms(GLA,生成学习算法)
Gaussian Discriminant Analysis(GDA,高斯判别分析)
Naive Bayes(朴素贝叶斯)
Laplace Smoothing(拉普拉斯平滑)
Generative Learning Algorithms
生成学习算法GLA与判别学习算法DLA:
- 判别学习算法DLA:我们在前面几篇文章中所讲述的算法模型大都属于判别学习算法DLA(Discriminative Learning Algorithm),它是通过对于已有的数据集直接学习其不同类别的特征得到 p(y|x;θ) p ( y | x ; θ ) 或者 假设预测函数 h(θ) h ( θ ) 直接输出0或1。
- 生成学习算法GLA:对 p(x|y) p ( x | y ) (在给定所属的类别的情况下,对特征出现的概率建模)或者 p(y) p ( y ) ,其中 x x 表示某一个样本的特征, 表示类别标签。
- 例子:
现在假设有 y=0 y = 0 表示类别一, y=1 y = 1 表示类别二, x x 表示某一个样本的特征。
根据贝叶斯公式有:
or
p(y=0|x)=p(x|y=0)p(x)p(x) p ( y = 0 | x ) = p ( x | y = 0 ) p ( x ) p ( x )
根据全概率公式有:
p(x)=p(x|y=1)p(y=1)+p(x|y=0)p(y=0) p ( x ) = p ( x | y = 1 ) p ( y = 1 ) + p ( x | y = 0 ) p ( y = 0 )
常见的生成模型有:隐马尔可夫模型HMM、朴素贝叶斯模型、高斯混合模型GMM、LDA等。
Gaussian Discriminant Analysis
Multivariate Gaussian Distribution(多元高斯分布)
现,假设
x∼N(μ⃗ ,∑)
x
∼
N
(
μ
→
,
∑
)
,
X∈Rn
X
∈
R
n
且连续,其中
μ⃗ ∈Rn
μ
→
∈
R
n
为均值向量,
∑∈Rn∗n
∑
∈
R
n
∗
n
为协方差矩阵(关于协方差矩阵可以查看这篇博文https://www.cnblogs.com/terencezhou/p/6235974.html)。所以
z
z
的概率密度函数为:
协方差矩阵:
多元高斯分布的参数分布效果:
1.观察 ∑ ∑ 对于高斯曲面的影响。
我们可以得出结论(将 μ=0,∑=I μ = 0 , ∑ = I 当做标准形态):
- 当增加矩阵的当减小主对角线的值时,高斯曲面变陡峭;
- 当增加矩阵的当增大主对角线的值时,高斯曲面变扁平;
- 当矩阵的副对角线向正无穷增大时,高斯曲面沿 y=x y = x 为对称轴变扁,变高;
- 当矩阵的副对角线向负无穷增大时,高斯曲面沿 y=−x y = − x 为对称轴变扁,变高;
我们可以通过等高线更形式化的观察:
2.观察
μ
μ
对于高斯曲面的影响(中心偏移)(
∑=I
∑
=
I
)。
Gaussian Discriminant Analysis model
现在,如果我们在遇到对于
0−1
0
−
1
问题的分类问题,我们就可以使用高斯判别分析模型直接对于
P(x|y)
P
(
x
|
y
)
建模来划分我们的类别。
例如下图:
在图中我们假设 :
y∈{0,1}:y∼Bernoulli(ϕ)
y
∈
{
0
,
1
}
:
y
∼
B
e
r
n
o
u
l
l
i
(
ϕ
)
,
x|y=0∼N(μ0,∑)
x
|
y
=
0
∼
N
(
μ
0
,
∑
)
,
x|y=1∼N(μ1,∑)
x
|
y
=
1
∼
N
(
μ
1
,
∑
)
。
所以概率密度函数为:
即,似然函数(这里,它有来一个新名字joint liklihood)为:
最后根据极大似然估计的结果:
其中,
ϕ ϕ 是贝努利分布中 y=1 y = 1 的训练集中标签为1的样本所占的比例,
μ0 μ 0 表示为 训练集中标签为0的x的和训练集中标签为0的样本数量 训 练 集 中 标 签 为 0 的 x 的 和 训 练 集 中 标 签 为 0 的 样 本 数 量 ,即训练集中标签为 0 的样本的x的均值。
μ1 μ 1 表示为 训练集中标签为1的x的和训练集中标签为1的样本数量 训 练 集 中 标 签 为 1 的 x 的 和 训 练 集 中 标 签 为 1 的 样 本 数 量 ,即训练集中标签为 1 的样本的x的均值。
最后根据下述公式进行预测:
Gaussian Discriminant Analysis与Logistic Regression
在上面的课程截图中我们看到如果我们对于样本中x与o分别假设其满足高斯分布,然后通过刚刚讲述的GDA模型,我们可以训练出
ϕ,μ1,μ2,∑
ϕ
,
μ
1
,
μ
2
,
∑
参数,以及概率函数
p(x|y=0),p(x|y=1)
p
(
x
|
y
=
0
)
,
p
(
x
|
y
=
1
)
。
继而,我们现在去求在特征
x
x
下 的概率
p(x|y=1;ϕ,∑,μ1,μ2)
p
(
x
|
y
=
1
;
ϕ
,
∑
,
μ
1
,
μ
2
)
。
既有,
找到了后验分布。(满足Logistic Regression)对于柏松分布(以及指数分布族)也有如上的性质。
总结:
所需要的数据更少,有着更好的健壮性。
高斯判别分析和逻辑回归最大的区别就是,高斯判别做了更强的假设,而逻辑回归没有。如果一个输入xx服从的是泊松分布,而你假设成了高斯分布,那么计算的结果就没有逻辑回归得到的好。但是如果你的输入就是严格服从高斯,或者近似服从高斯,相比于逻辑回归你只需要更少的训练就可以得到很好的效果。在实际中这就要求我们根据具体情况进行权衡。
Naive Bayes
朴素贝叶斯(NB)算法是第二个生成学习算法。典型特例是垃圾邮件识别。高斯判别分析中,x向量是一个连续值。在朴素贝叶斯中,x向量是不连续的。
我们以如何构建垃圾邮件识别的例子来讲述朴素贝叶斯(NB)算法:
Step1:构建字典。
我们首先对于近几个月的邮件(已知道哪些是垃圾邮件)的所有单词建立词典库(假设词典库包含50000个单词),并编号。
对于一封邮件,如果它含有词典库中的单词就将那一项的
xi
x
i
置1,否则置0。并用
y=0
y
=
0
表示非垃圾邮件,
y=1
y
=
1
表示垃圾邮件。
Step2:假设独立。
假设
P(xi|y)与P(xj|y)
P
(
x
i
|
y
)
与
P
(
x
j
|
y
)
相互独立 ,
i≠j,且i,j∈{1,50000}
i
≠
j
,
且
i
,
j
∈
{
1
,
50000
}
这是由于字典规模过于巨大。
对于一封邮件,如果它含有词典库中的单词就将那一项的
xi
x
i
置1,否则置0。但是,这会导致参数过于巨大化,不利于计算。
Step3:模型参数。
拟合模型参数,joint似然函数为:
极大似然估计:
Step4:预测函数。
Laplace Smoothing
分子为零情况
对于预测函数,在我们训练好NB模型后,来了全新的一封邮件,其中有一个单词NIPS在之前没有在字典中出现过,假如它出现的位置为35000处,因为之前没有在字典中出现过,故无法判断是否为垃圾邮件,
x35000=0
x
3
5000
=
0
,则得到的参数均为零:
所以有,
Laplace Smoothing
我们选择添加安全因子来避免分子为零情况