【学习笔记】斯坦福大学公开课(机器学习) 之生成学习算法:GDA

在之前的算法学习中,学到的都是通过建立P(y|x;θ)(已知x的条件分布)模型来做算法学习。比如,现在要分辨两种动物,大象(y=1)和狗(y=0),从之前的学习中,我们可以知道,需要从给定的训练数据集的特征x中,学习到通过特征值来判断结果的模型。
现在换种思路,我们分别建立模型来表示大象或狗,在分辨一个新动物时,把新动物按照这两种动物的模型分别做运算,看看这个动物更像哪一种模型。
以上就有两种学习算法,一种是通过一种模型直接学习到条件分布p(y|x),或者说是通过特征输入x预测出结果输出y的算法叫做判别学习算法(discriminative learning algorithms),而另一种算法,把各种分类对应的特征来建模,即建立条件分布p(x|y)(和p(y)),就叫做生成学习算法 (generative learning algorithms),在本例中,就是建立两个模型一个是大象的特征分布p(x|y=1)和狗的特征分布p(x|y=0)
当知道了p(y)(类先验)和p(x|y),我们的算法就能运用贝叶斯(Bayes)法则来推导出y的条件概率:

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

其中,分母p(x)=p(x|y=1)p(y=1)+p(x|y=0)p(y=0)
如果为了计算y=1和0的概率谁更大一些,我们不需要计算分母:
argmaxy(p(y|x))=argmaxy(p(x|y)p(y)p(x))=argmaxy(p(x|y)p(y))

高斯判别分析 (GDA,Gaussian Discrimniant analysis)

多元正态分布

在这个模型中,p(x|y)假设成为多元正态分布。
n维的多元正态分布,也叫做多元高斯分布,参数是均值向量(mean vector)μRn,还有一个参数是协方差(covariance matrix)矩阵Rnn,其中0是对称的半正定矩阵。分布写成数学形式是N(μ,),它的密度表示如下:

p(x;μ,)=1(2π)n/2||1/2exp(12(xμ)T 1(xμ))

其中||表示矩阵的行列式。
任何属于该分布N(μ,)的随机变量X的均值和协方差分别是:
E[X]=xxp(x;μ,)dx=μ

Cov(X)=

与一般的普通正态分布一样,均值决定了分布的中心点的位置,而方差决定了分布的范围。

高斯判别分析模型

当我们遇到特征x是连续随机变量时,我们就能用GDA模型,这个模型中,主要是把p(x|y)构建成为多元正态分布。具体模型如下:

yBernoulli(ϕ)

x|y=0N(μ0,)

x|y=1N(μ1,)

写出他们的分布:
P(y)=ϕy(1ϕ)(1y)

P(x|y=0)=1(2π)n/2||1/2exp(12(xμ0)T 1(xμ0))

P(x|y=1)=1(2π)n/2||1/2exp(12(xμ1)T 1(xμ1))

在这里,模型中的参数是ϕ,,μ0,μ1(2个分布都用同一个协方差矩阵,分别用两个不同的均值)。对以上的数据采用对数似然函数:
l(ϕ,μ0,μ1,)=logi=1mp(x(i),y(i);ϕ,μ0,μ1,)=logi=1mp(x(i)|y(i);μ0,μ1,)p(y(i);ϕ)

最大化似然函数后,可以算出参数的值:
ϕμ0μ1=1mi=1m1{y(i)=1}=mi=11{y(i)=0}x(i)mi=11{y(i)=0}=mi=11{y(i)=1}x(i)mi=11{y(i)=1}=1mi=1m(x(i)μy(i))(x(i)μy(i))T

把模型用图形来表示的:
【学习笔记】斯坦福大学公开课(机器学习) 之生成学习算法:GDA
可以看到2个高斯分布图形,他们有同样的协方差,所以这两个圆的半径是一样的,但他们不同的均值,使得他们的中心有所区别。
中间的直线就是区分的界限,表示p(y=1|x)=0.5