簡體   English   中英

如何基於少量證據有效地估計概率?

[英]How do I efficiently estimate a probability based on a small amount of evidence?

幾個月來我一直試圖找到答案(用於機器學習應用程序),它似乎不應該是一個非常難的問題,但我是一名軟件工程師,數學從來沒有我的一個優點。

這是場景:

我有一個(可能)不均勻加權的硬幣,我想弄清楚它出現的可能性。 我知道來自同一個盒子的硬幣的平均概率為p ,我也知道這些概率的標准偏差(稱之為s )。

(如果除了他們的平均值和stddev之外的其他硬幣的概率的其他概要屬性將是有用的,我也可以得到它們。)

我折騰硬幣n次,並出現正面H與

天真的方法是概率只是h / n - 但如果n很小,這不太可能是准確的。

有沒有計算上有效的方法(即,不涉及非常大或非常小的數字)考慮ps來提出更准確的概率估計,即使n很小?

我很感激,如果任何答案都可以使用偽代碼而不是數學符號,因為我發現大多數數學符號都是難以理解的;-)


其他答案:關於SO的其他一些答案是相似的,但提供的答案並不令人滿意。 例如, 在計算上並不高效,因為它快速涉及的數字方式比可以表示的數字小,即使在雙精度浮點數中也是如此。 結果證明是不正確的。

不幸的是,你不能在不知道一些基本數學的情況下進行機器學習 - 這就像在編程時要求某人幫助但不想知道“變量”,“子程序”以及所有那些if-then的東西。

更好的方法是稱為貝葉斯積分,但有一個更簡單的近似稱為“最大值后綴”(MAP)。 它幾乎與通常的想法相似,除了你可以放入先前的分配。

花哨的話,但你可能會問,h /(h + t)公式來自哪里? 當然這很明顯,但事實證明,當你沒有“事先”時,你會得到答案。 添加先驗后,下面的方法是下一級別的復雜程度。 進入貝葉斯整合將是下一個,但這更難,也許是不必要的。

據我所知,問題有兩個方面:首先你從硬幣袋中掏出一枚硬幣。 這枚硬幣有一個叫做theta的“頑固”,因此它給出了翻轉的頭部θ分數。 但是這個硬幣的theta來自主分布,我想我認為它是高斯分布,平均值為P,標准偏差為S.

你接下來要做的是寫下看到整個shebang的總非標准化概率(稱為似然),所有數據:( h head,t tails)

L =θ^ h *(1-θ)^ t *高斯(θ,P,S)。

高斯(θ,P,S)= exp( - (θ-P)^ 2 /(2 * S ^ 2))/ sqrt(2 * Pi * S ^ 2)

這是“首先從高斯繪制θ值1”然后使用theta從硬幣中繪制h頭和t尾的含義。

MAP原則說,如果你不知道theta,根據你知道的數據找到最大化L的值。 你用微積分做到了。 讓它變得簡單的訣竅是你首先采用對數。 定義LL = log(L)。 無論何時L最大化,LL也將是最大化。

所以LL = h log(theta)+ t log(1-theta)+ - (θ-P)^ 2 /(2 * S ^ 2)) - 1/2 * log(2 * pi * S ^ 2)

通過微積分來尋找極值,你會發現theta的值,使得dLL / dtheta = 0.由於最后一個日志與日志中沒有theta,你可以忽略它。

dLL /dθ= 0 =(h /θ)+(P-θ)/ S ^ 2 - (t /(1-θ))= 0。

如果你能解決θ的這個等式,你會得到一個答案,給出頭數h和尾數t的θ估計。

如果你想要一個快速近似,嘗試采用牛頓方法的一個步驟,在那里你從你提出的theta開始在theta = h /(h + t)的明顯(稱為最大似然)估計。

那“明顯”的估計來自哪里? 如果你做了上面的事情,但沒有放入高斯先驗:h / theta - t /(1-theta)= 0你會得到theta = h /(h + t)。

如果你的先驗概率確實很小,通常情況下,而不是接近0.5,那么在theta上的高斯先驗可能是不合適的,因為它預測了一些具有負概率的權重,顯然是錯誤的。 更合適的是log log上的高斯先驗('對數正態分布')。 以相同的方式插入它並完成微積分。

你在這個問題上沒有足夠的信息。

盒子里有多少硬幣? 如果它是兩個,那么在某些情況下(例如一個硬幣總是頭,另一個總是尾巴)知道p和s會很有用。 如果它不止一些,特別是如果只有一些硬幣只是輕微加權那么它就沒用了。

什么是小n? 2? 5? 10? 100? 加權硬幣出現在頭尾的概率是多少? 100 / 0,60 / 40,50.00001 / 49.99999? 權重是如何分配的? 每枚硬幣有兩種可能的重量嗎? 它們是否遵循鍾形曲線? 等等

它歸結為:加權/未加權硬幣之間的差異,加權硬幣的分布以及盒子中的硬幣數量都將決定你必須以高可信度解決這個問題。

您要做的事情的名稱是伯努利試驗 知道名稱應該有助於找到更好的資源。


回復評論:

如果你的p差異很小,那么你將不得不進行大量的試驗,並且沒有解決它。

假設偏差的均勻分布,p仍將為0.5,並且所有標准偏差都會告訴您至少有一些硬幣具有輕微的偏差。

在這些情況下,通過加權硬幣將再次確定多少次投擲。 即使有500次投擲,你也不會有強烈的信心(約2/3)檢測到.51 / .49分裂。

您可以使用p作為估計概率的先驗值。 這與進行偽計量平滑基本相同。 即,使用

(h + c * p) / (n + c)

作為你的估計。 hn很大時,這就變成了h / n hn很小時,這只是c * p / c = p c的選擇取決於你。 你可以把它建立在s但最后你必須決定它有多小。

一般來說,您正在尋找的是最大似然估計 Wolfram演示項目有一個例子,給出一個投擲樣本估計硬幣着陸頭的概率。

嗯,我不是數學家,但我認為簡單的貝葉斯方法是直觀的,廣泛適用,足以放入一點點。 上面的其他人已經提出了這個建議,但也許如果你喜歡我,你會更喜歡冗長。 在這個術語中,您有一組互斥的假設H和一些數據D,並且您希望在給定數據的情況下找到每個假設Hi正確的(后驗)概率。 假設您必須選擇一個假設,那么您可能會選擇具有最大后驗概率的假設(如上所述的MAP)。 正如Matt在上面所指出的那樣,貝葉斯方法與唯一最大似然(找到最大化Pr(D | H)的H)之間的區別在於,您還有一些關於哪些假設最有可能的先驗信息,並且您希望合並這些先驗。

所以你有基本概率Pr(H | D)= Pr(D | H)* Pr(H)/ Pr(D)。 你可以通過為你想要測試的每個假設創建一系列離散概率Hi來數值估計這些Pr(H | D),例如[0.0,0.05,0.1 ... 0.95,1.0],然后確定你的先前Pr(H) )對於每個Hi - 上面假設您有正常的先驗分布,如果這是可以接受的,您可以使用mean和stdev來獲得每個Pr(Hi) - 或者如果您願意,可以使用其他分布。 對於硬幣投擲,Pr(D | H)當然由二項式確定,使用觀察到的n次試驗的成功次數和特定的Hi進行測試。 分母Pr(D)似乎令人生畏,但我們假設我們已經用我們的假設覆蓋了所有基數,因此Pr(D)是Pr(D | Hi)Pr(H)對所有H的總和。

如果你仔細想想它會非常簡單,如果你再多想一想,也許不是這樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM