scikit_learn 官方文档翻译(集成学习)
1.11. Ensemble methods(集成學習)
目標:
相對于當個學習器,集成學習通過使用多個基學習器的預測結果來來提高學習預測的泛化性能以及魯棒性;
集成學習的兩個思路:
1)、通過使用并行的學習,得到多個學習模型然后取其平均結果目的在于減少方差,代表算法有隨機森林。通常來說多個學習器的集成要比單個學習器的效果要好多。
2)、采用串行的方式生成多個學習器目的在于減少偏差(bias),使用多個弱分類器組合成為一個強分類器,代表算法adaBoosting以及boosting tree、GDBT。
1.11.1. Bagging meta-estimator
集成學習中,bagging方法使用訓練集的一個隨機子集來進行訓練多個黑盒分類器,然后將不同的黑盒分類器集成到一起得到一個最終的預測模型。在生成訓練模型的過程中引入隨機化并在最后集成結果的方式可以減少整個訓練模型的方差,同時不用因為底層的學習器的不同而發生改變。隨機森林通過引入隨機性來避免過擬合因此在生成基學習器時可以考慮完成生成即基學習器越強越好,對于boosting的方法則是相反,要求基學習器要弱一點才好。(boosting減少偏差,因為越強越吻合3反而容易出現過擬合)。
隨機森林根據訓練數據不同的生成方式包括一下:
1)、又放回的抽取,稱作bagging
2)、針對特征進行隨機化,成為隨機子空間random subspace
3)、針對特征和樣本都做隨機化,稱為隨機patchs(補丁、塊)
4)、隨機抽取樣本,稱為 Pasting
scikit-learn框架中,sklearn.ensemble中有BaggingClassifier和BaggingRegres?sor兩個對象可以實現Bagging方法。方法中可以通過參數指定模型使用基學習器的類型,以及抽取子集的策略。通用的參數為一下幾個參數:
max_sample:指定隨機子集的規模;小于1表示比例,大于1則為樣本數
max_features:指定訓練數據的特征規模;小于1表示比例,大于1則為樣本數
boostrap:指定是否又放回的抽樣;true/false;
boostrap_features:指定特征是否又放回的抽樣;true/false;
oob_score = true:表示使用帶外數據衡量泛化能力,數據越大越好;
一下實例中基學習器采用K近鄰算法,樣本規模為原樣本的50%,特征為50%
from sklearn.ensemble import BaggingClassifier from sklearn.neighbors import KNeighborsClassifier bagging = BaggingClassifier(KNeighborsClassifier(),max_samples=0.5, max_features=0.5) View Code1.11.2. Forests of randomized trees
基于隨機化的決策樹算法,sklearn.ensemble包含了兩種平均結果的算法:隨機森林和Extra-Tree。在構建分類器時通過引入隨機性生成了一系列不相同的樹,然后將不同的分類樹的結果進行平均作為最終的輸出結果。
樹算法的訓練和其他的算法一樣,都是使用兩個數組作為參數:X承載訓練特征, Y承載訓練數據的標簽值。如下例所示:
from sklearn.ensemble import RandomForestClassifier X = [[0, 0], [1, 1]] Y = [0, 1] clf = RandomForestClassifier(n_estimators=10) clf = clf.fit(X, Y) View Code如果擴展成為多分類的問題,那么將Y擴展成為[n_samples, outputs]
1.11.2.1. Random Forests
隨機森林的使用主要包括這兩個類:RandomForestClassifier?and?RandomForestRegressor;一個負責分類一個負責回歸。在隨機森林生成過程中數據采用又放回的抽取,同時在選擇劃分時選中的劃分只是在相應的特征子集上的最優而不是全部特征的最優,這樣就會使得最終的bias會有所增大,但是通過多棵樹的平均使得方差varience減少很多,因此這種方法還是很有效的。在最終預測結果時,現有版本采取的方式是平均所有類別的輸出的概率,然后選擇最大的輸出(只在最后產生一個結果),拋棄了原有的對類別的投票(在每棵樹上都有一個分類結果);
1.11.2.2. Extremely Randomized Trees(省略)應該是計算劃分點的計算方式發生變化。
1.11.2.3. Parameters
n_estimators:生成的基學習器的數量,越多越好,但是越費時間;
max_features:抽樣后樣本的最大值,在回歸問題中一般直接等于原有的特征數,在分類問題中一般采用sqrt(原有特征);
max_depth=None:生成基學習器樹的最大深度;
min_samples_split=1:選擇劃分最小的樣本數,越小生成的樹就越完全,通常和max_depth搭配使用產生一個發育完全的樹;
bootstrap=False:同上面說的;
oob_score = true:同上(當然在使用又放回抽樣時使用);
n_jobs = k:設置并行化計算參數,任務被分成k分,使用機器的k個核心計算,當k=1時使用機器的全部核心,可以提升計算速度,但是不是線性關系。
1.11.2.5. Feature importance evaluation
在決策樹的生成過程中特征使用的先后順序可以作為一個特征相對重要性判斷的一個指標,越先使用的特征對結果的貢獻就越大因次該特征也就相對來說比較重要,因此可以使用該特征對最后結果的貢獻度來表示該特征的相對重要性。
在實際的使用中,使用feature_importances_屬性來存儲每個特征的重要性指標,維度就是特征的數量,其總和為1;
轉載于:https://www.cnblogs.com/daguankele/p/6706651.html
總結
以上是生活随笔為你收集整理的scikit_learn 官方文档翻译(集成学习)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Egret资源管理解决方案
- 下一篇: 防止sql注入的方法