kaggleの雑記

LightGBMで2値分類、多分類、回帰問題の設定

LightGBMの2値分類、多分類、回帰問題の設定

params = {'objective': 'multiclass','num_class': 10}

ligthgbmではobjectiveで設定しています。上の様に記載すると多分類(10クラスに分類)

params = { 'objective': 'binary'}

上記で2値分類

params = {'objective': 'regression'}

上記で回帰問題です。

回帰問題を一度多分類に対する学習方法で間違って解いていた時があり、その時は精度がかなり下がりました。(当然ですが)その時の記録は別記事にまとめております。

給与推定コンペとkaggleで勝つデータ分析の技術で急成長した話ある日ぼんやりとtwitterを眺めていたら、kagglerのwakameさんのtweetを見つけました。全てはここから始まりました。 ...

LightGBMのシンプルなコード例

以下が私の利用するLightGBMのコードの学習コードの最小単位です。(paramsはその時々で変動します。)

X_train, X_valid, y_train, y_valid = train_test_split(X_values, y_values, test_size=0.2, random_state=42)
lgb_train = lgb.Dataset(X_train, y_train)
lgb_valid = lgb.Dataset(X_valid, y_valid)

# from optuna
params = {'task': 'train',
        'boosting_type': 'gbdt',
        'objective': 'regression',  # 回帰問題を設定
        'metric': {'l2'},
        "verbosity":-1,
        "seed":42,
        "lambda_l1": 0.005377771102020509,
        "lambda_l2": 1.5170997782518248e-07,
        "num_leaves": 248,
        "feature_fraction": 0.9041910449742032,
        "bagging_fraction": 0.9990511399767047,
        "bagging_freq": 3,
        "min_child_samples": 5,}


num_round = 10000

categorical_features = cat_features
model = lgb.train(params, lgb_train, num_boost_round=num_round,
                  categorical_feature=categorical_features,
                  valid_names=["train", "valid"], valid_sets=[lgb_train, lgb_valid]
                  ,early_stopping_rounds=10)

va_pred = model.predict(X_valid)
print(va_pred)
score = mean_squared_error(y_valid.values, va_pred)
print(f"{score:.4f}")
ABOUT ME
hirayuki
今年で社会人3年目になります。 日々体当たりで仕事を覚えています。 テーマはIT・教育です。 少しでも技術に親しんでもらえるよう、noteで4コマ漫画も書いています。 https://note.mu/hirayuki