データマイニングアルゴリズムと実践(18):統合学習アルゴリズム(ブースティング、バギング)

以前は、主に単一機械学習アルゴリズムの理解と使用を紹介しましたが、実際のシナリオでは、最適な結果を達成するために統合学習、つまり複合マイニングアルゴリズムがよく使用されます。統合学習には、ブースティングとバギングの2つのタイプがあります。前者は、複数の連続した弱い学習者を通じて取得されます。強い学習者(GBDT、XoostGB、LightGBM)は、複数の意思決定ツリーの投票を並行して行うことで最適なモデル(ランダムフォレストRF)を実装し、モデルであるため、通常、統合学習を競争で直接使用します。パフォーマンスは最大限に保証されます。

単一のアルゴリズムは実際には単一の意思決定者のようなものであるため、実際のシーンや競技会では通常、統合アルゴリズムを直接使用します。エラーが発生しやすいです。統合アルゴリズムは、データ/機能をサンプリングするか、モデルのエラー率を意図的に減らすことで、最終的なモデルエラーを最小限に抑えます。戦略、2つのタイプに分けられます:①弱い学習者間に強い依存関係があり、シリアル化する必要がありますシリアル化方法、代表:ブースティング;②弱い学習者間に強い依存関係がない、同時に生成できる並列化方法、代表:バギングとランダムフォレスト(ランダムフォレスト)、sklearn中国コミュニティを参照できます:統合された学習アルゴリズムの詳細

1.バギングとランダムフォレスト

バギングバギング法統合学習、サンプル/データセットのサンプリングを通じて弱い学習者を並行してトレーニングする戦略機能は、一連の弱い学習者をトレーニングした後、特定の組み合わせ戦略(投票または平均化メカニズム)を使用して形成するために平均二乗誤差を最小化することですモデル結果として、ランダムフォレストは、データ/特徴を置換してサンプリングすることにより、より正確なモデルを形成するための並列決定木を構築します。アルゴリズムフローは次のとおりです。

バギングでは、ランダムサンプリング(ブートストラップ)を使用して、トレーニングセットから固定mサンプルを置換してサンプリングし、T回描画します。毎回描画されるmサンプルの内容は異なります。1サンプルの場合、ランダムサンプリングで収集される確率は1です。 / m、収集されない確率は1-1 / m、Tサンプルが収集されない場合、確率は(1-1 / m)^ T、T→∞の場合、(1-1m)^ m→1 /e≃0.368。つまり、バギングのランダムサンプリングの各ラウンドで、トレーニングセット内のデータの約36.8%がサンプリングされません。この部分では、サンプリングされないデータの約36.8%がアウトオブバッグ(OOB)と呼ばれます。 。これらのデータはトレーニングセットモデルのフィッティングに関与しないため、モデルの一般化能力を検出するために使用できます。

    Adaboostと同様に、バギングには弱い学習者に対する制限はありません。決定木とニューラルネットワークが一般的に使用されます。同時に、バギングの組み合わせ戦略は比較的単純です。分類問題は単純な投票方法を使用します。カテゴリまたはカテゴリの1つ回帰問題は、単純平均法を使用して、T個の弱い学習者によって得られた回帰結果を算術平均して最終モデル出力を取得します。バギングアルゴリズムはトレーニングモデルをサンプリングするため、強力な一般化能力があります。モデルの分散を減らすのに非常に効果的です。

ランダムフォレスト(ランダムフォレスト)は、弱い学習者としてCARTデシジョンツリーを使用するGBDTに似た、バギングの進化形です。次に、RFは、デシジョンツリーのいくつかの機能の最大のGini係数機能を分類基準として使用します。上記の2つを除くポイント、RF、通常バギングアルゴリズムも同じです。

2つ、ブースティングとGBDT、XGBoost、LightGBM

ブースティングアルゴリズム戦略は、最初に弱い学習者1を初期の重みでトレーニングし、弱い学習の学習エラー率に従ってトレーニングサンプルの重みを更新して、トレーニングサンプルの重みが高い学習エラーを指すようにすることです。前の弱学習者の割合が高くなり、エラーが発生する後の弱学習者では、割合の高い点に注目し、重みを調整した後、設定したトレーニングに基づいて弱学習者をトレーニングします。弱い学習者は事前に指定された数Tに到達し、最後にこれらのT弱い学習者は設定された戦略を通じて統合され、最終的な強い学習者を取得します。これにより、次の4つの問題が解決されます。①学習エラー率の計算方法。②弱い学習者の重み係数を求めるには?③サンプル重量の更新方法は?④どの組み合わせ戦略を採用していますか?

GBDTは、決定木学習者に基づく反復アルゴリズムです。GBDTの決定木は、分類ツリーではなく回帰ツリーであることに注意してください。ブーストは「ブースト」を意味します。通常、ブーストアルゴリズムは反復プロセスです。トレーニングは、結果を改善することです。前回。GBDTの中核は、各ツリーが以前のすべてのツリーの結論の合計の残差を学習することです。この残差は、予測値を加算した後に真の値を取得できる累積量です。たとえば、Aの真の年齢は18歳ですが、最初の木の予測年齢は12歳であり、差は6歳、つまり残余は6歳です。次に、2番目のツリーでAの年齢を6歳に設定して学習します.2番目のツリーが実際にAを6歳の葉ノードに分割できる場合、2つのツリーを追加するという結論はAの真の年齢です。 2番目のツリーの結論が5歳の場合、Aにはまだ1歳の残差があり、3番目のツリーのAの年齢は1歳になり、学習を続けます。

参照:詳細な説明

XGBoostワシントン大学のアルゴリズム:①モデルの複雑さを制御するためにGBDTにプルーニングを追加します。②基本分類の選択を増やします。③並列をサポートできます。

# xgb参数
params = {
    'booster':'gbtree',
    'min_child_weight': 100,
    'eta': 0.02,
    'colsample_bytree': 0.7,
    'max_depth': 12,
    'subsample': 0.7,
    'alpha': 1,
    'gamma': 1,
    'silent': 1,
    'objective': 'reg:linear',
    'verbose_eval': True,
    'seed': 12
}

LightGBM:MicrosoftのオープンソースアルゴリズムはXGBoostの改良版です。XGboostの主な欠点は次のとおりです。①各反復で、トレーニングデータ全体を複数回トラバースする必要があります。トレーニングデータ全体をメモリにロードすると、トレーニングデータのサイズが制限されます。メモリにロードしないと、トレーニングデータの読み取りと書き込みを繰り返し行うのに多くの時間がかかります。ソート方法は多くの時間とスペースを消費します。

LightGBMは、ヒストグラムに基づいてスパース機能を最適化し、パラレル通信のオーバーヘッドを削減すると同時に、データセグメンテーションの複雑さを軽減します。

# lgb的参数
params = {
    'task': 'train',
    'boosting_type': 'gbdt',  # 设置提升类型
    'objective': 'regression', # 目标函数
    'metric': {'l2', 'auc'},  # 评估函数
    'num_leaves': 31,   # 叶子节点数
    'learning_rate': 0.05,  # 学习速率
    'feature_fraction': 0.9, # 建树的特征选择比例
    'bagging_fraction': 0.8, # 建树的样本采样比例
    'bagging_freq': 5,  # k 意味着每 k 次迭代执行bagging
    'verbose': 1 # <0 显示致命的, =0 显示错误 (警告), >0 显示信息
}

おすすめ

転載: blog.csdn.net/yezonggang/article/details/112675370