天天看點

內建學習思想

一、內建學習(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)
           

參數說明:

  • n_estimators

    :森林中決策樹的數量,即子模型的數量,值過小會導緻欠拟合,過大會導緻過拟合,一般選擇50~100,預設為10。
  • criterion

    :分類方法,可選值為’gini’和資訊增益’entropy’,預設為’gini’。
  • max_depth

    :樹的最大深度,預設為None,表示一直擴充到葉子節點足夠純或者樣本數小于min_samples_slpit。
  • max_features

    :指定選擇最優劃分屬性的時候,從多少個特征屬性中選擇,即k。預設為’auto’:max_features=sqrt(n_features),一般不改動。
  • min_samples_split

    :分割葉子節點所需的最少樣本數量,預設為2。
  • min_smaples_leaf

    :葉子節點所需的最少樣本數量,預設為1。
  • bootstrap

    :是否進行有放回重采樣,預設為True。

五、總結

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。 同左

繼續閱讀