一、內建學習(Ensemble Learning)
內建學習的思想是将若幹個學習器(分類器&回歸器)組合之後産生一個新的學習器。
內建學習的主要思想:
1、Bagging:代表算法是随機森林(Random Forest)
2、Boosting:代表算法是AdaBoost、GBDT
3、Stacking:由于深度學習的發展,現已基本不用
為什麼要用內建學習?
- 弱學習器之間存在一定差異,這會導緻分類邊界不同,将多個弱分類器合并後,可以得到更加合理的邊界,減少整體錯誤率,實作更好的效果。
- 對于資料集過大或者過小,可分别通過劃分和有放回抽樣産生不同的子資料集,然後使用子資料集進行訓練,産生不同的分類器,最終合并成為一個大的分類器。
- 如果資料的劃分邊界過于複雜,使用線性模型很難描述,那麼可以訓練多個模型,再進行模型的融合。
- 對于多個異構的特征集,很難進行融合,則可以考慮每個資料集訓練一個分類模型,然後将多個模型融合。
二、Bagging思想
Bagging 方法又稱為自舉彙聚法(Bootstrap Aggregating),其思想是:在m 個原始資料集上通過有放回抽樣的方式,重新選出m 個資料進行訓練,得到一個分類器;重複上述操作n 次,得到n 個分類器。
Bagging 方法用于分類模型 – 多數投票;
Bagging 方法用于回歸模型 – 求均值
Bagging 方法的弱學習器可以是基本的算法模型,如:Linear、Ridge、Lasso、Logistic、Softmax、ID3、CART、C4.5、SVM、KNN等。
Bagging 方法是有放回的抽樣,且每個子集的樣本數量必須有原始資料集一緻,是以子集中是存在重複資料的,但是在模型訓練過程中會将重複資料删除,即最終用于訓練模型的資料集樣本數和原始樣本數是不一緻的。
三、随機森林(Random Forest)
在Bagging政策的基礎上修改後的一種算法
-
從原始樣本集(n個樣本)中用Bootstrap(有放回重采樣)方法選出n 個樣本;
(注意:真正用于訓練模型的是n 個樣本去重後的樣本集!)
-
使用去重後的子資料集訓練決策樹:從所有特征屬性中随機選擇k 個屬性,從這k 個屬性中選擇最佳分割屬性作為節點來疊代的建立決策樹;
(最終用于劃分的特征屬性是局部最優的)
- 重複以上兩步m 次,建立m 個決策樹;
- 這m 個決策樹形成随機森林,通過投票表決結果來決定資料屬于哪一類。
決策樹:從目前節點的所有特征屬性中選擇最優劃分屬性,用于劃分的特征屬性是全局最優的;
随機森林:對于決策樹的每一個節點,都是從目前節點的所有特征屬性中随機選擇k 個屬性,然後從這k 個屬性中選擇最佳劃分特征屬性,用于劃分的特征屬性是局部最優的。
四、RF API
sklearn庫中随機森林分類器RandomForestClassifer API:
sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini',
max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0,
max_features='auto', max_leaf_nodes=None, min_impurity_split=1e-07, bootstrap=True,
oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)
參數說明:
-
:森林中決策樹的數量,即子模型的數量,值過小會導緻欠拟合,過大會導緻過拟合,一般選擇50~100,預設為10。n_estimators
-
:分類方法,可選值為’gini’和資訊增益’entropy’,預設為’gini’。criterion
-
:樹的最大深度,預設為None,表示一直擴充到葉子節點足夠純或者樣本數小于min_samples_slpit。max_depth
-
:指定選擇最優劃分屬性的時候,從多少個特征屬性中選擇,即k。預設為’auto’:max_features=sqrt(n_features),一般不改動。max_features
-
:分割葉子節點所需的最少樣本數量,預設為2。min_samples_split
-
:葉子節點所需的最少樣本數量,預設為1。min_smaples_leaf
-
:是否進行有放回重采樣,預設為True。bootstrap
五、總結
RF 的主要優點:
1、訓練可以并行化,對于大規模樣本的訓練具有速度優勢。
2、由于進行随機選擇決策樹劃分特征清單,這樣當樣本次元較高(特征屬性較多)時,仍然具有較高的訓練性能。
3、可以給出各個特征的重要性清單。
4、由于存在随機抽樣,訓練出來的模型方差小,泛化能力強。
5、實作簡單。
6、對于部分特征的缺失不敏感。
RF 的主要缺點:
1、在某些噪音比較大的特征上,模型容易陷入過拟合。
2、取值較多的劃分特征對RF的決策會産生更大影響,進而有可能影響模型效果。
RF scikit-learn 相關參數
參數 | RandomForestClassifer | RandomForestRegressor |
---|---|---|
criterion | 劃分标準,預設為’gini’,可選gini和entropy | 劃分标準,可選mse 和mae,預設mse |
loss | 不支援 | 損失函數,可選’linear’、‘square’、‘exponential’,預設為linear,一般不改動 |
n_estimators | 最大疊代次數,即随機森林中決策樹的個數,值過小會導緻欠拟合,過大會導緻過拟合。一般取50~100,預設為10. | 同左 |
max_features | 給定選擇最佳劃分特征時,選擇多少個特征屬性進行考慮,預設為’auto’:max_features=sqrt(n_features) | 同左 |
max_depth | 決策樹的最大深度,預設為None,表示一直擴充到葉子節點足夠純或者樣本數小于min_samples_split | 同左 |
min_samples_split | 分割節點所需的最少樣本數量,預設為2. | 同左 |
min_samples_leaf | 葉子節點中最少樣本數量,預設為1. | 同左 |
bootstrap | 是否進行有放回重采樣,預設為True。 | 同左 |