[(機器學習)概率統計]極大似然估計MLE原理+python實現

在統計學中,最大似然估計,也稱爲最大概似估計,是用來估計一個概率模型的參數的一種方法。

預備知識

概率密度函數

簡單講,就是一個概率分佈在某一取值下對應的概率值。用維基百科的話來講就是【在數學中,連續型隨機變量的概率密度函數(在不至於混淆時可以簡稱爲密度函數)是一個描述這個隨機變量的輸出值,在某個確定的取值點附近的可能性的函數。】以大家最爲常見的正態分佈函數爲例~其概率分佈函數爲:

f(x|u,σ2)=12πσ2exp((xu)22σ2)

標準正態分佈爲:x(0,1)
函數如圖:
這裏寫圖片描述
這裏寫圖片描述

似然函數

在數理統計學中,似然函數是一種關於統計模型中的參數的函數,表示模型參數中的似然性。“似然性”與“或然性”或“概率”意思相近,都是指某種事件發生的可能性,但是在統計學中,“似然性”和“或然性”或“概率”又有明確的區分。概率用於在已知一些參數的情況下,預測接下來的觀測所得到的結果,而似然性則是用於在已知某些觀測所得到的結果時,對有關事物的性質的參數進行估計。
例如在已知某個參數θ 的情況下事件A會發生的概率寫作:

p(A|θ)=p(A,θ)p(θ)

根據貝葉斯定理:
p(θ|A)=p(A|θ)p(θ)p(A)

因此,我們可以反過來構造表示似然性的方法:已知有事件A發生,運用似然函數L(θ|A) 我們估計參數B的可能性。

極大似然估計原理

根據頻率主義學派認爲已知一個分佈,雖然不知道分佈的具體參數,但是卻客觀上存在固定的參數值。因此可以通過一些準則來確定參數值。這裏介紹的極大似然估計就是一種根據採樣來估計概率分佈參數的經典方法。

最大似然估計會尋找關於 θ 的最可能的值(即,在所有可能的θ 取值中,尋找一個值使這個採樣的“可能性”最大化,相當於是價用概率密度函數參數去擬合採樣的結果)。
現在我們的工作就是最大化似然函數:

p(θ|A)=p(A|θ)p(θ)p(A)

根據大數定律,當訓練集包含充足的獨立同分布 樣本的時候,P(A) 可以通過各類和樣本出現的頻率來進行估計。在這裏,已知樣本之後,我們就可以估算出P(A) 的值,並將其當做固定值處理。
現在我們需要根據所有可能θ 的取值,選取一個讓p(θ|A) 最大化的值。這裏還是以正態分佈爲例。爲了簡化運算,我們對似然函數取對數。最大化一個似然函數同最大化它的自然對數是等價的。因爲自然對數log是一個連續且在似然函數的值域內嚴格遞增的上凸函數。

這裏寫圖片描述

分別對θu 求導:
這裏寫圖片描述

編程驗證

下面通過python 3.5 + numpy 驗證上述的證明過程,還是以正態分佈爲例。

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
mu = 30  # mean of distribution
sigma = 2  # standard deviation of distribution
x = mu + sigma * np.random.randn(10000)


def mle(x):
    """
    極大似然估計
    :param x:
    :return:
    """
    u = np.mean(x)
    return u, np.sqrt(np.dot(x - u, (x - u).T) / x.shape[0])


print(mle(x))
num_bins = 100
plt.hist(x, num_bins)
plt.show()

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章