机器学习数学基础(2)-贝叶斯、概率分布

1.直观理解贝叶斯

已知:有N个苹果,和M个梨子,苹果为黄色的概率为20%,梨子为黄色的概率为80%,问,假如我在这堆水果中观察到了一个黄色的水果,问这个水果是梨子的概率是多少。
用数学的语言来表达,就是已知:
P(apple) = N / (N + M);
P(pear) = M / (N + M);
P(yellow|apple) = 20%;
P(yellow|pear) = 80%。
求P(pear|yellow)。
要想得到这个答案,我们需要:
(1) 要求出全部水果中为黄色的水果数目;
(2.)求出黄色的梨子数目。
对于(1), 我们可以得到 P(yellow) * (N + M), P(yellow) = p(apple) * P(yellow|apple) + P(pear) * p(yellow|pear)。
对于(2),我们可以得到 P(yellow|pear) * M
于是(2)/(1)可得:
化简可得:P(pear|yellow) = P(yellow,pear) / P(yellow), 用简单的话来表示就是在已知是黄色的,能推出是梨子的概率P(pear|yellow)是黄色的梨子占全部水果的概率P(yellow,pear)除上水果颜色是黄色的概率P(yellow).
我们将梨子代换为A,黄色代换为B公式可以写成:P(A|B) = P(A,B) / P(B), 可得:P(A,B) = P(A|B) * P(B).贝叶斯公式就这样推出来了。

2.贝叶斯机器学习框架

(1)贝叶斯公式

机器学习问题中有一大类是分类问题,就是在给定观测数据D的情况下,求出其属于类别(也可以称为是假设h,h ∈ {h0, h1, h2…})的概率是多少, 也就是求出:
P(h|D), 可得:
P(h,D) = P(h|D) * P(D) = P(D|h) * P(h)
所以:
P(h|D) = P(D|h) * P(h) / P(D)
对于一个数据集下面的所有数据,P(D),恒定不变。所以可以认为P(D)为常数, 得到:P(h|D) ∝ P(D|h) * P(h)。我们往往不用知道P(h|D)的具体的值,而是知道例如P(h1|D),P(h2|D)值的大小关系就是了。这个公式就是机器学习中的贝叶斯公 式,一般来说我们称P(h|D)为模型的后验概率,就是从数据来得到假设的概率,P(h)称为先验概率,就是假设空间里面的概率,P(D|h)是模型的 likelihood概率。
Likelihood(似然)这个概率比较容易让人迷惑,可以认为是已知假设的情况下,求出从假设推出数据的概率,在实际的机器学习过程中,往往加入了很多的假设,比如一个英文翻译法文的问题:
给出一个英文句子,问哪一个法文句子是最靠谱的,P(f=法文句子|e=英文句子) = P(e|f) * p(f), p(e|f)就是likelihood函数,P(e|f) 写成下面的更清晰一点:p(e|f∈{f1,f2…})可以认为,从输入的英文句子e,推出了很多种不同的法文句子f,p(e|f)就是从这些法文句子中的某一个推出原句子e的概率。

(2)先验分布估计,likelihood函数选择

贝叶斯方法中,等号右边有两个部分,先验概率与likelihood函数。先验概率是得到在假设空间中,某一个假设出现的概率是多少,比如说在街上看到一个动物是长有毛的,问1. 这个动物是哈巴狗的概率是多少,2. 这个动物是爪哇虎的概率是多少。虽然两个假设的likelihood函数都非常的接近于1(除非这个动物病了),但是由于爪哇虎已经灭绝了,所以爪哇虎的先验概率为0,所以P(爪哇虎|有毛的动物)的概率也为0。
先验概率分布估计
在观测的时候,对于变量是连续的情况下,往往需要一个先验分布来得到稀疏数据集中没有出现过的,给出的某一个假设,在假设空间中的概率。比如说有一个很大很大的均匀金属圆盘,问这个金属圆盘抛到空中掉下来,正面朝上的概率,这个实验的成本比较高(金属圆盘又大又重),所以只能进行有限次数的实验,可能出现的是,正面向上4次,反面向上1次,但是我们如果完全根据这个数据集去计算先验概率,可能会出现很大的偏差。不过由于我们已知圆盘是均匀的,我们可以根据这个知识,假设P(X=正面) = 0.5。
Likelihood函数选择
对于同一个模型,likelihood函数可能有不同的选择,对于这些选择,可能有些比较精确、但是会搜索非常大的空间,可能有些比较粗糙,但是速度会比较快,我们需要选择不同的likelihood函数来计算后验概率。对于这些Likelihood函数,可能还需要加上一些平滑等技巧来使得最大的降低数据中噪声、或者假设的缺陷对结果的影响。

(3)损失函数


x是输入的数据,y(x)是推测出的结果的模型,t是x对应的真实结果,L(t,y(x))就是loss function,E[L]表示使用模型y进行预测,使用L作为损失函数的情况下,模型的损失时多少。通常来说,衡量一个模型是否能够准确的得到结果,损失函数是最有效的一个办法,最常用、最简单的一种损失函数是:

(4)模型选择

前文说到了对于likelihood函数可以有不同的选择,对于先验的概率也可以有不同的选择,不过假设我们一个构造完整的测试集和一个恰当的损失函数,最终的结果将会是确定的,量化的,我们很容易得到两个不同参数、方法的模型的优劣性。不过通常情况下,我们的测试集是不够完整,我们的损失函数也是不那么 的精确,所以对于在这个测试集上表现得非常完美的模型,我们常常可能还需要打一个问号,是否是训练集和测试集过于相像,模型又过于复杂。导致了过拟合。

3.参考文献

http://www.cnblogs.com/LeftNotEasy/archive/2010/09/27/1837163.html

你可能感兴趣的:(机器学习)