决策函数 Y = f ( x ) Y = f(x) Y=f(x)或者条件概率分布
P ( Y ∣ X ) P(Y|X) P(Y∣X)
监督学习的任务都是从数据中学习一个模型(也叫做分类器),应用这一模型,对给定的输入 x x x预测相应的输出 Y Y Y,这个模型的一般形式为:决策函数 Y = f ( x ) Y =f(x) Y=f(x),或者条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X)
决策函数 Y = f ( x ) Y = f(x) Y=f(x):你输入一个 x x x,其就输出一个 y , y, y,,这个 Y Y Y与一个阈值比较,根据比较结果判定 x x x属于那个类别,例如两个累 w 1 和 w 2 w1和w2 w1和w2的分类问题,如果 Y Y Y大于阈值,则 x x x属于类 w 1 w1 w1,如果小于阈值则属于类 w 2 w2 w2,这样就得到了该x对应的类别啦。
条件概率分布
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X),你输入一个x,其通过比较其属于所有类的概率,然后输出概率最大的作为该
x
x
x对应的类别。例如:
如果
P
(
w
1
∣
x
)
大
于
p
(
w
2
∣
x
)
P(w1|x)大于p(w2|x)
P(w1∣x)大于p(w2∣x),那么我们就认为
x
x
x属于w1类的。
所以上面两个模型,都可以实现对给定输入
X
X
X预测相应的输出
Y
Y
Y的功能。实际上通过条件概率的分布
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X),进行预测,也是隐含着表达成决策函数
Y
=
f
(
x
)
Y = f(x)
Y=f(x)形式的。例如也是两类
w
1
和
w
2
w1和w2
w1和w2,那么我们求得
P
(
w
1
∣
x
)
,
P
(
w
2
∣
x
)
P(w1|x),P(w2|x)
P(w1∣x),P(w2∣x),那么实际上判别函数都可以表示成:
Y
=
P
(
w
1
∣
X
)
/
P
(
w
2
∣
X
)
Y= P(w1|X)/P(w2|X)
Y=P(w1∣X)/P(w2∣X),如果Y大于1或者某个阈值,那么X就属于类w1,如果小于阈值则属于w2。而同样的,很神奇的一件事请,实际上决策函数
Y
=
f
(
x
)
Y = f(x)
Y=f(x),也是隐含着使用
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)的,
因为一般决策函数
Y
=
f
(
X
)
Y=f(X)
Y=f(X),是通过学习算法,使你的预测和训练数据之间的误差平方最小化。而贝叶斯告诉我们,虽然其没有显示的运用贝叶斯或者以某种形式计算概率,但其实际上也是在隐含的输出极大似然假设,(MAP假设)。也就是说学习器的任务是在所有假设模型都有相等的先验概率条件下。输出极大似然假设。
所以呢,分类器的设计都是给定训练数据的基础上,估计其概率模型
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X),如果可以估计出来,那么就可以进行分类的。但是一般来说,概率模型是比较难估计的,给一堆数给你。特别是数不多的时候,你一般很难找到这些数满足什么规律吧。那能否不依赖概率模型直接设计分类器呢?事实上,分类器就是一个决策函数(决策面)。如果能够从要解决问题和训练样本出发,直接求出判别函数。就不用估计概率模型了。这就是决策函数
Y
=
f
(
x
)
Y = f(x)
Y=f(x)的伟大使命了。例如:支持向量机,我们已经知道其决策函数(分类面)是线性的了。也就是可以表示成
Y
=
f
(
X
)
=
W
X
+
b
Y=f(X)=WX+b
Y=f(X)=WX+b的形式的。 那么我们通过训练样本来学习得到
W
和
b
W和b
W和b的值,就可以得到
Y
=
F
(
X
)
Y = F(X)
Y=F(X),
还有一种更直接的分类方法,其不用事先设计分类器,而是只确定分类原则,根据已知样本(训练样本)直接对未知样本进行分类。包括近邻法、其不会在进行具体的预测之前求出概率模型
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X),或者决策函数
Y
=
f
(
x
)
Y = f(x)
Y=f(x),而是在真正预测的时候,将x与训练数据的各类
x
i
x_i
xi比较,和那些比较相似,就判断其X属于
x
i
x_i
xi对应的类。
生成式和判别式方法
监督学习方法又分为生成式方法和判别式方法。所学到的模型分别分为生成模型和判别模型,简称GM和DM。
生成方法
生成方法:由数据学习联合概率分布
P
(
X
,
Y
)
P(X,Y)
P(X,Y),然后求出条件概率分布
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X),作为预测模型,即生成模型为
P
(
Y
∣
X
)
=
P
(
X
,
Y
)
P
(
X
)
P(Y|X) = \frac{P(X,Y)}{P(X)}
P(Y∣X)=P(X)P(X,Y)
基本思想是首先建立,联合样本的概率密度模型 P ( X , Y ) P(X,Y) P(X,Y),然后再得到后验概率 P ( Y ∣ X ) P(Y|X) P(Y∣X),再利用其进行分类。就像上面所说那样,这里先求出 P ( X , Y ) P(X,Y) P(X,Y)才得到 P ( Y ∣ X ) P(Y|X) P(Y∣X)的,然后这个过程还是先求出 P ( x ) P(x) P(x), P ( x ) P(x) P(x)就是你训练数据的概率分布。需要你的数据样本非常多的时候,你得到的 P ( x ) P(x) P(x)才能很好额描述你数据的真正分布,例如,你投硬币,你尝试了100次,得到正面次数和你实验次数比可能是 3 10 \frac{3}{10} 103, 然后你直觉告诉你,你可能不对,然后你再尝试了500次,哎,这次,你正面次数和你的实验次数的比可能变成了 4 10 \frac{4}{10} 104,这时候,你就半信半疑了,不相信上帝还有一个手,所以你再尝试了200000次,这时候正面次数和你实验次数比,就变成 5 10 \frac{5}{10} 105,这时候,你就觉得很靠谱啦。
还有一个问题,就是,在机器学习这种还有一个约定俗称的规则,不要去学习那些对机器学习任务没有用的东西。例如:对于一个分类任务,对一个给定输入
x
x
x中,在将其划分到一个类
y
y
y中,那么我们用生成模型:
p
(
x
,
y
)
=
p
(
y
∣
x
)
.
p
(
x
)
p(x,y)=p(y|x).p(x)
p(x,y)=p(y∣x).p(x).
那么,我们就**需要去对p(x)建模**,但这增加了我们的工作量,(除了上面说的那个**估计得到P(X)可能不太准确外)**。实际上,因为数据的稀疏性,导致我们都**是被强迫地使用弱独立性假设去对p(x)建模**的,所以就产生了局限性。所以我们**更趋向于直观的使用判别模型去分类**。
这样的方法之所以称为生成方法,是因为模型表示了给定输入X产生输出Y的生成关系。**用于随机生成的观察值建模**,特别是在给定某些隐藏参数情况下**。典型的生成模型有:朴素贝叶斯和隐马尔科夫模型**等。
常见的生成式模型总结如下
- 生成式模型
朴素贝叶斯
贝叶斯网络
pLSA
LDA
隐马尔可夫模型
高斯判别分析(GDA) -
- 判别式模型
最大熵模型
条件随机场
k近邻算法
感知机
决策树
逻辑回归
SVM
AdaBoost
- 判别式模型