丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開發(fā)者 正文
發(fā)私信給AI研習(xí)社-譯站
發(fā)送

0

蒙特卡洛模擬(Python)深入教程

本文作者: AI研習(xí)社-譯站 2020-09-21 18:08
導(dǎo)語: 蒙特卡羅模擬或概率模擬是一種技術(shù),用于了解金融部門、項(xiàng)目管理、成本和其他預(yù)測機(jī)器學(xué)習(xí)模型中風(fēng)險(xiǎn)和不確定性的影響。

蒙特卡洛模擬(Python)深入教程

字幕組雙語原文:蒙特卡洛模擬(Python)深入教程

英語原文:Monte Carlo Simulation An In-depth Tutorial with Python

翻譯:大表哥、wiige


什么是蒙特卡羅模擬?

蒙特卡羅方法是一種使用隨機(jī)數(shù)和概率來解決復(fù)雜問題的技術(shù)。 蒙特卡羅模擬或概率模擬是一種技術(shù),用于了解金融部門、項(xiàng)目管理、成本和其他預(yù)測機(jī)器學(xué)習(xí)模型中風(fēng)險(xiǎn)和不確定性的影響。

風(fēng)險(xiǎn)分析幾乎是我們做出的每一個(gè)決定的一部分,因?yàn)槲覀冊谏钪薪?jīng)常面臨不確定性、模糊性和變化無常。 此外,即使我們擁有前所未有的信息獲取渠道,我們也不能準(zhǔn)確預(yù)測未來。

蒙特卡洛模擬使我們能夠看到?jīng)Q策的所有可能結(jié)果,并評估風(fēng)險(xiǎn)影響,從而在不確定的情況下更好地做出決策。

在本文中,我們將通過五個(gè)不同的例子來理解蒙特卡羅模擬方法。

資源: Google Colab Implementation | GitHub Repository

應(yīng)用領(lǐng)域:

  • 金融

  • 項(xiàng)目管理

  • 能量

  • 制造業(yè)

  • 工程學(xué)

  • 研究和開發(fā)

  • 保險(xiǎn)

  • 石油和天然氣公司

  • 交通

  • 環(huán)境

  • 還有其他

舉例:

  • 拋硬幣示例

  • 用圓和平方估計(jì)PI

  • 三門問題

  • 蒲豐投針問題

  • 為什么賭場總是賺的?

a. 拋硬幣示例:

拋硬幣中獎(jiǎng)的概率是1/2。但是,我們有沒有辦法從實(shí)驗(yàn)上證明這一點(diǎn)呢? 在這個(gè)例子中,我們將使用蒙特卡羅方法迭代地模擬拋硬幣5000次,以找出為什么頭部或尾巴的概率總是1/2。如果我們重復(fù)拋硬幣很多很多次,那么我們可以在概率值的準(zhǔn)確答案上獲得更高的精確度。在這個(gè)例子中,我們將使用Monte-Carlo方法反復(fù)模擬拋硬幣5000次,以找出頭部或尾部的概率始終是1/2的概率。

蒙特卡洛模擬(Python)深入教程

圖2:正面和反面,數(shù)學(xué)表示。

在拋硬幣時(shí):

蒙特卡洛模擬(Python)深入教程

圖3:正面和反面硬幣的公式示例。


接下來,我們將用蒙特卡羅方法對這個(gè)公式進(jìn)行實(shí)驗(yàn)證明。

Python實(shí)現(xiàn):

1.導(dǎo)入所需的庫:

蒙特卡洛模擬(Python)深入教程

圖4:為我們的拋硬幣示例導(dǎo)入所需的庫。

2.投幣功能:

蒙特卡洛模擬(Python)深入教程

圖5:一個(gè)簡單的函數(shù),將結(jié)果隨機(jī)排列在0和1之間,頭部為0,尾部為1。

3.檢查函數(shù)輸出:

蒙特卡洛模擬(Python)深入教程

圖6:運(yùn)行Coin_Flip()函數(shù)

4.主要功能:

蒙特卡洛模擬(Python)深入教程

圖7:計(jì)算概率并將概率值附加到結(jié)果。

5.調(diào)用main函數(shù):

蒙特卡洛模擬(Python)深入教程


圖8:調(diào)用Monte Carlo主函數(shù),并繪制最終值。

如圖8所示,我們顯示在5,000次迭代之后,獲得尾部的概率為0.502。 因此,這就是我們可以如何使用蒙特卡羅模擬來通過實(shí)驗(yàn)找到概率的方法。

b.使用圓形和正方形估算PI:

蒙特卡洛模擬(Python)深入教程

圖9:圓形和正方形的簡單面積。

蒙特卡洛模擬(Python)深入教程

圖10:分別計(jì)算圓形和正方形的面積。

要估計(jì)PI的值,我們需要正方形的面積和圓的面積。 為了找到這些區(qū)域,我們將在表面上隨機(jī)放置點(diǎn),并計(jì)算落在圓內(nèi)的點(diǎn)和落在正方形內(nèi)的點(diǎn)。 這將給我們一個(gè)估計(jì)的面積。 因此,我們將使用點(diǎn)數(shù)作為面積,而不是使用實(shí)際面積。

在下面的代碼中,我們使用Python的Turtle模塊來查看點(diǎn)的隨機(jī)放置。

python實(shí)現(xiàn):

1.導(dǎo)入需要的庫

蒙特卡洛模擬(Python)深入教程

圖10:為我們的π示例導(dǎo)入所需的庫。

2.可視化這些點(diǎn):

蒙特卡洛模擬(Python)深入教程

圖11:繪制圖形。

3.初始化部分必填數(shù)據(jù):

蒙特卡洛模擬(Python)深入教程

圖12:初始化數(shù)據(jù)值。

4.主要功能:

蒙特卡洛模擬(Python)深入教程

圖13:實(shí)現(xiàn)主功能。

5.繪制數(shù)據(jù):

蒙特卡洛模擬(Python)深入教程

圖14:繪制數(shù)據(jù)值。

6.輸出

蒙特卡洛模擬(Python)深入教程

圖15:使用蒙特卡羅方法的π近似。

蒙特卡洛模擬(Python)深入教程

圖16:值的數(shù)據(jù)可視化。

蒙特卡洛模擬(Python)深入教程

圖17:值的數(shù)據(jù)可視化。

如圖17所示,我們可以看到,經(jīng)過5000次迭代后,我們可以得到PI的近似值。 另外,請注意,隨著迭代次數(shù)的增加,估計(jì)誤差也呈指數(shù)下降。

蒙特卡洛模擬(Python)深入教程

3. 三門問題:

假設(shè)你正在參加一個(gè)游戲節(jié)目,你可以從三扇門中選擇一扇:一扇門后面是一輛汽車;另一扇門后面是山羊。 你選了一扇門,假設(shè)是1號門,主人,誰知道門后面有什么,就打開另一扇門,比如說3號門,里面有一只山羊。 主人然后問你:你是堅(jiān)持自己的選擇,還是選擇另一扇門? 

選擇不同的門對你有好處嗎?  事實(shí)證明,從概率上說,打開門對我們有利。具體分析:最初,對于所有的三個(gè)門,得到車的概率(P)是相同的(P = 1/3)。  

蒙特卡洛模擬(Python)深入教程

圖18:三個(gè)門的模擬,展示了每個(gè)可能的結(jié)果。  

現(xiàn)在假設(shè)參賽者選擇了門1。接下來,主人打開第三扇門,里面有一只山羊。接下來,主持人問參賽者是否要換門?我們將看到為什么轉(zhuǎn)換門更有利: 

蒙特卡洛模擬(Python)深入教程

圖19:門的圖示結(jié)果。  

在圖19中,我們可以看到在主人打開門3之后,擁有一輛車的最后兩個(gè)門的概率增加到2/3。現(xiàn)在我們知道第三扇門有一只山羊,第二扇門有一輛車的概率增加到2/3。因此,換門更為有利?,F(xiàn)在我們將使用蒙特卡羅方法來多次執(zhí)行這個(gè)測試案例,并通過實(shí)驗(yàn)的方式找出它的概率。  

Python 實(shí)現(xiàn):

1. Import所需庫:  

蒙特卡洛模擬(Python)深入教程

圖20: 導(dǎo)入所需庫。

2. 初始化數(shù)據(jù):

蒙特卡洛模擬(Python)深入教程

圖21: 初始化代表門的枚舉變量和存儲(chǔ)概率值的列表。

3. Main函數(shù):

蒙特卡洛模擬(Python)深入教程

圖22: 用蒙特卡洛模擬來實(shí)現(xiàn)主函數(shù)。

4. 調(diào)用main函數(shù):

蒙特卡洛模擬(Python)深入教程

圖23: 調(diào)用主函數(shù)模擬1000次博弈。

5. 輸出:

蒙特卡洛模擬(Python)深入教程

圖24: 得到堅(jiān)持自己的選擇或換門的近似獲勝概率。

在圖24中,我們發(fā)現(xiàn)在1000次模擬后,如果我們換門,獲勝概率是0.669。因此,我們確信在本例中換門對我們更有利。

4. 蒲豐投針問題:

法國貴族Georges-Louis Leclerc,即蒲豐公爵在1777年提出了這樣一個(gè)問題[2] [3]:

若在一張繪有等距平行線的紙上隨意拋一根短針,求針和任意一條線相交的概率。

概率取決于方格紙的線間距(d),和針長度(l)——或者說,它取決于l/d的比值。在這個(gè)例子里,我們可以認(rèn)為針長度l≤d。簡而言之,我們假設(shè)了針不能同時(shí)相交于兩條不同的線。令人驚訝的是,蒲豐針問題的答案與PI相關(guān)。

這里,我們將使用用蒙特卡洛法來解蒲豐投針問題,順便估計(jì)出PI的值。不過在此之前,我們要先展示一下解法是如何推導(dǎo)出來的,這樣會(huì)更有趣。

定理:

如果一根長為l的短針落在一張紙上,而紙上畫有距離d≥l的等距線,那么針與任一條線相交的概率為:

蒙特卡洛模擬(Python)深入教程

圖25: 蒲豐投針定理。

證明:

蒙特卡洛模擬(Python)深入教程

圖26: 蒲豐投針問題的可視化。

首先,我們需要統(tǒng)計(jì)出與任意垂線相交的針的數(shù)量。若針與任意一條線相交,對于特定的θ值,針與垂線相交的最大和最小可能值為:

最大可能值:

蒙特卡洛模擬(Python)深入教程

圖27: 最大概率值。

最小可能值:

蒙特卡洛模擬(Python)深入教程

圖28: 最小可能值。

因此, 對于特定的θ值,針在垂線上的概率是:

蒙特卡洛模擬(Python)深入教程

圖29: 針與垂線相交的概率公式。

這個(gè)概率公式局限于特定θ值,在本實(shí)驗(yàn)中,θ的范圍是0到pi/2。所以,我們需要對所有的θ值做一個(gè)積分,得到投針相交的實(shí)際概率。

蒙特卡洛模擬(Python)深入教程

圖 30: 對所有θ值積分的投針相交概率公式。

蒙特卡洛模擬(Python)深入教程

圖 31: PI的估計(jì)值。


由蒲豐投針問題來估計(jì)PI:

接下來,我們要用上面的公式來進(jìn)行實(shí)驗(yàn)求得PI值。

蒙特卡洛模擬(Python)深入教程

圖 32: 求PI值。

現(xiàn)在,因?yàn)槲覀円呀?jīng)知道了l和d的值,所以只要求得了P的值,我們就可以推知PI的值。而要得到概率P,必須要知道相交針數(shù)和總針數(shù), 這里的總針數(shù)是已知的。

下圖是計(jì)算相交針數(shù)的直觀圖解。

蒙特卡洛模擬(Python)深入教程

圖33: 可視化表示如何計(jì)算針的數(shù)量。

Python 實(shí)現(xiàn):

Import 所需的庫:

蒙特卡洛模擬(Python)深入教程

圖34: 導(dǎo)入所需庫。

2. Main 函數(shù):

蒙特卡洛模擬(Python)深入教程

圖35: 用蒙特卡洛方法模擬蒲豐投針。

3. 調(diào)用main函數(shù):

蒙特卡洛模擬(Python)深入教程

圖36: 調(diào)用main函數(shù)模擬蒲豐投針。

4. 輸出:

蒙特卡洛模擬(Python)深入教程

圖 37: 使用蒙特卡洛方法模擬100次投針的數(shù)據(jù)。

如圖37所示,經(jīng)過100次的模擬,蒙特卡洛法就能得出一個(gè)非常接近PI的值。

蒙特卡洛模擬(Python)深入教程

圖源: Pexels


5. 為什么賭場總是賺的?

賭場是怎么賺錢的? 訣竅很簡單--“你玩得越多,他們賺的就越多?!?讓我們通過一個(gè)簡單的蒙特卡羅模擬示例來看看這是如何工作的。

考慮一個(gè)假想的游戲,玩家必須從一袋籌碼中選擇一個(gè)籌碼。

規(guī)則:

  • 袋子里有數(shù)字從1到100的籌碼。

  • 用戶可以押注于偶數(shù)或奇數(shù)籌碼。

  • 在這個(gè)游戲中,10和11是特殊的數(shù)字。 如果我們賭偶數(shù),那么10就算奇數(shù),如果我們賭賠率,那么11就算偶數(shù)。

  • 如果我們賭偶數(shù),我們得了10,那么我們就輸了。

  • 如果我們賭的是奇數(shù),我們得了11,那么我們就輸了。

如果我們以賠率下注,我們獲勝的概率為49/100。 獲勝的概率為51/100。 因此,對于一個(gè)奇數(shù)下注,彩池優(yōu)勢為= 51 / 100–49 / 100 = 200/10000 = 0.02 = 2%

如果我們打賭偶數(shù),則用戶獲勝的概率為49/100。 獲勝的概率為51/100。 因此,對于一個(gè)奇數(shù)下注,彩池優(yōu)勢為= 51 / 100–49 / 100 = 200/10000 = 0.02 = 2%

綜上所述,每下注1美元,就會(huì)有0.02美元下注。 相比之下,輪盤上最低的單一0優(yōu)勢是2.5%。 因此,我們可以肯定,與輪盤賭相比,您在假想的游戲中獲勝的機(jī)會(huì)更大。

Python 實(shí)現(xiàn):

Import所需的庫:

蒙特卡洛模擬(Python)深入教程

圖38: 導(dǎo)入賭場模擬所需的庫。

2. 玩家下注:

蒙特卡洛模擬(Python)深入教程

圖39: 在下注奇數(shù)或偶數(shù)。

3. Main 函數(shù):

蒙特卡洛模擬(Python)深入教程

圖 40: 使用蒙特卡洛方法模擬賭場行為。

4. 最終輸出:

蒙特卡洛模擬(Python)深入教程

圖41: 計(jì)算并展示計(jì)算結(jié)果。

5. 模擬1000次試試:

蒙特卡洛模擬(Python)深入教程

圖 42: 模擬1000次。


6. 下注數(shù) = 5:

蒙特卡洛模擬(Python)深入教程

圖43:  下注5次時(shí)的結(jié)果可視化。

7.  下注數(shù) = 10:

蒙特卡洛模擬(Python)深入教程

圖44: 下注10次時(shí)的結(jié)果可視化。

8.  下注數(shù) = 1000:

蒙特卡洛模擬(Python)深入教程

圖45:  下注1000次時(shí)的結(jié)果可視化。

9.  下注數(shù) = 5000:

蒙特卡洛模擬(Python)深入教程

圖46:  下注5000次時(shí)的結(jié)果可視化。

10.  下注數(shù) = 10000:

蒙特卡洛模擬(Python)深入教程

圖47: 下注10000次時(shí)的結(jié)果可視化。

從上面的實(shí)驗(yàn)中,我們可以看到,如果玩家在賭博中下注較少,那么有得賺的機(jī)會(huì)就比較大。有時(shí)候?qū)嶒?yàn)會(huì)得到負(fù)數(shù),這意味著玩家輸?shù)脙A家蕩產(chǎn)負(fù)債累累,而不是單車變路虎。

請注意, 這些比例源于為促進(jìn)理解的非真實(shí)場景,認(rèn)不賭為贏。

結(jié)論:

就像任何預(yù)測模型一樣 模擬結(jié)果只有我們的估計(jì)值才是好的 重要的是要記住,蒙特卡洛模擬只代表概率而不是確定性。盡管如此,在預(yù)測未知的未來時(shí),蒙特卡洛模擬是一個(gè)有價(jià)值的工具。

聲明:本文所表達(dá)的觀點(diǎn)僅代表作者本人,不代表CMU的觀點(diǎn)。這些文字并非為最終成品,僅為當(dāng)下思考記錄以促進(jìn)學(xué)習(xí)和交流。


雷鋒字幕組是一個(gè)由AI愛好者組成的翻譯團(tuán)隊(duì),匯聚五五多位志愿者的力量,分享最新的海外AI資訊,交流關(guān)于人工智能技術(shù)領(lǐng)域的行業(yè)轉(zhuǎn)變與技術(shù)創(chuàng)新的見解。

團(tuán)隊(duì)成員有大數(shù)據(jù)專家,算法工程師,圖像處理工程師,產(chǎn)品經(jīng)理,產(chǎn)品運(yùn)營,IT咨詢?nèi)耍谛熒?;志愿者們來自IBM,AVL,Adobe,阿里,百度等知名企業(yè),北大,清華,港大,中科院,南卡羅萊納大學(xué),早稻田大學(xué)等海內(nèi)外高校研究所。

如果,你也是位熱愛分享的AI愛好者。歡迎與雷鋒字幕組一起,學(xué)習(xí)新知,分享成長。

蒙特卡洛模擬(Python)深入教程

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

蒙特卡洛模擬(Python)深入教程

分享:
相關(guān)文章

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識(shí),讓語言不再成為學(xué)習(xí)知識(shí)的門檻。(原雷鋒字幕組)
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個(gè)人簡介
為了您的賬戶安全,請驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說