導(dǎo)語: 對于那些認(rèn)為隨機(jī)森林是黑匣子算法的人來說,這篇帖子會提供一個(gè)不同的觀點(diǎn)。接下來,我將從4個(gè)方面去理解隨機(jī)森林模型。 1.我們的特征有多重要? 在sklearn隨機(jī)森林中使用model.feature_importance來研究其重要特征是很常見的。重要特征是指與因變量密切相關(guān)的特征,并且對因變量的變化影響較大。我們通常將盡可能多的特征提供給隨機(jī)森林模型,并讓算法反饋對預(yù)測最有用的特征列表。但仔細(xì)選擇正確的特征可以使我們的目標(biāo)預(yù)測更加準(zhǔn)確。 計(jì)算feature_importances的想法很簡單,但卻很有效。 把想法分解成簡單的幾步:
計(jì)算特征重要性的代碼: 下面的代碼將為所有特征提供一個(gè)結(jié)構(gòu)為{特征,重要性}的字典。 輸出: 在上面的輸出中,可以看出,YearMade將最大程度增加RMSE預(yù)測。所以它一定是最重要的特征。(上面的結(jié)果所對應(yīng)的數(shù)據(jù)是從Kaggle competition獲取的,這是鏈接——https://www./c/bluebook-for-bulldozers) 2.我們對我們的預(yù)測有多大信心?一般來說,當(dāng)企業(yè)想要有所預(yù)測時(shí),他們的最終目的不是降低成本就是提高利潤。在做出重大商業(yè)決策之前,企業(yè)十分熱衷于去評估做出這個(gè)決定的風(fēng)險(xiǎn)的大小。但是,當(dāng)預(yù)測結(jié)果并沒有被展現(xiàn)在置信區(qū)間時(shí),我們可能會無意中將企業(yè)至于更多的風(fēng)險(xiǎn)中,而不是降低風(fēng)險(xiǎn)。 當(dāng)我們使用線性模型(基于分布假設(shè)的一般模型)時(shí),比較容易找到我們預(yù)測的置信水平。但是當(dāng)談到隨機(jī)森林的置信區(qū)間時(shí),找起來并不是那么容易。 我想,任何上過線性回歸課程的人都肯定看過這張圖3。為了找到一個(gè)最佳線性模型,我們要去尋找偏差—方差最為折衷的模型。這張圖片很好地說明了預(yù)測中偏差和方差的定義。(我們理解為這4張圖分別是由四個(gè)不同的人擲飛鏢所得)。 如果我們有高偏差和低方差值時(shí)(第三個(gè)人),我們投擲的飛鏢會固定的遠(yuǎn)離紅心。相反,如果我們有高的方差和低的偏差(第二個(gè)人),那么他投擲飛鏢的結(jié)果就很不一樣。如果有人去猜測他下一個(gè)飛鏢擊中的位置,那么它既有可能打到靶心也有可能遠(yuǎn)離靶心?,F(xiàn)在我們來假設(shè)在現(xiàn)實(shí)生活中識別一起信用欺詐等同于上面例子擊中靶心。如果信用公司擁有的的預(yù)測模型與上面第二人的擲飛鏢行為很相似,那么該公司在大多數(shù)時(shí)候都不會抓住這個(gè)詐騙犯,盡管模型預(yù)測的是正確的。 因此,不僅僅是意味著預(yù)測的準(zhǔn)確程度,我們還應(yīng)該檢查我們的預(yù)測的置信水平。 在隨機(jī)森林中如何做到這一點(diǎn)?隨機(jī)森林是由許多決策樹組成。每棵樹分別預(yù)測新的數(shù)據(jù),隨機(jī)森林從這些樹中提取出平均預(yù)測值。預(yù)測置信水平的想法只是為了去看來自不同樹木的預(yù)測有多少因?yàn)樾碌挠^測而產(chǎn)生變化,然后進(jìn)一步分析。 基于方差樹預(yù)測置信度的源代碼:注:偏差 = (up-down)/Yhat 以上代碼的輸出如下所示:
從這個(gè)輸出數(shù)據(jù)可以讀出,我們可以說我們對于驗(yàn)證集上索引為14的觀測的預(yù)測最沒有信心。 3.什么是預(yù)測路徑?如果我們想要分析哪些特征對于整體隨機(jī)森林模型是重要的,則 特征重要性(如在第一部分中)是有用的。但是如果我們對某個(gè)特定的觀察感興趣,那么 Tree interpreter的角色就會發(fā)揮作用。 舉個(gè)例子,現(xiàn)在有一個(gè)RF模型,這種模型會預(yù)測—一位來醫(yī)院的患者X是否具有很高的概率再入院?,為了簡單起見,我們考慮只有3個(gè)特征—患者的血壓值,患者的年齡以及患者的性別?,F(xiàn)在,如果我們的模型認(rèn)為患者A有80%的可能會再次入院,我們怎么能知道這個(gè)被模型預(yù)測為他(她)將重新入院的患者A有什么特殊之處?在這種情況下,Tree interpreter會指示預(yù)測路徑緊隨那個(gè)特殊的患者。就像是,因?yàn)?strong>患者A是65歲的男性,這就是為什么我們的模型會預(yù)測他將再次入院。另一個(gè)被模型預(yù)測將再次入院的患者B ,可能時(shí)因?yàn)樗懈哐獕海ǘ皇且驗(yàn)槟挲g或性別)。 基本上,Tree interpreter給出了偏差的排序列表(在起始節(jié)點(diǎn)的平均值)以及單個(gè)節(jié)點(diǎn)對給定預(yù)測的貢獻(xiàn)。 圖5的這棵決策樹(深度:3層)基于波士頓房價(jià)數(shù)據(jù)集。根據(jù)中間節(jié)點(diǎn)的預(yù)測值以及導(dǎo)致數(shù)值發(fā)生變化的特征,它顯示了決策路徑的分解。單節(jié)點(diǎn)的貢獻(xiàn)是該節(jié)點(diǎn)的值與前一個(gè)節(jié)點(diǎn)值的差值。 圖6 給出了對于患者A使用Tree interpreter的輸出示例。圖片顯示年齡為65歲是模型預(yù)測再入院概率高于均值的最高貢獻(xiàn)者。 圖6同樣也可以使用瀑布圖7來表示。我從“ 瀑布圖包 ”中選材做的這個(gè)快速簡單的瀑布圖。 上面的瀑布圖可視化代碼:
4.目標(biāo)變量如何與重要特征相關(guān)? Partial Dependence Plots找到最重要的特征后,下一步我們可能會感興趣的是研究目標(biāo)變量與興趣特征之間的直接關(guān)系。從線性回歸中得到的與其相類似的是模型系數(shù)。對于線性回歸,系數(shù)以這種方式被計(jì)算,即我們可以通過說:“在Xj中有1個(gè)單位變化,保持所有其他Xi不變,Y會發(fā)生什么變化?”這樣的方式來表示。 雖然我們有來自隨機(jī)森林的特征重要性,但是它們只是給出Y的變量是由Xi的改變之間的相關(guān)性。我們不能直接地解釋他們就像保持所有其他特征不變,Y該變量取決于Xj中的單位的變化。 幸運(yùn)的是,我們有看一被看作線性模型系數(shù)圖表的局部依賴圖,但同樣也可被擴(kuò)展為看起來像黑箱模型。這個(gè)想法是將預(yù)測中所做的改變孤立于一個(gè)特定的功能。它不同于X對Y的散點(diǎn)圖,因?yàn)樯Ⅻc(diǎn)圖不能隔離X對Y的直接關(guān)系,并且可能受X和Y所依賴的其他變量的間接關(guān)系所影響。 PDP分析步驟如下:
圖 9 是partial dependence plot的一個(gè)例子。數(shù)據(jù)來自 kaggle bulldozer competition data,它顯示了生產(chǎn)年份(YearMade)和(銷售價(jià)格)SalesPrice的關(guān)系 而圖10是SalePrice與YearMade的線狀圖。我們可以看到,散點(diǎn)圖/折線圖可能無法像PDP那樣捕獲YearMade對SalesPrice的直接影響。 寫在最后: 在大多數(shù)情況下,隨機(jī)森林在預(yù)測中可以擊敗線性模型預(yù)測。針對隨機(jī)森林經(jīng)常提出的反對意見是:對它的理解沒有線性模型那樣直觀,但是本文的討論希望幫助你回答這樣的反對意見。 作者個(gè)人簡歷:目前在舊金山大學(xué)學(xué)習(xí)數(shù)據(jù)科學(xué)(分析),在Manifold.ai做實(shí)習(xí)生。此前,曾在凱捷咨詢公司擔(dān)任數(shù)據(jù)科學(xué)家,在Altisource擔(dān)任高級業(yè)務(wù)分析師。 加入 人工智能量化投資交流群 |
|