xgboostでクラスの重みづけはどうやるの?

XGBoostでは、クラスの不均衡を考慮するために、scale_pos_weightパラメーターを使用してクラスの重みづけを行います。このパラメーターは、正例(1)と負例(0)のサンプルの比率に基づいて計算された重みを指定します。

具体的には、scale_pos_weightは負例の数に対する正例の数の比率の逆数です。つまり、正例の数が負例の数よりも少ない場合、その逆数をscale_pos_weightとして指定します。

例えば、正例の数が負例の数の半分である場合、scale_pos_weightは2となります。

以下は、XGBoostでscale_pos_weightを設定する例です:

python
import xgboost as xgb # クラスの不均衡を考慮してクラスの重みづけを設定 # 正例の数が負例の数の半分である場合 positive_samples = (y_train == 1).sum() negative_samples = (y_train == 0).sum() scale_pos_weight = negative_samples / positive_samples # XGBoostモデルの作成とトレーニング xgb_model = xgb.XGBClassifier(scale_pos_weight=scale_pos_weight, n_estimators=1000, random_state=100) xgb_model.fit(X_train, y_train_encoded)

上記の例では、scale_pos_weightを負例の数に対する正例の数の比率の逆数として計算し、XGBoostモデルのscale_pos_weightパラメーターとして設定しています。

未分類

Posted by ぼっち