機(jī)器學(xué)習(xí)算法之蒙特卡洛_第1頁
機(jī)器學(xué)習(xí)算法之蒙特卡洛_第2頁
機(jī)器學(xué)習(xí)算法之蒙特卡洛_第3頁
機(jī)器學(xué)習(xí)算法之蒙特卡洛_第4頁
機(jī)器學(xué)習(xí)算法之蒙特卡洛_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、大家聽說過的算法,比如快速排序法、二分查找法,或是像梯度下降 法、K近鄰算法,這些算法都有比較嚴(yán)格的邏輯要求,使用起來有些繁瑣。這里我們介紹一個很簡單卻又通常行之有效的算法:蒙特卡洛方法。 嚴(yán)格來說,蒙特卡洛方法并不是特指某一種具體的算法,而是對遵循某種 思想的算法的統(tǒng)稱,應(yīng)該是一 “類”算法?!霸谠囼灢蛔兊臈l件下,重復(fù)試驗多次,隨機(jī)事件的頻率近似于它的 概率”,這個統(tǒng)計學(xué)規(guī)律在數(shù)學(xué)上被稱作“大數(shù)定律”,也很符合我們的 自然直觀。蒙特卡洛方法正是在這個規(guī)律的指導(dǎo)下,應(yīng)用隨機(jī)手段來逼近 一些難以直接求解的數(shù)值?!懊商乜宸椒ā边@個名稱看起來奇奇怪怪的,其實當(dāng)中的“蒙特卡 洛”指的就是著名賭城蒙特

2、卡洛,傳聞是由于該方法的發(fā)明者之一烏拉姆 的叔叔常在此處輸錢而得名一一不得不說這個命名確實是很隨意哈哈。但 是認(rèn)真來說,賭博與概率/統(tǒng)計的學(xué)科發(fā)展相依相伴,貫穿始終,既是統(tǒng)計 學(xué)的發(fā)源地,又是概率論的演練場,以賭城之名來命名這樣一個完全依賴 于隨機(jī)性的方法,也果然是相得益彰,十分到位。說到這里不得不提一嘴 的是,同為著名賭城,拉斯維加斯也有自己的“冠名算法”,本文就不做 詳述了,感興趣的同學(xué)可以自行了解。1.蒙特卡洛方法的原理實際上之前我們已經(jīng)提到過了,蒙特卡洛方法的有效性是建立在大數(shù) 定律的基礎(chǔ)上的,也就是說我們需要通過模擬這樣一個不斷重復(fù)的隨機(jī)過 程,來獲得與正常的反復(fù)隨機(jī)試驗相同的結(jié)果,

3、因此該方法也被稱為“蒙 特卡洛模擬法”。隨著實驗次數(shù)(即隨機(jī)樣本)的增加,從統(tǒng)計學(xué)意義上來說,得到的 結(jié)果會越來越精確,與正確結(jié)果的誤差會越來越小。之所以說是“統(tǒng)計學(xué) 意義上”,是因為這種方法并不保證2001次隨機(jī)試驗的結(jié)果一定比 2000次隨機(jī)試驗的結(jié)果更加準(zhǔn)確,甚至不能保證比1次實驗的結(jié)果更準(zhǔn)確;但總體來看,實驗次數(shù)越多,得到的結(jié)果確實更加可信。通過上面的分析我們可以看出,蒙特卡洛方法使用的場景是相對比較 靈活的,并且更適合對數(shù)據(jù)的精度要求并不太嚴(yán)格的場合。一般來講,工 業(yè)領(lǐng)域的精度要求是完全可以被蒙特卡洛方法滿足的。2.兩個應(yīng)用實例 這兩個實例本質(zhì)上是一樣的2.1求n的值凡講到蒙特卡洛方

4、法,這幾乎都是一個必被提及的應(yīng)用實例。正方形與其內(nèi)切圓上圖所示,陰影部分是一個半徑為 1的圓形,另有一個邊長為2的正方 形與之相切。我們從小就知道,圓面積公式為:= ITT3其中,S1為圓面積,r為圓半徑,n則是一個常數(shù)。正方形面積公式為:其中,S2為正方形面積,l為正方形邊長。顯然,對于特定的正方形,其內(nèi)切圓的直徑一定與正方形邊長相等,也就是說圓半徑是正方形邊長的一半:。這樣,我們只要再知道S1和S2的比值,就可以根據(jù)上面這兩個面積公式求出n的具體數(shù)值了。更進(jìn)一步地,由于圓形和正方形都具有特殊的對稱性,因此我們可以只考 察一部分圖形,同樣可以得到相同的結(jié)果:正方形與其內(nèi)切圓-部分那么問題的關(guān)

5、鍵就在于,這個比值到底應(yīng)該怎么求呢?方法有很多,最容易想到的就是對圓形求積分,得到對應(yīng)的面積。對計算 機(jī)來講,我們可以返璞歸真,用積分的思想,將圖中這個扇形劃分為大量 小“矩形”,對小矩形面積求和即可得到扇形面積。但是還有一種更加直接的方法。我們可以在圖示的正方形中直接隨機(jī)撒下 一些點,然后統(tǒng)計落在扇形內(nèi)部的點的個數(shù),這個個數(shù)比上我們?nèi)鱿碌狞c 的總個數(shù),也就近似等于扇形面積與正方形面積之比。正方形與其內(nèi)切圓-部分-隨機(jī)撒點結(jié)合上述分析,我們可以得到 n值的計算式:好了,鋪墊了這么多,接下來讓我們直接上代碼: import ran dom REPEAT = 2 0000 # 實驗次數(shù) count

6、 = 0 #用于記錄落在扇形內(nèi)部的隨機(jī)點數(shù) f-or i i n range ( REPEAT ): x = random.random()并生成.吼1,H)區(qū)間內(nèi)的均勻分布隨機(jī)數(shù). y = random.random(). if xx + y*y ratio = co Jilt / REPEAT PI = 4 * ratio PI3.13B8可以看到,最后得到的n值與實際值是比較接近的。2.2求積分同樣地,在很多情境下,對于一些比較難以求出解析式的積分,或是即使 知道解析式計算起來也比較麻煩的積分,我們并不需要一味地求出準(zhǔn)確積 分,而只需要通過蒙特卡洛方法得到一個粗糙的近似值即可,大大降低了

7、 計算的成本。實際上,第一個例子的扇形面積可以從積分的角度考慮,而這個例子中的 積分也同樣可以從面積的角度考慮,二者本質(zhì)上并無區(qū)別。這里我們就以一個簡單的積分為例,演示一下用蒙特卡洛方法求解積分的 過程。x的平方圖中所示函數(shù)為,所以應(yīng)該等于1/3,也就是0.666。放碼過來看看:import ndomdef solve_integral(repeat = 200Q0) - float count = 0For 1 in rangerepeat):x = random.randomf)y = ra ndom.random()count += 1ratio = count / repeat integral = ratio 1 return inte-gralif _name_ = _main_:Pepeat = irbtfinputf請輸入實瞼次數(shù):) print ( 5olve_integral( re p-eat)#請輸入實驗次數(shù);509090芾 0.6660663.總結(jié) 本文簡單介紹了一種簡單的隨機(jī)算法一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論