生成学习算法介绍
关于生成算法的解释,可以参考1中的论述:
以前我们介绍的学习算法都是判别学习算法 ,换句话说当输入测试数据时将会直接输出测试数据归属于哪一类。而生成学习算法 则是在输入测试数据后算出针对该测试数据,每一类对应的概率,然后选取最大值。这里举一个例子,当我要知道一个人到底是男生的还是女生,判别学习算法则根据输入的特征来判断男生或者女生,但是生成学习算法则是会根据输入特征分别算出在该特征的情况下男生的概率和女生的概率,然后选出最大值。
面给出公式 p(y|x)=p(x|y)p(y)p(x) (贝叶斯公式)。
p(y|x) 就是特征为x的时候,将样本分类为y的概率。贝叶斯公式是根据全概率公式推出来的,下面这些公式从贝叶斯公式里推出来,所以基础还是全概率公式。将刚才的公式改一下,就有了
假设我们要根据一个人身上穿的裙子来判断这个人是男生还是女生,我们会分别求出
p(boy|skirt)=p(skirt|boy)p(boy)p(skirt),p(girl|skirt)=p(skirt|girl)p(girl)p(skirt)由实际常识可以知道最终我们会得到在输入特征为裙子的情况下我们会得到p(girl|skirt)>p(boy|skirt),即女生穿裙子的概率比男生穿裙子的概率要大,所以在输入特征为裙子的情况下,我们认为这个人是女生的可能性更高,所以我们判断为女生。
上图中的红线和蓝线则分别表示p(x|y=i) p(x|y=j),横轴表示输入特征x,即在假定输入类别为y=i的情况下,输入特征x对应的概率即为p(x|y=i).
生成学习算法使用例子:高斯判别分析
使用条件
高斯判别分析的假设:
1.输入特征x是实数,且为连续型变量
2.p(x|y)是多维正态分布,也就是高斯分布。
例子
假设:
y
~
x|y=0
~
N(μ0,Σ)
x|y=1
~
N(μ1,Σ)
首先假设输出y符合伯努利分布,输出结果 p(y=1)=φ , p(y=0)=1−φ ,后验概率 p(x|y=1) , p(x|y=0) 符合高斯分布,用贝叶斯公式 p(y|x)=p(x|y)p(y)p(x) 求出p(y|x),然后按照机器学习中通过求解概率的最大似然估计求出对应的参数值。
有了参数值,就可以求p(x|y),可以判断分类的大小了。
朴素贝叶斯算法(Naive Bayesian)
在高斯判别分析中输入变量x是连续向量的,如果输入变量是离散值,朴素贝叶斯对应的是特征值是离散的情况。假设对于给定y,对于输入变量
x(i)
是独立的,即有
p(x1,x2,......,xn|y)=p(x1|y)p(x2|y)......p(xn|y)