欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何在Python中從零開始實現隨機森林

錢良釵2年前15瀏覽0評論

如何在Python中從零開始實現隨機森林?

隨機森林(Random Forest)屬于集成學習(Ensemble Learning)的一種。集成學習,顧名思義,就是集眾模型之大成。類比一下日常生活中的日子,比如給試卷評分,客觀題很簡單,直接按照標準答案就是了(實際上現在考試客觀題基本都通過機器閱卷了),但是主觀題就沒那么簡單了。普通的小測驗,一個老師打個分就是了,但重大考試,為了慎重,往往會找多個老師同時打分,然后通過某種算法得出一個最終分,一般而言是平均,但對分差過大的情況會作特殊處理。某種意義上,其實是讓多個老師投票投出一個最終得分。再比如,判例法系統中的陪審團,也可以看成是集成學習。(但是各種選秀節目的評委打分就不一定是集成學習了,因為有很多黑箱操作 ;-) 集成學習,也是讓多個模型學習同一個問題,然后通過某種投票(voting)機制,得出較優的結果。

(圖片來源:KDnuggets)

隨機森林,顧名思義,就是找一批決策樹來進行決策。用Python代碼來表示,就是構建一個決策樹的列表,然后讓這些決策樹“投票”:

trees = [create_tree() for i in range(n)]

predictions = [bagging(trees, sample) for sample in test_data]

其中,create_tree函數用于構建決策樹,限于篇幅,具體定義這里省略(可以參考各決策樹教程)。

bagging在原數據集的基礎上創建多個子數據集,然后分給多棵決策樹,讓這些決策樹分別學習,最后通過某種投票機制(比如平均數、中位數、眾數)集成多棵決策樹的成果。

比如,通過眾數:

predictions = [predict(trees, sample) for sample in test_data]

bagging_prediction = max(set(predictions), key=predictions.count)

好了,隨機森林的關鍵思路就是這些了。詳細的代碼示例這里就不貼了,可以自行在GitHub等地搜索。

另外,絕大多數情況下,并不需要從零開始實現隨機森林,可以直接利用現成的庫,比如sklearn.ensemble就提供了RandomForestClassifier。

當然,從零開始實現,對于理解隨機森林還是很有幫助的。