機器學習回顧篇(16):蒙特卡洛演算法
蒙特卡羅(MC,Monte Carlo)方法是一種隨機取樣模擬求解的方法,又被稱統計試驗方法或者統計模擬方法。起初,蒙特卡羅方法的提出是20世紀40年代馮·諾伊曼,斯塔尼斯拉夫·烏拉姆和尼古拉斯·梅特羅波利斯等人為推進研製原子彈的“曼哈頓”計劃而提出,但大概是因為蒙特卡羅方法是一種隨機模擬的方法,與賭博場裡面的扔骰子的過程十分相似而以賭城的名字命名這一方法。現如今,這一方法已被廣泛應用到科學計算的眾多應用領域中。
在這裡,之所以沒有說是蒙特卡羅演算法,而是稱蒙特卡羅方法,是因為任何通過生成合適的隨機數,並使用這些隨機樹建立概率模型,以找到難以通過其他方法解決的數值問題的近似解的方法歸類為蒙特卡羅方法。蒙特卡羅這一家族中還包括蒙特卡羅演算法、蒙特卡羅模擬、蒙特卡羅過程、蒙特卡羅搜尋樹(AlphoGo中使用的方法)等眾多分支。
所以,在理解蒙特卡羅方法時,需要將其當做一個大類的演算法去對待,它是一種思想,只要符合了這種思想,就屬於蒙特卡羅方法,不是一個固定化的數學模型,更沒有特定的數學公式。只需要理解:任何通過生成合適的隨機數,並使用這些隨機樹建立概率模型,以找到數值問題的近似解的方法都可以稱為蒙特卡羅方法
蒙特卡羅方法的一個最著名應用就是求定積分。函式$f(x)$影象如下,現在要求函式$f(x)$在$[a, b]$之間的積分,也就是陰影部分面積,即$F = \int_a^b {f(x)dx} $。
蒙特卡羅方法的解法如下。如下圖所示,我們在$[a, b]$之間取一個數$x$,那麼我們可以粗略地將$f(x) \cdot (b - a)$來估計陰影部分的面積。當然,只用一個值進行估算,結果可能過於粗糙,所以我們可以多取幾個值,然後用多個結果估計值的平均值作為最終的結果。如下圖所示,取4個值進行估計:
可以預見,取4個值進行估計時,結果將更加準確。可以認為,當進行估計的值個數越多時,最終結果將越接近真實值。
這個例子就是蒙特卡羅方法的典型應用:使用隨機數($x$)建立概率模型,對最終結果(定積分)進行估計,當估計次數越多時,估計值越接近真實值。
進一步地,我們列舉一些例子來說明什麼是蒙特卡羅方法。
例子1:黑箱子裡裝有100個球,包含數量不等的紅、綠、藍三種顏色,求紅色球數量。如果值抽取一次,為紅球,那麼我們可以認為,黑箱子裡全是紅球;重複抽取一萬次,去一萬次抽取到紅球的數量的平均值最為估計結果。
例子2:求下圖所示圖片中白色圖案佔整張圖片面積的比例。隨機從影象中抽取一個畫素,抽取n次,看n次中白色畫素所在比例。
例子3:已知圓面積公式$S = \pi \cdot {r^2}$,求圓周率$π$的值。可以這麼做,構造如下圖所示的面積為1的正方形,並以邊長為半徑畫四分之一圓。之後,隨機網正方形內新增$n$個點,落在四分之一圓內點所在比例記為四分之一圓的面積,然後通過圓面積公式可估計$π$的值。
相關推薦
機器學習回顧篇(16):蒙特卡洛演算法
蒙特卡羅(MC,Monte Carlo)方法是一種隨機取樣模擬求解的方法,又被稱統計試驗方法或者統計模擬方法。起初,蒙特卡羅方法的提出是20世紀40年代馮·諾伊曼,
機器學習回顧篇(6):KNN演算法
1 引言¶ 本文將從演算法原理出發,展開介紹KNN演算法,並結合機器學習中常用的Iris資料集通過程式碼例項演示KNN演算法用法和實現。
機器學習回顧篇(2):最小二乘法
1 引言 在機器學習常用的優化演算法中,梯度下降法和最小二乘法佔盡了風騷。梯度下降法上一篇中已經詳細介紹過了,那麼這一篇,我們繼續說一說最小二乘法。 2 什麼是最小二乘法 描述預測模型準確程度有多重不同的方法: (1)誤差和最小化。這種方法存在的問題是正負誤差會相互抵消,導致描述不準確。 (2)誤差
機器學習回顧篇(4):邏輯迴歸
1 引言 邏輯不邏輯,迴歸非迴歸。 回想當年初次學習邏輯迴歸演算法時,看到”邏輯迴歸“這個名字,第一感覺是這是一個與線性迴歸類似的迴歸類別的演算法,只不過這個演算法突出”邏輯“,或者與某個以”邏輯“命名的知識點有關。可後來卻發現,這是
機器學習回顧篇(5):樸素貝葉斯演算法
1 引言 說到樸素貝葉斯演算法,很自然地就會想到貝葉斯概率公式,這是我們在高中的時候就學過的只是,沒錯,這也真是樸素貝葉斯演算法的核心,今天我們也從貝葉斯概率公式開始,全面擼一擼樸素貝葉斯演算法。 2 貝葉斯概率公式 2.1 聯合概率與全概率公式 定義1:完備事件組 ${A_1} \cup {A_2
機器學習回顧篇(7):決策樹演算法(ID3、C4.5)
注:本系列所有部落格將持續更新併發布在github上,您可以通過github下載本系列所有文章筆記檔案。 1 演算法概述¶
機器學習回顧篇(8):CART決策樹演算法
注:本系列所有部落格將持續更新併發布在github和gitee上,您可以通過github、gitee下載本系列所有文章筆記檔案。 1 引言 上一篇部落格中介紹了ID3和C4.5兩種決策樹演算法,這兩種決策樹都只能用於分類問題,而本文要說的CART(classification and regression
機器學習回顧篇(10):感知機模型
注:本系列所有部落格將持續更新併發布在github和gitee上,您可以通過github、gitee下載本系列所有文章筆記檔案。 1 引言¶ 感知機是一種簡單且易於實現的二分類判別模型,主要思想是通過誤分類
機器學習回顧篇(11):支援向量機(SVM)
1. 引言¶ SVM,Support Vector Machine,也就是我們中文名的支援向量機,我相信,只要是與機器學習有過照面的童鞋或多或少都聽說過這個名字。作為機器學習家族中的老牌成員,其經典自不必說。從原理和特性上講,SVM
機器學習回顧篇(12):整合學習之Bagging與隨機森林
1 引言¶ 整合學習演算法是當下炙手可熱的一類演算法,在諸多機器學習大賽中都頻繁出現它的身影。準確來說,整合學習演算法並不是一個單獨的機器學習演算法,而是通過構建多個學習器,博採眾家之長,共同求解問題的一種思想。古語有云:&ldquo
機器學習回顧篇(13):整合學習之AdaBoost
在上一篇部落格中,我們總結了整合學習的原理,並展開介紹了整合學習中Bagging和隨機森林這一分枝演算法,在本篇部落格中,我們繼續介紹另一個分枝——Boosting,並對Boosting系列中的經典演算法Adaboost
機器學習回顧篇(14):主成分分析法(PCA)
1 引言¶ 在展開資料分析工作時,我們經常會面臨兩種困境,一種是原始資料中特徵屬性太少,“巧婦難為無米之炊”,很難挖掘出潛在的規律,對於這種情況,我們只能在收集這一環節上多下功夫;另一種困境剛好相反,那就是特徵
機器學習回顧篇(15):整合學習之GDBT
1 引言¶ 梯度提升樹演算法(Gradient Boosting Decision Tree,GBDT)是一個非常經典的機器學習演算法,和我們前面介紹過的Adaboost演算法一樣,都是提
機器學習實戰教程(一):線性回歸基礎篇(上)
學習 reg style spa 目標 pub auto 機器 輸入 一 什麽是回歸? 回歸的目的是預測數值型的目標值,最直接的辦法是依據輸入,寫入一個目標值的計算公式。 假如你想預測小姐姐男友汽車的功率,可能會這麽計算: Ho
機器學習實戰教程(三):決策樹實戰篇之為自己配個隱形眼鏡
原文連結:cuijiahua.com/blog/2017/1… 一、前言 上篇文章機器學習實戰教程(二):決策樹基礎篇之讓我們從相親說起講述了機器學習決策樹的原理,以及如何選擇最優特徵作為分類特徵。本篇文章將在此基礎上進行介紹。主要包括: 決策樹構建 決策樹視覺化 使用決
機器學習實戰教程(五):樸素貝葉斯實戰篇之新浪新聞分類
原文連結: Jack-Cui,https://cuijiahua.com/blog/2017/11/ml_5_bayes_2.html 一、前言 上篇文章機器學習實戰教程(四):樸素貝葉斯基礎篇之言論過濾器講解了樸素貝葉斯的基礎知識。本篇文章將在此基礎上進行擴充套件,你將看到以下內容: 拉普拉
機器學習實戰教程(四):樸素貝葉斯基礎篇之言論過濾器
word 最可 dog 一個 mac github上 開課 和數 基礎上 原文鏈接: Jack-Cui,https://cuijiahua.com/blog/2017/11/ml_4_bayes_1.html 一、前言 樸素貝葉斯算法是有監督的學習算法,解決的是分類問題,
深入理解java虛擬機器系列初篇(一):為什麼要學習JVM?
前言 本來想著關於寫JVM這個專欄,直接寫知識點乾貨的,但是想著還是有必要開篇講一下為什麼要學習JVM,這樣的話讓一些學習者心裡有點底的感覺比較好... 原因一:面試 不得不說,隨著網際網路門檻越來越高,JVM知識也是中高階程式設計師階段必問的一個話題!現在不像以前了,以前會點html都好找工作,現在由於學習
中國mooc北京理工大學機器學習第二周(一):分類
kmeans 方法 輸入 nump arr mod 理工大學 each orm 一、K近鄰方法(KNeighborsClassifier) 使用方法同kmeans方法,先構造分類器,再進行擬合。區別是Kmeans聚類是無監督學習,KNN是監督學習,因此需要劃分出訓練集和測試
我的機器學習之旅(四):回歸與工程應用
多個 算法 ati function RR numpy pen 圖片 bsp 內容:線性回歸;邏輯回歸,應用場景。 一、線性回歸 有監督學習,根據學習樣本{x->y},學習一個映射f:X->Y(線性相關),輸出預測結果y_i。最簡單的例子:y=ax+b 重要組成