財務リスク管理タスク5のモデル融合

1 はじめに

モデルの融合は、ゲームの後半段階でスコアを獲得するための重要な手段であり、特に複数人のチーム学習ゲームでは、異なるチームメイトのモデルが融合されるため、予期しない結果が得られることがあります。多くの場合、モデル間の差異が大きくなるほど、モデルのパフォーマンスが向上することを前提として、モデル融合の結果は大幅に向上します。

  1. 平均:
    a. 単純平均法
    b. 加重平均法
  2. 投票:
    a. 単純な投票方法
    b. 加重投票方法
  3. 合成:
    a. ソート融合
    b. ログ融合
  4. スタッキング:
    a. 多層モデルを構築し、予測結果を使用して予測を再適合します。5. ブレンド:
    a. 予測トレーニング用のデータの一部を選択して予測結果を新しい特徴として取得し、それらを予測用の残りのデータに組み込みます。ブレンドにはレイヤーが 1 つだけありますが、スタッキングには複数のレイヤーがあります
  5. ブースティング/バギング (タスク 4 ですでに言及されているため、詳細は説明しません)

2 スタッキング/ブレンディングの詳しい説明

  1. スタッキングでは
    、複数の基本学習器によって取得された予測結果が使用され、その予測結果が学習器をトレーニングするための新しいトレーニング セットとして使用されます。以下の図に示すように、基本学習器が 5 つあると想定されており、データは 5 つの基本学習器に取り込まれて予測結果が得られ、その後、トレーニングとテストのために 6 つのモデルにデータが取り込まれます。ただし、5 つの基本学習器で得られた結果が直接モデル 6 に取り込まれるため、過学習が起こりやすくなります。したがって、予測に 5 とモデルを使用する場合は、過学習を防ぐために K 分割検証の使用を検討できます。
    ここに画像の説明を挿入
  2. ブレンディングは
    スタッキングとは異なり、新しい特徴としての予測値を元の特徴と組み合わせて、予測用の新しい特徴値を形成します。過学習を防ぐために、データを d1 と d2 の 2 つの部分に分割し、d1 のデータをトレーニング セットとして使用し、d2 のデータをテスト セットとして使用します。予測されたデータは新しい特徴として使用され、d2 のデータは新しい特徴を組み合わせてテスト セットの結果を予測するためのトレーニング セットとして使用されます。
    ここに画像の説明を挿入
  3. ブレンディングとスタッキングの違い
    a.
    スタッキング スタッキングでは、2 つのレイヤーで使用するデータが異なるため、情報漏洩の問題を回避できます。チーム競技中、ランダムなシードをチームメイトと共有する必要はありません。
    b. ブレンド
    ブレンドはスタッキングよりも簡単で、多層モデルを構築する必要はありません。ブレンディング ペアはデータを 2 つの部分に分割するため、最終的な予測では一部のデータ情報が無視されます。同時に、データの 2 番目の層を使用する場合、データの 2 番目の層が少ないため、過剰適合が発生する可能性があります。

3 コード例

平均3.1

  1. 単純な加重平均。結果は直接結合され、
    複数の予測結果の平均が求められます。pre1-pren は n グループのモデルによって予測された結果であり、それらは重み付けされて融合されます
pre = (pre1 + pre2 + pre3 +...+pren )/n
  1. 加重平均法は
    一般に、以前の予測モデルの精度に基づいて加重融合を実行し、精度の高いモデルに高い重みを割り当てます。
pre = 0.3pre1 + 0.3pre2 + 0.4pre3

3.2 投票

  1. 単純な投票
from xgboost import XGBClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier, VotingClassifier
clf1 = LogisticRegression(random_state=1)
clf2 = RandomForestClassifier(random_state=1)
clf3 = XGBClassifier(learning_rate=0.1, n_estimators=150,max_depth=4,min_child_weight=2,subsample=0.7,objective='binary:logistic')
vclf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('xgb',clf3)])
vclf = vclf .fit(x_train,y_train)
print(vclf .predict(x_test))
  1. 加重投票
from xgboost import XGBClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier, VotingClassifier
clf1 = LogisticRegression(random_state=1)
clf2 = RandomForestClassifier(random_state=1)
clf3 = XGBClassifier(learning_rate=0.1, n_estimators=150, max_depth=4, min_child_weight=2,subsample=0.7,objective='binary:logistic')
vclf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('xgb', clf3)],voting='soft', weights=[2, 1, 1])
vclf = vclf .fit(x_train,y_train)
print(vclf .predict(x_test))

3.3 スタッキング

3.4 ブレンディング

おすすめ

転載: blog.csdn.net/BigCabbageFy/article/details/108832912