在之前的算法学习中,学到的都是通过建立
P(y|x;θ)
(已知x的条件分布)模型来做算法学习。比如,现在要分辨两种动物,大象(
y=1
)和狗(
y=0
),从之前的学习中,我们可以知道,需要从给定的训练数据集的特征
x
中,学习到通过特征值来判断结果的模型。
现在换种思路,我们分别建立模型来表示大象或狗,在分辨一个新动物时,把新动物按照这两种动物的模型分别做运算,看看这个动物更像哪一种模型。
以上就有两种学习算法,一种是通过一种模型直接学习到条件分布
当知道了
p(y)
(类先验)和
p(x|y)
,我们的算法就能运用贝叶斯(Bayes)法则来推导出
y
的条件概率:
其中,分母 p(x)=p(x|y=1)p(y=1)+p(x|y=0)p(y=0)
如果为了计算y=1和0的概率谁更大一些,我们不需要计算分母:
高斯判别分析 (GDA,Gaussian Discrimniant analysis)
多元正态分布
在这个模型中,
p(x|y)
假设成为多元正态分布。
n维的多元正态分布,也叫做多元高斯分布,参数是均值向量(mean vector)
μ∈Rn
,还有一个参数是协方差(covariance matrix)矩阵
∑∈Rn∗n
,其中
∑≥0
是对称的半正定矩阵。分布写成数学形式是
N(μ,∑)
,它的密度表示如下:
其中 |∑| 表示矩阵 ∑ 的行列式。
任何属于该分布 N(μ,∑) 的随机变量 X 的均值和协方差分别是:
与一般的普通正态分布一样,均值决定了分布的中心点的位置,而方差决定了分布的范围。
高斯判别分析模型
当我们遇到特征
x
是连续随机变量时,我们就能用GDA模型,这个模型中,主要是把
写出他们的分布:
在这里,模型中的参数是 ϕ,∑,μ0,μ1 (2个分布都用同一个协方差矩阵 ∑ ,分别用两个不同的均值)。对以上的数据采用对数似然函数:
最大化似然函数后,可以算出参数的值:
把模型用图形来表示的:
可以看到2个高斯分布图形,他们有同样的协方差,所以这两个圆的半径是一样的,但他们不同的均值,使得他们的中心有所区别。
中间的直线就是区分的界限,表示 p(y=1|x)=0.5