1. 程式人生 > >似然函式(Likelihood function)是什麼

似然函式(Likelihood function)是什麼

上次在尋找線性迴歸最小化函式時,又引出一個新的地雷,一個新的不知道,我們繼續上路,開足馬車繼續尋找“似然函式”,它到底是什麼呢?

先來到WIKI上看看定義:
In statistics, a likelihood function (often simply the likelihood) is a function of the parameters of a statistical model given data. Likelihood functions play a key role in statistical inference, especially methods of estimating a parameter from a set of statistics. In informal contexts, "likelihood" is often used as a synonym for "probability." In statistics, a distinction is made depending on the roles of outcomes vs. parameters. Probability is used before data are available to describe possible future outcomes given a fixed value for the parameter (or parameter vector). Likelihood is used after data are available to describe a function of a parameter (or parameter vector) for a given outcome.

接著來到百度上:
統計學中,似然函式是一種關於統計模型引數的函式。給定輸出x時,關於引數θ的似然函式L(θ|x)(在數值上)等於給定引數θ後變數X的概率:
L(θ|x)=P(X=x|θ).
似然函式在推斷統計學(Statistical inference)中扮演重要角色,尤其是在引數估計方法中。在教科書中,似然常常被用作“概率”的同義詞。但是在統計學中,二者有截然不同的用法。概率描述了已知引數時的隨機變數的輸出結果;似然則用來描述已知隨機變數輸出結果時,未知引數的可能取值。例如,對於“一枚正反對稱的硬幣上拋十次”這種事件,我們可以問硬幣落地時十次都是正面向上的“概率”是多少;而對於“一枚硬幣上拋十次,落地都是正面向上”這種事件,我們則可以問,這枚硬幣正反面對稱的“似然”程度是多少。

“似然性”與“或然性”或“概率”意思相近,都是指某種事件發生的可能性,不同在於似然性不看重絕對值,只重相對值,所以不要求歸一性(一般可以把概率當做似然性,但似然性不能當做概率)。概率(probability)和似然(likelihood),都是指可能性,都可以被稱為概率,但在統計應用中有所區別。    概率是給定某一引數值,求某一結果的可能性的函式。似然是給定某一結果,求某一引數值的可能性的函式。   例如,拋一枚硬幣,拋10次,結果是6次正面向上,其是勻質的可能性多大?似然函式是一種關於統計模型中的引數的函式,表示模型引數中的似然性。    例如,拋一枚勻質硬幣,拋10次,6次正面向上的可能性多大?
    解讀:“勻質硬幣”,表明引數值是0.5,“拋10次,六次正面向上”這是一個結果,概率(probability)是求這一結果的可能性。    解讀:“拋10次,結果是6次正面向上”,這是一個給定的結果,問“勻質”的可能性,即求引數值=0.5的可能性。

下面來看一個例子:


這個例子,可以看到它採用這個公式計算:


有這個公式,當然就可以使用程式碼來計算出來,參考了一下網友的程式碼,實現如下:

#python 3.5.3  蔡軍生    
#http://edu.csdn.net/course/detail/2592    
#  
import math

w = 2.0/3  #最大概率
h = 49  #正面次數
t = 31  #反面次數
  
def DefineParam():  
    H=h  
    T=t  
    return H,T  
  
def MaximumLikelihood(p=w):  
    H,T = DefineParam() #獲取引數

    #計算C(n, k)部分
    f1 = math.factorial(H+T)/(math.factorial(H)*math.factorial(T))
    #計算p部分
    f2=(p**H)*((1.0-p)**T)        
      
    return f1*f2  

#計算似然數值
print(MaximumLikelihood())
結果輸出如下:

====================== RESTART: D:/AI/sample/tf_1.33.py ======================
0.05449673649247178
>>> 

到這裡總算對似然函式有點了解了,後面繼續尋找更多的不知道。

1. C++標準模板庫從入門到精通 

2.跟老菜鳥學C++

3. 跟老菜鳥學python

4. 在VC2015裡學會使用tinyxml庫

5. 在Windows下SVN的版本管理與實戰 

7.在VC2015裡使用protobuf協議

8.在VC2015裡學會使用MySQL資料庫