隨機(jī)森林入門筆記

此篇文章翻譯自以下鏈接(https://community.alteryx.com/t5/Data-Science-Blog/Random-Forests-in-Python/ba-p/138437

隨機(jī)森林一種多功能的機(jī)器學(xué)習(xí)算法,它可以作用于從營銷到醫(yī)療保健纵搁、保健的眾多應(yīng)用腾誉。它可用于模擬營銷對獲客峻呕、留存和流失的影響趣效,或者預(yù)測疾病風(fēng)險和易感染性。

隨機(jī)森林可用于分類classification和回歸regresssion問題讯私,它可以處理大量的特征斤寇,并且有助于估計哪些特征在建模的基礎(chǔ)數(shù)據(jù)中占重要地位拥褂。

這是一篇關(guān)于在Python中使用隨機(jī)森林的文章。

1莫秆、什么是隨機(jī)森林

隨機(jī)森林幾乎可以用于任何預(yù)測問題悔详,甚至是非線性問題。它是一種相對較新(我猜現(xiàn)在也不新了)的機(jī)器學(xué)習(xí)策略缝驳,出自90年代的貝爾實驗室党巾,它可以用于任何事情霜医。它屬于更大類的機(jī)器學(xué)習(xí)算法,稱為集合方法署海。

集成學(xué)習(xí)

集成學(xué)習(xí)涉及集中模型的組合以解決單個預(yù)測問題砸狞。它的工作原理是生成多個獨立學(xué)習(xí)和預(yù)測的分類器/模型镀梭。然后這些預(yù)測組合起來得到單個預(yù)測結(jié)果,與單個的分類器相比研底,它的結(jié)果應(yīng)該是一樣好或者更好。

隨機(jī)森林是集成學(xué)習(xí)的一個分支冠蒋,因為它依賴于決策樹的集成乾胶。關(guān)于Python中更多關(guān)于集成學(xué)習(xí)的內(nèi)容:Scikit-Learn docs

隨機(jī)決策樹

所以我們知道了隨機(jī)森林是其他模型的集合,但它究竟聚合了哪些模型呢识窿?你可能從它的名稱中已經(jīng)猜到了,隨機(jī)森林聚合了分類或者回歸樹孽拷。決策樹由一系列決策組成半抱,用于對數(shù)據(jù)集的觀測值進(jìn)行分類窿侈。

隨機(jī)森林

誘導(dǎo)隨機(jī)森林的算法秋茫,將自動創(chuàng)建一堆隨機(jī)決策樹肛著。由于樹是隨機(jī)生成的,因此大多數(shù)樹對于學(xué)習(xí)分類/回歸問題都沒有意義(可能是99.9%的樹)殉农。


如果一個觀測值為length=45,blue eye,legs=2,那么它將被劃分為紅色
Arboreal 投票

那么超凳,一萬個糟糕的模型有什么用呢耀态?事實證明首装,它們真的沒那么有用。但是驰吓,有用的是少數(shù)非常好的決策樹,它也會和壞的決策樹一起生長现斋。

當(dāng)我們進(jìn)行預(yù)測時偎蘸,新的觀測值隨決策樹自上而下Push并且被賦予一個預(yù)測值/標(biāo)簽。一旦森林中的每棵樹都報告了其預(yù)測值/標(biāo)簽迷雪,我們就會對預(yù)測進(jìn)行統(tǒng)計章咧,所有樹的投票結(jié)果作為最終預(yù)測結(jié)果返回。

簡單來說扰柠,99.9%不相干的樹做出的預(yù)測疼约,會涵蓋所有的結(jié)果程剥,并且這些預(yù)測結(jié)果相互抵消。少數(shù)優(yōu)秀樹木的預(yù)測才是好的舔腾,并且得到好的預(yù)測結(jié)果稳诚。

2采桃、為什么要用它丘损?

它很簡單

隨機(jī)森林是機(jī)器學(xué)習(xí)中的多功能折疊刀徘钥,你幾乎可以把任何東西扔給它。它在估計推斷轉(zhuǎn)換方面做得特別好舆驶,因此沙廉,你不需要像SVM那樣做太多調(diào)參(它對于時間緊迫的人來說特別好)

一個轉(zhuǎn)換的例子

隨機(jī)森林能夠在沒有精心設(shè)計的數(shù)據(jù)轉(zhuǎn)換的情況下學(xué)習(xí)。以f(x) = log(x)為例珊皿。
我們將在Yhat自己的交互環(huán)境Rodeo中利用Python生成分析數(shù)據(jù)蟋定,在這里下載RodeoMac,WindowsLinux的安裝文件草添。
首先,我們先生成一下數(shù)據(jù)并添加噪聲抄淑。

import numpy as np
import pylab as pl

x = np.random.uniform(1, 100, 1000)
y = np.log(x) + np.random.normal(0, .3, 1000)

pl.scatter(x, y, s=1, label="log(x) with noise")
pl.plot(np.arange(1, 100), np.log(np.arange(1, 100)), c="b", label="log(x) true function")
pl.xlabel("x")
pl.ylabel("f(x) = log(x)")
pl.legend(loc="best")
pl.title("A Basic Log Function")
pl.show() 

得到如下結(jié)果:


如果我們嘗試構(gòu)建一個基本的線性模型來使用x來預(yù)測y蝇狼,我們會得到一條直線,它將log(x)函數(shù)一分為二贱枣。然而,如果我們使用隨機(jī)森林钠乏,它可以更好地近似log(x)曲線春塌,并且我們得到的東西看起來更像真正的函數(shù)只壳。



線性模型 vs 隨機(jī)森林

當(dāng)然锅必,你也可以說隨機(jī)森林對log(x)函數(shù)有點過擬合搞隐。不管怎么樣,這說明了隨機(jī)森林并不受線性約束的約束逢捺。

3使用方法

特征選擇

隨機(jī)森林的最佳用例之一是特征選擇蒸甜。嘗試大量決策樹變體的副產(chǎn)品之一是余佛,您可以檢查每棵樹中哪些變量最佳或者最差辉巡。
當(dāng)某個樹使用一個參數(shù)而另一個不使用時,您可以比較從該參數(shù)的包含/排除中丟失或獲得的值憔恳。好的隨機(jī)森林實現(xiàn)將為您做到這一點钥组,所以您需要做的就是知道要查看哪個方法或參數(shù)。
在下面的例子中今瀑,我們試圖找出哪些變量對于將葡萄酒分類為紅色或白色最重要程梦。



分類

隨機(jī)森林也很善長分類問題。它可用于對具有多個可能值的類別進(jìn)行預(yù)測橘荠,也可以對其進(jìn)行校準(zhǔn)以輸出概率屿附。你需要注意的一件事情是過擬合
隨機(jī)森林可能容易過度擬合哥童,尤其是在使用相對較小的數(shù)據(jù)集時挺份。如果您的模型對我們的測試集進(jìn)行“太好”的預(yù)測,您應(yīng)該懷疑贮懈。避免過擬合的一個方法是在模型中只使用有相關(guān)性的特征匀泊。雖然這并不總是干凈完美的,但使用特征選擇技術(shù)(如前面提到的特征選擇)可以使它更容易朵你。

回歸

隨機(jī)森林也可以用于回歸問題。
不像其他的方法毛仪,隨機(jī)森林非常擅長于分類變量或分類變量與連續(xù)變量混合的情況。

一個簡單的Python例子

Scikit-Learn是開始使用隨機(jī)森林的好方法衡怀。scikit-learn API在算法中非常一致,因此您可以非常輕松地在模型之間進(jìn)行競賽和切換茁帽。很多時候潘拨,我從一些簡單的東西開始茫船,然后轉(zhuǎn)移到隨機(jī)森林狰闪。
scikit-learn中隨機(jī)森林實現(xiàn)的最佳功能之一是n_jobs參數(shù)幔欧。這將根據(jù)您要使用的核心數(shù)自動并行化隨機(jī)林的擬合觉义。這里 是scikit-learn撰稿人Olivier Grisel的精彩演講,他講述了在20個節(jié)點的EC2集群上訓(xùn)練隨機(jī)森林的過程徒坡。

from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np

iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['is_train'] = np.random.uniform(0, 1, len(df)) <= .75
df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)
df.head()

train, test = df[df['is_train']==True], df[df['is_train']==False]

features = df.columns[:4]
clf = RandomForestClassifier(n_jobs=2)
y, _ = pd.factorize(train['species'])
clf.fit(train[features], y)

preds = iris.target_names[clf.predict(test[features])]
pd.crosstab(test['species'], preds, rownames=['actual'], colnames=['preds'])

這就是我們應(yīng)該看到的結(jié)果了剥啤,因為我們選用的是隨機(jī)的數(shù)據(jù)刻诊,所以每次看到的結(jié)果都會有所不同。

preds sertosa versicolor virginica
actual
sertosa 6 0 0
versicolor 0 16 1
virginica 0 0 12

最終思考

由于它的先進(jìn)性民假,隨機(jī)森林非常易于被使用事秀。但是與任何建模一樣,我們都要警惕過擬合睹欲。如果你有興趣在R語言中開始使用隨機(jī)森林,那么請查看randomForest包吧。

翻譯完了才發(fā)現(xiàn)蔚出,并沒有寫太多干貨.....

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市滚躯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖愿待,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件农渊,死亡現(xiàn)場離奇詭異,居然都是意外死亡醉顽,警方通過查閱死者的電腦和手機(jī)通熄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門助泽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人煞茫,你說我怎么就攤上這事∏张ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么绘盟? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任沦零,我火速辦了婚禮,結(jié)果婚禮上屯仗,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布疼鸟。 她就那樣靜靜地躺著吴攒,像睡著了一般左驾。 火紅的嫁衣襯著肌膚如雪帆吻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天束倍,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼域庇,長吁一口氣:“原來是場噩夢啊……” “哼尉姨!你這毒婦竟也來了覆致?” 一聲冷哼從身側(cè)響起汰蜘,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎项滑,沒想到半個月后州疾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體薄嫡,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年巡球,在試婚紗的時候發(fā)現(xiàn)自己被綠了棚贾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琳轿。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡琉闪,死狀恐怖蛀蜜,靈堂內(nèi)的尸體忽然破棺而出涵防,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站创译,受9級特大地震影響立砸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜规揪,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涯捻,春花似錦浅妆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至涛浙,卻和暖如春趴乡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蝗拿。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蒿涎,地道東北人哀托。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像劳秋,于是被迫代替她去往敵國和親仓手。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容