@@ -1,4 +0,0 @@
|
||||
一元回归
|
||||
二元回归
|
||||
多元回归
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
二分类
|
||||
多分类
|
||||
@@ -1,211 +0,0 @@
|
||||
import numpy as np
|
||||
import math
|
||||
from scipy.special import comb,perm
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
class CheckMaximumL(object):
|
||||
def __init__(self):
|
||||
self.p = 0
|
||||
self.l = 0
|
||||
|
||||
def set(self, p, l):
|
||||
if (l > self.l):
|
||||
self.p = p
|
||||
self.l = l
|
||||
|
||||
def get(self):
|
||||
return self.p, self.l
|
||||
|
||||
def strf(prefix, f):
|
||||
return str.format("{0}={1:2f}", prefix, f)
|
||||
|
||||
def BernoulliDist():
|
||||
L = []
|
||||
N = 10
|
||||
for x in range(N+1):
|
||||
l = comb(N,x) * math.pow(0.6,x) * math.pow(0.4,N-x)
|
||||
L.append(l)
|
||||
plt.text(x,l,np.around(l, 3))
|
||||
print(np.sum(L))
|
||||
|
||||
plt.plot(L, '-o')
|
||||
plt.xlabel("x")
|
||||
plt.ylabel("probability")
|
||||
plt.title("Bernoulli Distribution")
|
||||
plt.grid()
|
||||
plt.show()
|
||||
|
||||
def Likelihood_bernoulli(N,X,title="Bernoulli Likelihood"):
|
||||
checker = CheckMaximumL()
|
||||
L = []
|
||||
P = np.linspace(0,1,num=101)
|
||||
for p in P:
|
||||
l = math.pow(p,X) * math.pow(1-p,N-X)
|
||||
L.append(l)
|
||||
checker.set(p, l)
|
||||
#endfor
|
||||
plt.plot(P, L)
|
||||
x,y = checker.get()
|
||||
plt.plot(x,y,'x')
|
||||
plt.text(x,y,strf(r'$\theta$', x))
|
||||
plt.xlabel(r'$\theta$')
|
||||
plt.ylabel("likelihood")
|
||||
plt.title(title)
|
||||
plt.grid()
|
||||
plt.show()
|
||||
|
||||
|
||||
def likelihood_exp(X, style):
|
||||
checker = CheckMaximumL()
|
||||
L = []
|
||||
P = np.linspace(0.01,3,num=100)
|
||||
n = X.shape[0]
|
||||
mean = np.mean(X)
|
||||
print(mean)
|
||||
for p in P:
|
||||
l = np.exp(-np.sum(X)/p) / np.power(p,n)
|
||||
l = l * np.power(X[0],3) # 不是公式的一部分,是为了让两条线的高度差不多
|
||||
L.append(l)
|
||||
checker.set(p,l)
|
||||
ll, = plt.plot(P, L, linestyle=style)
|
||||
x,y = checker.get()
|
||||
plt.plot(x,y,'x')
|
||||
plt.text(x,y,strf(r'$\theta$', mean))
|
||||
plt.xlabel(r'$\theta$')
|
||||
plt.ylabel("likelihood")
|
||||
return ll
|
||||
|
||||
def exp_fun(p):
|
||||
n = 10
|
||||
x = np.linspace(0,1,num=n)
|
||||
X = 1 / p * np.exp(-1 * x / p)
|
||||
return X
|
||||
|
||||
def likelihood_exps():
|
||||
lines = []
|
||||
labels = []
|
||||
styles = ['-', '--','-.',':']
|
||||
p = [0.5, 0.3]
|
||||
for i in range(2):
|
||||
X = exp_fun(p[i])
|
||||
print(X)
|
||||
print(np.mean(X))
|
||||
ll = likelihood_exp(X, styles[i])
|
||||
plt.title("Exponential Distribution")
|
||||
plt.grid()
|
||||
plt.show()
|
||||
|
||||
def likelihood_norm_mu(style):
|
||||
checker = CheckMaximumL()
|
||||
L = []
|
||||
P = np.linspace(0,1,num=101)
|
||||
n=10
|
||||
X = np.random.normal(0.5,0.5,n)
|
||||
mu_max = np.mean(X)
|
||||
std = np.std(X)
|
||||
for mu in P:
|
||||
sum = np.sum(np.square(X - mu))
|
||||
l = np.exp(-0.5 * sum / np.square(std)) * np.power(np.sqrt(2*np.pi*std), n)
|
||||
L.append(l)
|
||||
checker.set(mu, l)
|
||||
ll, = plt.plot(P, L, linestyle=style)
|
||||
x,y = checker.get()
|
||||
plt.plot(x,y,'x')
|
||||
plt.text(x,y,strf(r'$\mu$', mu_max))
|
||||
plt.xlabel(r'$\mu$')
|
||||
plt.ylabel("likelihood")
|
||||
return ll
|
||||
|
||||
def likelihood_norm_sigma(style):
|
||||
checker = CheckMaximumL()
|
||||
L = []
|
||||
P = np.linspace(0.01,1,num=100)
|
||||
n=10
|
||||
X = np.random.normal(0.5,0.5,n)
|
||||
mu = np.mean(X)
|
||||
std_max = np.sum(np.square(X-mu))/n
|
||||
for sigma2 in P:
|
||||
l = np.exp(-0.5 * np.sum(np.square(X-mu)) / sigma2) / np.power(np.sqrt(sigma2*2*np.pi),n)
|
||||
L.append(l)
|
||||
checker.set(sigma2, l)
|
||||
ll, = plt.plot(P, L, linestyle=style)
|
||||
x,y = checker.get()
|
||||
plt.plot(x,y,'x')
|
||||
plt.text(x,y,strf(r'$\sigma^2$', std_max))
|
||||
plt.xlabel(r'$\sigma^2$')
|
||||
plt.ylabel("likelihood")
|
||||
#plt.show()
|
||||
return ll
|
||||
|
||||
def likelihood_norms():
|
||||
styles = ['-', '--','-.',':']
|
||||
for i in range(2):
|
||||
likelihood_norm_mu(styles[i])
|
||||
plt.title("Normal Distribution")
|
||||
plt.grid()
|
||||
plt.show()
|
||||
|
||||
styles = ['-', '--','-.',':']
|
||||
for i in range(2):
|
||||
likelihood_norm_sigma(styles[i])
|
||||
plt.title("Normal Distribution")
|
||||
plt.grid()
|
||||
plt.show()
|
||||
|
||||
def BetaDist(a, b, style):
|
||||
c = math.factorial(a+b-1)/(math.factorial(a-1)*math.factorial(b-1))
|
||||
F = []
|
||||
X = np.linspace(0,1,num=101)
|
||||
for x in X:
|
||||
f = c * math.pow(x, a-1) * math.pow(1-x, b-1)
|
||||
F.append(f)
|
||||
#endfor
|
||||
l = str.format(r"$\alpha={0}, \beta={1}$", a, b)
|
||||
#print(l)
|
||||
plt.plot(X,F,label=l,linestyle=style)
|
||||
|
||||
def likelihood_Beta(alpha, beta, a, b):
|
||||
checker = CheckMaximumL()
|
||||
c = math.factorial(alpha+beta-1)/(math.factorial(alpha-1)*math.factorial(beta-1))
|
||||
F = []
|
||||
X = np.linspace(0,1,num=101)
|
||||
for x in X:
|
||||
f = c * math.pow(x, a) * math.pow(1-x, b)
|
||||
F.append(f)
|
||||
checker.set(x, f)
|
||||
#endfor
|
||||
x,y = checker.get()
|
||||
plt.plot(x,y,'x')
|
||||
plt.text(x,y,strf(r'$\theta$', x))
|
||||
plt.plot(X,F)
|
||||
plt.grid()
|
||||
plt.title("Beta Distribution")
|
||||
plt.show()
|
||||
|
||||
def BetaDists():
|
||||
BetaDist(3,3,'-')
|
||||
BetaDist(5,1,'-.')
|
||||
BetaDist(2,2,'--')
|
||||
BetaDist(1,3,':')
|
||||
plt.grid()
|
||||
plt.ylim(ymax=2.5)
|
||||
plt.xlabel("x")
|
||||
plt.ylabel("PDF")
|
||||
plt.title("Beta Distribution")
|
||||
plt.legend()
|
||||
plt.show()
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
BernoulliDist()
|
||||
Likelihood_bernoulli(N=10,X=7)
|
||||
likelihood_exps()
|
||||
likelihood_norms()
|
||||
|
||||
BetaDists()
|
||||
|
||||
|
||||
likelihood_Beta(3, 3, 9, 5)
|
||||
|
||||
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
<!--Copyright © Microsoft Corporation. All rights reserved.
|
||||
适用于[License](https://github.com/Microsoft/ai-edu/blob/master/LICENSE.md)版权许可-->
|
||||
|
||||
|
||||
|
||||
|
||||
首先统一一下本教程中数学表达式中的符号的含义:
|
||||
|
||||
- $p(a|b)$,是条件概率,在 $b$ 发生的条件下 $a$ 发生的概率。
|
||||
|
||||
- $p(a,b)$或$p(ab)$,是 $a$ 和 $b$ 两个事件同时发生的概率。
|
||||
|
||||
- $p(a;b)$,是以 $b$ 为参数,以 $a$ 为采样值的函数,常写成 $f(x_1,...,x_n;\theta)$,其中 ($x_1,...,x_n$) 是 $n$ 个采样值,$\theta$ 是参数,可以是一个标量(表示只有一个参数),也可以是一个向量(表示有多个参数)。
|
||||
@@ -1,144 +0,0 @@
|
||||
<!--Copyright © Microsoft Corporation. All rights reserved.
|
||||
适用于[License](https://github.com/Microsoft/ai-edu/blob/master/LICENSE.md)版权许可-->
|
||||
|
||||
|
||||
## 基本概率知识回顾
|
||||
|
||||
### 先验概率(Prior Probability)
|
||||
|
||||
根据以往的经验进行统计和分析得到的概率。
|
||||
|
||||
问题1:一个袋子中装有6个白球,4个黑球,取一只球出来,拿到白球的概率是多少?
|
||||
|
||||
对于这个问题,一开始人们并不知道如何解答,于是有个英国人开始做试验:拿出一个来,记录颜色,放回并搅乱;再拿出一个来,记录颜色,放回并搅乱......如此重复500次,发现有300次拿到了白球,200次拿到了黑球。后来这个英国人写了一篇论文叫做《White and Black Ball》,宣布拿到白球的概率是0.6,与袋子中黑白球比例有关。
|
||||
|
||||
有个法国人看到了这篇论文,觉得很有趣,于是重复了这个试验,证实了取到白球的概率确实与球的比例有关,只不过为了写论文,他在体育场中放了70个排球和30个足球,让一个盲人去踢球,最终得到的结果是0.7,于是他的论文名称叫做《Volleyball vs. Football》。
|
||||
|
||||
当然后来意大利人也做了改良试验,不过这类论文再也没有被接收......但是大家都知道了结论,不用再亲自去做试验来验证了,所以叫做**先验概率**。
|
||||
|
||||
### 独立事件
|
||||
|
||||
问题2:一个袋子中装有6个白球,4个黑球,取第一只球出来是白球的概率是0.6,黑球的概率是0.4(先验概率,记作A),放回。取第二球出来是黑球的概率(记作B)是多少?
|
||||
|
||||
由于两个事件独立,不论$P(A)$如何取值,总会有$P(B)=0.4$,还是先验概率。
|
||||
|
||||
### 条件概率
|
||||
|
||||
问题3:一个袋子中装有6个白球,4个黑球,取第一只球出来是白色的(记作A),不放回,取第二球出来是黑球的概率(记作B)是多少?
|
||||
|
||||
先用排列组合的方法计算一下$P(AB)$的值:
|
||||
- 10个球取两个,一共有$C^2_{10}$种方法;
|
||||
- 取到任意一个白球的方法是$C_6^1$种;
|
||||
- 取到任意一个黑球的方法是$C_4^1$种;
|
||||
- 先白后黑$P(AB)$和先黑后白$P(BA)$是一样的效果,所以有2种方法。
|
||||
|
||||
综合以上:
|
||||
$$
|
||||
P(AB) = \frac{C_6^1 \times C_4^1}{2 \times C_{10}^2}=\frac{6 \times 4}{2 \times 45}=\frac{4}{15} \tag{1}
|
||||
$$
|
||||
|
||||
其实$P(AB)$也是一种先验概率。
|
||||
|
||||
下面我们用条件概率公式来计算一下。条件概率公式:
|
||||
|
||||
$$
|
||||
P(B|A) = \frac{P(AB)}{P(A)}=\frac{4/15}{0.6}=\frac{4}{9} \tag{2}
|
||||
$$
|
||||
|
||||
如果利用先验概率方法也可以得到:因为不放回,所以还剩9个球(5个白,4个黑),第二球是黑色的概率为$P(B|A)=\frac{4}{9}$,与公式2的结果一致。
|
||||
|
||||
### 全概率定理
|
||||
|
||||
问题4:一个袋子中装有6个白球,4个黑球,取第一只球出来不管何种颜色都不放回(记作A),取第二球出来是黑球的概率(记作B)是多少?
|
||||
|
||||
- 当第一只球是白色时,$P(A_{white})=0.6$,第二只球是黑色的概率:$P(B|A_{white})=\frac{4}{9}$;
|
||||
|
||||
- 当第一只球是黑色时,$P(A_{black})=0.4$,第二只球是黑色的概率:$P(B|A_{black})=\frac{3}{9}$
|
||||
|
||||
根据全概率定理:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
P(B) &= \sum_{i=1}^2 P(A_i) \cdot P(B|A_i) \\
|
||||
&=0.6 \times \frac{4}{9} + 0.4 \times \frac{3}{9}=0.4
|
||||
\end{aligned} \tag{3}
|
||||
$$
|
||||
|
||||
可以看到,不管第一个球是什么,第二个球是黑色的概率和先验概率一致。
|
||||
|
||||
### 后验概率(Posterior Probability)
|
||||
|
||||
问题5:还是那个口袋和那些球,已知第二次摸到了黑球(记作B),问第一次摸到白球(记作A)的概率是多少?
|
||||
|
||||
这里需要贝叶斯定理来求解,公式为:
|
||||
|
||||
$$
|
||||
P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} \tag{4}
|
||||
$$
|
||||
|
||||
结合全概率定理的另外一种写法:
|
||||
|
||||
$$
|
||||
P(A_m|B) = \frac{P(A_m) \cdot P(B|A_m)}{\sum_i P(A_i) \cdot P(B|A_i)} \tag{5}
|
||||
$$
|
||||
|
||||
公式5的分母就是公式4,而 $A_m$ 表示是拿到了白球或黑球,$m=1,2$,其中1代表white,2代表black。根据公式5,有:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
P(A_1|B) &= \frac{P(A_1)P(B|A_1)}{P(B)} \\
|
||||
&=\frac{0.6 \times 4/9}{2/5}=\frac{2}{3}
|
||||
\end{aligned}
|
||||
$$
|
||||
|
||||
### 概率密度分布
|
||||
|
||||
问题6:一个袋子中装有6个白球,4个黑球,有回放地每次取一只球,共取10次,问取到7次白球(另外3次当然是黑球)的概率是多少?
|
||||
|
||||
由于这是个二项分布模型(只有黑白两色),根据伯努利模型的概率密度函数公式:
|
||||
|
||||
$$
|
||||
f(x;\theta)=\begin{cases} \theta & x=1(白色) \\ 1-\theta & x=0(黑色) \end{cases} \tag{6}
|
||||
$$
|
||||
|
||||
取到 $k$ 次白球的概率为:
|
||||
|
||||
$$
|
||||
P(x_1,x_2,...,x_n|\theta) = C_n^k \theta^k (1-\theta)^{n-k} \tag{7}
|
||||
$$
|
||||
|
||||
其中 $n$ 是试验的次数,$\theta=0.6$ 是白球的比例,$k$ 是白色球的次数,$k=x_1 + x_2 + ... + x_n = \sum_{i=1}^n x_i$,因为$x_i$的取值范围只有0和1,所以上例中7次白球3次黑球的结果是$x_i$是1的情况有7次,所以 k=7。
|
||||
|
||||
$$
|
||||
P(k=7|\theta=0.6,n=10) = C_{10}^7 \cdot 0.6^7 \cdot 0.4^{10-3}=0.21499
|
||||
$$
|
||||
|
||||
我们还可以令$k=[0,10]$,从而计算出所有分布的可能性来:
|
||||
|
||||
```
|
||||
0.000105
|
||||
0.001573
|
||||
0.010617
|
||||
0.042467
|
||||
0.111477
|
||||
0.200658
|
||||
0.250823
|
||||
0.214991
|
||||
0.120932
|
||||
0.040311
|
||||
0.006047
|
||||
sum=1.0
|
||||
```
|
||||
|
||||
<img src="images/BernoulliDist.png"/>
|
||||
|
||||
图1 参数为0.6时取到x次白球的概率
|
||||
|
||||
从图中可以看到,因为参数为0.6,所以取到6次白球的概率最大,为0.250823。而曲线下的面积相加为1,所以这确实是一个概率密度函数。
|
||||
|
||||
为什么图1的曲线不平滑呢?是因为试验样本数量太少,只有10次,如果增加到100次(相应地会取到70次白球),那么图1中的曲线会平滑很多。
|
||||
|
||||
### 问题与思考
|
||||
|
||||
- 我们在上面的例子中用公式4求解的问题5,请自己用公式5求解问题5。
|
||||
- 图1中,如果 $n=20$ 的话,$x$ 值为多少时概率最大呢?概率是多少?
|
||||
@@ -1,219 +0,0 @@
|
||||
<!--Copyright © Microsoft Corporation. All rights reserved.
|
||||
适用于[License](https://github.com/Microsoft/ai-edu/blob/master/LICENSE.md)版权许可-->
|
||||
|
||||
## 最大似然估计
|
||||
|
||||
### 概率和统计的区别
|
||||
|
||||
概率(Probability)是已知模型和参数,用来预测结果数据。
|
||||
|
||||
像前面的例子中,我们已知黑白球的比例(参数)和抽取方法(模型),来预测抽到的球的颜色(结果数据)。
|
||||
|
||||
统计(Statistics)是已知数据,设定模型并反推参数。
|
||||
|
||||
在反推参数的过程中,由于采样数据本身的限制原因,参数的值有多种可能性,我们只能按照可能性最大的那种来估计形成给定样本的参数值,所以被称为最大似然估计。
|
||||
|
||||
关于似然函数的记法有很多,比如$P(x|\theta), L(\theta|x), L(x;\theta), f(x;\theta)$等,要根据上下文来判断它到底代表什么,很糟糕。所以在这里我们统一定义:
|
||||
- $P(x|\theta)$ 表示概率;
|
||||
- $L(x;\theta)$ 表示似然函数,不使用$L(\theta|x)$的记法;
|
||||
- $f(x;\theta)$ 表示概率密度分布函数。
|
||||
|
||||
### 最大似然估计
|
||||
|
||||
问题1:一个袋子中有10个球,有黑白两种颜色,每次拿出一个记录颜色并放回,重复10次,查看记录得知取到白球7次,请问袋中白球的比例?
|
||||
|
||||
这显然是与前面的概率问题相反的问题。从前面的概率问题中,我们知道即使白黑比例为6:4,10次抽取后也只有0.250823的概率得到6次白球,还有0.214991的概率可以抽到7次白球。那么反过来,如果抽到7次白球,同样不能100%地认为白球占比就是0.7,也有可能是0.6、0.8等数值。
|
||||
|
||||
与上一节中的概率问题比较:
|
||||
- 试验模型:一个袋子中有10个球,有黑白两种颜色,每次拿出一个记录颜色并放回,重复10次;
|
||||
- 试验数据:取到白球7次;
|
||||
- 反推参数:问袋中白球的比例。
|
||||
|
||||
由于问题比较简单,我们可以遍历所有白球占比的可能性,即$\theta=[0,0.1,0.2,...,1]$,然后根据公式1依次计算$P(x|\theta)$值:
|
||||
|
||||
$$
|
||||
P(x|\theta) = C_n^x \theta^x (1-\theta)^{n-x} \tag{1}
|
||||
$$
|
||||
|
||||
结果:
|
||||
```
|
||||
0.0 : 0.000000
|
||||
0.1 : 0.000009
|
||||
0.2 : 0.000786
|
||||
0.3 : 0.009002
|
||||
0.4 : 0.042467
|
||||
0.5 : 0.117188
|
||||
0.6 : 0.214991
|
||||
0.7 : 0.266828
|
||||
0.8 : 0.201327
|
||||
0.9 : 0.057396
|
||||
1.0 : 0.000000
|
||||
```
|
||||
|
||||
<img src="images/likelihood_berno.png"/>
|
||||
|
||||
图1
|
||||
|
||||
可以看到白球占比为0.7的可能性最大,最大似然值为0.266828。但是我们不能说白球的占比一定会是0.7,这就是已知试验数据反推参数,也就是**最大似然估计**(MLE - Maximum Likelihood Estimation)。
|
||||
|
||||
请注意,我们并不关心 $L$ 值到底是多少,只取最大值即可,所以在图中的标记点显示的是横坐标,下同。
|
||||
|
||||
### 单参数似然函数
|
||||
|
||||
上面我们用了遍历的笨办法,那么严格的数学方法如何解决问题1呢?
|
||||
|
||||
每种分布都有自己的概率密度函数公式,假设为$f$,则取一次球的概率为:
|
||||
$$P(x_1;\theta)=f(x_1;\theta)$$
|
||||
|
||||
取两次球的概率为:
|
||||
|
||||
$$P(x_1,x_2;\theta)=f(x_1;\theta) \times f(x_2;\theta)$$
|
||||
|
||||
我们令这种已知 $x$ 求 $\theta$ 的情况为似然函数 $L$,代表$L$ikelihood。
|
||||
|
||||
则一般性的似然函数公式为:
|
||||
|
||||
$$
|
||||
L(X;\theta) = L(x_1,...,x_n;\theta) = \prod_{i=1}^n f(x_i;\theta) \tag{2}
|
||||
$$
|
||||
|
||||
也就是多个样本的概率的乘积。根据上一节的公式6把$f(k;\theta)$代入公式3中,写出问题1的似然公式:
|
||||
|
||||
$$
|
||||
L(X;\theta)= \theta^7 (1-\theta)^{10-7} \tag{3}
|
||||
$$
|
||||
|
||||
从图2中可以看出,公式的函数值 $L$ 有一个最大值,设其对应的 $\theta$ 值为 $\theta_{max}$。如何得到这个值呢?我们只需要对 $L$ 求导,再令导数为 0 就可以了。
|
||||
|
||||
$$
|
||||
dL/d\theta=7\theta^6 (1-\theta)^3 - 3\theta^7(1-\theta)^2=0
|
||||
$$
|
||||
$$
|
||||
7\theta^6 (1-\theta)^3 = 3\theta^7(1-\theta)^2
|
||||
$$
|
||||
$$
|
||||
\theta_{max}=0.7
|
||||
$$
|
||||
|
||||
结果和遍历方法的结论一致。
|
||||
|
||||
### 复杂分布的似然函数
|
||||
|
||||
上面的例子中是伯努利分布,比较简单,我们来看看稍微复杂一些的指数分布的似然函数形态。
|
||||
|
||||
$$
|
||||
f(x;\theta)=\begin{cases} \frac{1}{\theta}e^{-x/\theta} & x>0 \\ 0 & other \end{cases} \tag{4}
|
||||
$$
|
||||
|
||||
概率密度分布函数要复杂一些,似然函数如下:
|
||||
|
||||
$$
|
||||
L(x_1,...,x_n;\theta) = \prod_{i=1}^n \frac{1}{\theta}e^{-x_i/\theta} = \frac{1}{\theta^n} e^{-1/\theta \sum_{i=1}^n x_i} \tag{5}
|
||||
$$
|
||||
|
||||
对公式5求导的话有些复杂,由于$L>0$,我们给等式两边取自然对数:
|
||||
|
||||
$$
|
||||
\ln L = -n \ln \theta - \frac{1}{\theta}\sum_{i=1}^n x_i \tag{6}
|
||||
$$
|
||||
|
||||
对公式6求导,并令结果为0,以便得到最大值解:
|
||||
|
||||
$$
|
||||
\frac{d \ln L}{d\theta} = -\frac{n}{\theta} + \frac{1}{\theta^2}\sum_{i=1}^n x_i = 0 \tag{7}
|
||||
$$
|
||||
|
||||
$$
|
||||
\theta_{max} = \frac{1}{n}\sum_{i=1}^n x_i = \bar{x} \tag{8}
|
||||
$$
|
||||
|
||||
公式8告诉我们,对于指数分布的参数 $\theta$ 的最大似然值等于 $x$ 的均值。
|
||||
|
||||
<img src="images/likelihood_exp.png"/>
|
||||
图2
|
||||
|
||||
图2中,分别设置$\theta$为0.5和0.3,用公式4得到两组指数分布样本数据$X1,X2$和它们的均值X1.mean和X2.mean,如下:
|
||||
```
|
||||
X1:
|
||||
[2. 1.60147481 1.28236078 1.02683424 0.82222458 0.65838598
|
||||
0.52719428 0.42214418 0.33802663 0.27067057]
|
||||
X1.mean:
|
||||
0.8949316026487887
|
||||
|
||||
X2:
|
||||
[3.33333333 2.30159517 1.5892021 1.09730996 0.75766899 0.52315419
|
||||
0.36122674 0.24941932 0.17221869 0.11891331]
|
||||
X2.mean:
|
||||
1.0504041796212955
|
||||
```
|
||||
然后令$\theta$值从0到3遍历,绘制出两条似然函数曲线,可以看到函数最大值所在横坐标与两组样本的均值相等,证明了公式8的正确性。
|
||||
|
||||
### 多参数似然函数
|
||||
|
||||
上面的例子中都只有一个参数 $\theta$,下面我们以正态分布为例,看看两个参数的似然函数形态。
|
||||
|
||||
$$
|
||||
f(x;\theta_1,\theta_2)=f(x;\mu,\sigma) = \frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} \tag{9}
|
||||
$$
|
||||
|
||||
在这里,我们把两个参数实例化为$\mu,\sigma$,似然函数为:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
L(x_1,...,x_n;\mu,\sigma)&=\prod^n_{i=1} \frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x_i-\mu)^2}{2\sigma^2}}
|
||||
\\
|
||||
&=(\frac{1}{\sigma\sqrt{2\pi}})^n e^{-\frac{1}{2\sigma^2}\sum_{i=1}^n(x_i-\mu)^2}
|
||||
\end{aligned} \tag{10}
|
||||
$$
|
||||
|
||||
取对数:
|
||||
|
||||
$$
|
||||
\ln L = n\ln\frac{1}{\sqrt{2\pi}} - \frac{n}{2}\ln \sigma^2-\frac{1}{2\sigma^2}\sum_{i=1}^n(x_i-\mu)^2 \tag{11}
|
||||
$$
|
||||
|
||||
由于有两个参数,所以需要分别对它们求偏导,并令结果为0,得到方程组12:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
\frac{\partial \ln L}{\partial \mu}&=\frac{1}{\sigma^2}\sum_{i=1}^n(x_i-\mu) = 0
|
||||
\\
|
||||
\frac{\partial \ln L}{\partial \sigma^2}&=-\frac{n}{2\sigma^2}+\frac{1}{2\sigma^4}\sum_{i=1}^n(x_i-\mu)^2=0
|
||||
\end{aligned} \tag{12}
|
||||
$$
|
||||
|
||||
解方程组12,得到:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
\mu_{max} &= \frac{1}{n}\sum_{i=1}^nx_i = \bar{x}
|
||||
\\
|
||||
\sigma^2_{max} &= \frac{1}{n}\sum_{i=1}^n(x_i-\mu_{max})^2=\frac{1}{n}\sum_{i=1}^n(x_i-\bar{x})^2
|
||||
\end{aligned} \tag{13}
|
||||
$$
|
||||
|
||||
图3展示了两条关于 $\mu_{max}$ 的似然函数曲线:
|
||||
1. 首先生成两组符合正态分布的随机数$X1,X2$,它们的真实均值分别为$\mu_{1}=0.386883$ 和 $\mu_{2}=0.575975$;
|
||||
2. 然后根据公式10,在[0,1]区间以0.01的步长遍历作为 $\mu$ 值,计算每个点的 $L$ 值,得到两条似然曲线;
|
||||
3. 可以看到实线曲线的最大似然值的横坐标在0.38左右,与$\mu_1$相同;虚线曲线的最大似然值的横坐标在0.57左右,与$\mu_2$相同;证明了公式13中关于$\mu_{max}$的估计是正确的。
|
||||
|
||||
<img src="images/likelihood_norm_mu.png"/>
|
||||
|
||||
图3
|
||||
|
||||
图4展示了两条关于 $\sigma^2_{max}$ 的似然函数曲线:
|
||||
1. 首先生成两组符合正态分布的随机数$X1,X2$,它们的真实均方差分别为$\sigma^2_{1}=0.243980$ 和 $\sigma^2_{2}=0.309661$;
|
||||
2. 然后根据公式10,在[0,1]区间以0.01的步长遍历作为 $\sigma^2$ 值,计算每个点的 $L$ 值,得到两条似然曲线。
|
||||
3. 可以看到实线曲线的最大似然值的横坐标在0.24左右,与$\sigma^2_1$相同;虚线曲线的最大似然值的横坐标在0.31左右,与$\sigma^2_2$相同;证明了公式13中关于$\sigma^2_{max}$的估计是正确的。
|
||||
|
||||
<img src="images/likelihood_norm_std.png"/>
|
||||
|
||||
图4
|
||||
|
||||
综上所述,可得求解最大似然估计的一般过程为:
|
||||
|
||||
1. 写出似然函数;
|
||||
2. 如果无法直接求导的话,对似然函数取对数;
|
||||
3. 求导数;
|
||||
4. 求解模型中参数的最优值。
|
||||
|
||||
@@ -1,154 +0,0 @@
|
||||
<!--Copyright © Microsoft Corporation. All rights reserved.
|
||||
适用于[License](https://github.com/Microsoft/ai-edu/blob/master/LICENSE.md)版权许可-->
|
||||
|
||||
## 最大后验概率估计与贝叶斯估计
|
||||
|
||||
## 最大后验概率估计
|
||||
|
||||
简称MAP(Maximum Posteriori Estimation)。
|
||||
|
||||
问题:有50个白球,50个黑球,在一个袋子里,从中任意拿出10个球,放到第二个袋子里,再从第二个袋子里抽取一个球,记录颜色,放回,再抽取,重复10次。结果一共抽取到7次白球,3次黑球,求最大似然和最大后验概率。
|
||||
|
||||
问题:有一枚匀质硬币,投10次,7次正面向上,求
|
||||
|
||||
利用前面学到的知识,求解最大似然函数:
|
||||
|
||||
$$
|
||||
L(X;\theta)= \theta^7 (1-\theta)^3 \tag{1}
|
||||
$$
|
||||
解得:
|
||||
$$
|
||||
\theta_{max}=0.7
|
||||
$$
|
||||
|
||||
<img src="images/likelihood_berno.png"/>
|
||||
图1
|
||||
|
||||
意味着有10个球里最可能有7个白球和3个黑球,但是我们知道从第一个袋子里拿出10个球的最大概率是5个白球和5个黑球,也就是先验分布值为0.5,而不是0.7,这违背了人们的常识。
|
||||
|
||||
其实$\theta_{max}=0.7$这件事,并不是说$\theta=0.7$,而是说 $\theta$ 的最可能的值是0.7,还有可能是别的值。这时,我们如果把先验分布知识加进来,是不是能够在一定程度上让 $\theta$ 值接近0.5呢?这就是最大后验概率估计的想法。
|
||||
|
||||
提到后验概率,我们想到了前面学过的后验概率中的贝叶斯定理,把公式中的 $A、B$ 换成 $X、\theta$,可以得到公式2:
|
||||
|
||||
$$
|
||||
P(\theta|X)=\frac{P(X|\theta)P(\theta)}{P(X)} \tag{2}
|
||||
$$
|
||||
|
||||
其中:
|
||||
|
||||
- $P(\theta|X)$ 是后验分布;
|
||||
- $P(X|\theta)$ 是似然函数,也就是公式4中的 $L(X;\theta)$,写成$P(X|\theta)$是为了与贝叶斯公式的命名规则相吻合;
|
||||
- $P(\theta)$ 是先验分布,即$\theta=0.5$时的概率分布;
|
||||
- $P(X)$ 是采样概率,在一次试验中该值是固定的,所以可以在公式2中忽略。
|
||||
|
||||
如此一来,估算最大后验概率 $P(\theta|X)$ 的任务变成了:
|
||||
|
||||
$$
|
||||
\argmax_\theta P(\theta|X)=\argmax_\theta \frac{P(X|\theta)P(\theta)}{P(X)} \propto \argmax_\theta P(X|\theta)P(\theta) \tag{3}
|
||||
$$
|
||||
|
||||
在公式3中,$P(X|\theta)$ 是似然函数,我们如果再知道 $P(\theta)$ 的先验概率表达式,就可以得到结果了。
|
||||
|
||||
### 共轭分布与共轭先验
|
||||
|
||||
在贝叶斯统计中,如果后验分布与先验分布属于同类,则先验分布与后验分布被称为共轭分布,而先验分布被称为似然函数的共轭先验(Conjugate prior)。比如,高斯分布家族在高斯似然函数下与其自身共轭(自共轭),而我们在本节的问题中遇到的伯努利分布的共轭先验分布是Beta分布。
|
||||
|
||||
采用共轭先验,使得先验分布和后验分布的形式相同,这样一方面合符人的直观(它们应该是相同形式的)另外一方面是可以形成一个先验链,即现在的后验分布可以作为下一次计算的先验分布,如果形式相同,就可以形成一个链条。
|
||||
|
||||
### Beta分布(Beta Distribution)
|
||||
|
||||
在概率论中,也称B分布(注意不要和公式4中的B函数混淆),是一组定义在(0,1)区间的连续概率分布,有两个参数 $\alpha,\beta >0$,其概率密度函数是:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
f_{Beta}(x;\theta) &= \frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha)\Gamma(\beta)}\theta^{\alpha-1}(1-\theta)^{\beta-1} \\
|
||||
&=\frac{1}{B(\alpha,\beta)}\theta^{\alpha-1}(1-\theta)^{\beta-1}
|
||||
\end{aligned} \tag{4}
|
||||
$$
|
||||
|
||||
其中$B$函数和$\Gamma$函数的具体细节不再展开,请阅读最下方的参考材料。
|
||||
|
||||
Beta分布的概率密度函数图:
|
||||
|
||||
<img src="images/BetaDist.png"/>
|
||||
图2
|
||||
|
||||
从图中可以看到实线所代表的参数组合$\alpha=3, \beta=3$与正态分布相似,最满足作为先验分布的要求,根据公式3,最大后验概率估计为:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
MAP &= P(X|\theta)P(\theta)=L(X;\theta) \times f(x;\theta) \\
|
||||
&=\theta^7 (1-\theta)^3 \times \frac{1}{{B(\alpha,\beta)}}\theta^{\alpha-1}(1-\theta)^{\beta-1} \\
|
||||
&=\frac{1}{{B(\alpha,\beta)}}\theta^{\alpha+6}(1-\theta)^{\beta+2}
|
||||
\end{aligned} \tag{5}
|
||||
$$
|
||||
|
||||
对$MAP$求导,并令其结果为0,此时B函数是个常数,不参与求导:
|
||||
|
||||
$$
|
||||
\frac{d MAP}{d \theta}=(\alpha+6)\theta^{\alpha+5}(1-\theta)^{\beta+2}-(\beta+2)\theta^{\alpha+6}(1-\theta)^{\beta+1}=0
|
||||
$$
|
||||
|
||||
解得:
|
||||
$$
|
||||
\theta = \frac{\alpha + 6}{\alpha+\beta+8}=\frac{3+6}{3+3+8} \approx 0.64
|
||||
$$
|
||||
|
||||
<img src="images/map_berno.png"/>
|
||||
图3
|
||||
|
||||
可以看到经过先验概率的矫正后,参数值已经从以前的最大似然估计的0.7变成了0.643,向0.5的方向靠近了一些,但是不可能达到0.5的,因为本次的采样就是7个白球3个黑球,太偏了。解决此问题的方法是多做几次试验,相当于增加采养数量,就会向真实的概率值逼近。
|
||||
|
||||
## 贝叶斯估计
|
||||
|
||||
贝叶斯估计是最大后验估计的进一步扩展,贝叶斯估计同样假定$\theta$是一个随机变量,但贝叶斯估计并不是直接估计出$\theta$的某个特定值,而是估计$\theta$的分布,这是贝叶斯估计与最大后验概率估计不同的地方。
|
||||
|
||||
在贝叶斯估计中,先验分布$P(X)$必须参与计算。回到球的例子中,在已知 $X$ 的情况下,描述 $\theta$ 的分布即描述$P(\theta|X)$,是一种后验分布。如果后验分布的范围较窄,则估计值的准确度相对较高,反之,如果后验分布的范围较广,则估计值的准确度就较低。
|
||||
|
||||
在连续型随机变量中,根据公式2,分母的$P(X)$可以展开成下面的形式:
|
||||
|
||||
$$
|
||||
P(\theta|X)=\frac{P(X|\theta)P(\theta)}{\int P(X|\theta)P(\theta)d\theta} \tag{6}
|
||||
$$
|
||||
|
||||
但是求分母的积分是不可能的,如果使用共轭先验分布,就可以解决此问题。二项分布参数的共轭先验是Beta分布,由于 $\theta$ 的似然函数服从二项分布,因此在贝叶斯估计中,假设 $\theta$ 的先验分布服从$P(\theta)\sim Beta(\alpha, \beta)$,Beta分布的概率密度为公式4,把它代入公式6中代替$P(\theta)$,可以得到如下形式:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
P(\theta|X)&=\frac{\theta^7(1-\theta)^3 \theta^{\alpha-1} (1-\theta)^{\beta-1}/B(\alpha,\beta)}{\int [\theta^7(1-\theta)^3 \theta^{\alpha-1} (1-\theta)^{\beta-1}/B(\alpha,\beta)] d\theta} \\
|
||||
&=\frac{\theta^{\alpha+7-1}(1-\theta)^{\beta+3-1}}{B(\alpha+7,\beta+3)} \\
|
||||
&= \frac{\theta^{a-1}(1-\theta)^{b-1}}{B(a,b)}\\
|
||||
&=f_{Beta}(a,b;\theta)
|
||||
\end{aligned} \tag{7}
|
||||
$$
|
||||
|
||||
公式7的演变是:
|
||||
1. 首先合并同类项,并把分子分母中与$\theta$无关的$B(\alpha,\beta)$去掉;
|
||||
2. 然后根据B函数的定义把分母之间写成B函数;
|
||||
3. 令$a=\alpha+7, b=\beta+3$,做一个简单符号替换;
|
||||
4. 最后的形式正好符合Beta分布的概率密度函数(公式4)。
|
||||
|
||||
得到$P(\theta|X)$后,我们需要求积分:
|
||||
|
||||
$$
|
||||
\int p(x|\theta)P(\theta|X)d\theta=E(\theta)=\frac{a}{a+b}=10/(10+6)=0.625
|
||||
$$
|
||||
|
||||
贝叶斯估计的求解步骤:
|
||||
|
||||
1. 确定参数的似然函数;
|
||||
2. 确定参数的先验分布,应是后验分布的共轭先验;
|
||||
3. 确定参数的后验分布函数;
|
||||
4. 根据贝叶斯公式求解参数的后验分布。
|
||||
|
||||
### 比较MLE,MAP,BE三种方法
|
||||
|
||||
|方法|公式|数值(本例)|目标|
|
||||
|--|--|--|--|
|
||||
|最大似然估计|$P(X\vert\theta)$|0.7|从观测数据中找出最优解|
|
||||
|最大后验估计|$P(X\vert\theta)P(\theta)$|0.64|从观测数据结合先验分布中找出最优解|
|
||||
|贝叶斯估计|$P(X\vert\theta)P(\theta)/P(X)$|0.625|找出后验分布|
|
||||
|
||||
|
||||
https://www.jianshu.com/p/9c153d82ba2d
|
||||
https://en.wikipedia.org/wiki/Beta_function
|
||||
@@ -1,8 +0,0 @@
|
||||
<!--Copyright © Microsoft Corporation. All rights reserved.
|
||||
适用于[License](https://github.com/Microsoft/ai-edu/blob/master/LICENSE.md)版权许可-->
|
||||
|
||||
## KL散度
|
||||
|
||||
科尔贝克-莱布尔(Kullback-Leibler divergence)距离函数,也叫 KL 散度或相对熵。
|
||||
|
||||
图解深度学习,P73
|
||||
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 200 KiB After Width: | Height: | Size: 200 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 206 KiB After Width: | Height: | Size: 206 KiB |
|
Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 163 KiB After Width: | Height: | Size: 163 KiB |
|
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 165 KiB |
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 182 KiB After Width: | Height: | Size: 182 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |