いわゆる「組み合わせ」(Ensemble)



決定ツリーのオーバーフィット問題を解決するために、「組合せ」(Ensemble)アルゴリズムを紹介し、そのタイプを理解します.

組合せ(Ensemble)


合奏とは統一的で調和のとれたフランス語を指す.主に音楽における各種楽器の協奏に用いられる.多くの小さな楽器の音が組み合わせられて、より壮麗な音が生まれます.もちろんだめですが、小さな間違いも別の音に隠されます.
機械学習における協力もそうである.複数の弱い学習者が集まり、投票を通じてより強い強い学習者を形成する.多くのモデルがあるため,1つのモデルの予測にずれが生じてもある程度の修正が得られる.すなわち,より一般化された(一般化された)モデルを完成させる.
単一モードでは、Decision Tree、SVM、Deepラーニングなどの任意のタイプのラーニングモードを使用できます.

Vootingのタイプ


最終モデルの予測値を決めるBootingは,おおむね硬投票と軟投票に分けられる.

ハード投票


ハード賭けは,各弱学習者の予測結果値に基づいて多数投票を行う方式である.

赤球か青球かを予測する二元分類問題では,同じデータに対して各分類器は異なるカテゴリの予測確率を与える.この確率値から最終予測値を算出し,その予測値の多数投票により予測値を決定することをハードサポートする.
従って,5つの分類器のうち,赤球で予測した分類器は3つあり,この試料に対する最終予測値は赤球であった.

ソフト投票


逆に,ソフトステップは弱い学習者の予測確率値の平均または重み付けを用いる.
平均
  • (平均)

  • 弱い学習者個人の予測値は重要ではない.予測確率値が単純平均内でより高い確率を決定するクラスが最終予測値である.
    同じ例では、赤球で予測される3つの分類器(1,2,4)の分類予測確率は大きく異なる.逆に,ブルーボールで予測した2つの分類器(3,5)は,高い確率でブルーボールを予測した.その結果、最終予測値はブルーボールとなります.
  • 重み付けおよび

  • ある理由(単一モデルで用いられるfeature engineering法など)で弱い学習者に対する信頼度が異なる場合、確率値の平均値ではなく重み付けによって重み付けを用いることができる.
    同じ例では、各分類器の予測確率値に異なる重みを付与し、最終的な予測値が赤球であることを決定することができる.
    重み付けは任意に値を付与してもよいし、後述するスタック技術を使用してもよい.

    組み合わせの種類



    学習方式によっては,組合せアルゴリズムはタグ,起動,スタックに大きく分けることができる.このプレゼンテーションでは、コンセプトを簡単に整理し、後でプレゼンテーションで例をさらに整理します.

    マーク


    ジョギングはBootstrap重合の略です.名前の通りBootstrapを使用します.

    ガイドバーは、指定されたデータセットからランダムにサンプリングして、新しいデータセットを生成することを意味します.ガイドバーによって生成された複数のデータセットに基づいて,弱い学習者を訓練し,結果を投票する.
    代表的な例はRandom Forestである.
  • ランダムツリー
  • Boosting


    Boostingはモデルの更新を繰り返します.このとき、前回の反復の結果に基づいてデータセットサンプルを重み付けする.その結果,繰り返しごとに,各サンプルの重要度に応じて異なる分類器が作成される.最後に,すべての反復生成モデルの結果を投票する.
    次はBoostingプロセスに関する大まかな画像です.

    反復1では、赤丸は誤って分類されたサンプルである.このサンプルの重みを増やし、分類器を再作成します.
    iteration 2では、iteration 1の分類器と新しい分類器を用いて分類する.その結果、青色の長方形が誤って分類された.このサンプルの重みを増やし、分類器を再作成します.
    同じように繰り返した後、作成したすべての分類器を結合して最終モデルを形成します.
    Boostingはまた、適応BoostingとGradient Boosting Modelシリーズに分けられる.

  • AdaBoost

  • Gradient Boosting
  • 最近精度と速度を改良したBoostingアルゴリズムはKglobleなどのデータ解析大会で多く用いられている.

  • XGBoost

  • LightGBM

  • CatBoost

  • NGBoost
  • スタッキング

    개인적으로 스태킹은 이 곳 보다는 보팅의 종류에 언급하는게 더 어울리는 것 같지만, 대부분 배깅, 부스팅과 함께 비교하기에 넣었다.
    スタックとは,弱い学習者の予測結果に基づいてmeta学習者として学習を行い,最終的な予測値を決定することである.meta learnerも学習する必要があり,このとき用いられるデータは弱い学習者が訓練データに対して確率値を予測する集合である.適切な防止のために,主にk−foldクロス検証を用いた.
    絵で説明するのは少しあいまいだ.次の画像はスタックをより表示できます.

    ソース
    https://tyami.github.io/machine%20learning/ensemble-1-basics/