機械学習の勉強中の初学者です。
lightgbmに関する質問です。
lightgbmは初めて使ってみたのですが、これまで使ってみたサポートベクターマシンと比較すると70%そこそこの精度が、80%まで改善し驚いています。
一方で、学習モデルを構築する際、コードの③のlgb.train()では、予測対象のlgb_eval(テストデータ)をvalid_setsの引数に使用しています。
サポートベクターマシンでは、②のようにデータセットは作成せず、コードの①のように分割するだけで良いと認識しています。
コードの②と、③のvalid_setsにはどのような意味があるのでしょうか。
予測対象を学習モデルの構築に使用している違和感を感じているのですが、間違いないでしょうか。
(valid_setsを記載しないで学習することはできませんでした)
*学習モデル構築の時点で、予測データも学習に使用してしまい予測精度が高くなってしまっていることを危惧しています。
ご回答よろしくお願いいたします。
#①訓練データとテストデータに分割する X_train, X_test, y_train, y_test = train_test_split(X, y) #②データセットを生成する lgb_train = lgb.Dataset(X_train, y_train) lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train) # LightGBM のハイパーパラメータ params = {'objective': 'binary','metric': 'auc','verbosity': -1} # ③上記のパラメータでモデルを学習する model = lgb.train(params, lgb_train, **valid_sets=lgb_eval,** verbose_eval=50,num_boost_round=1000, early_stopping_rounds=100)``` #学習モデルでの予測 y_pred = model.predict(X_test, num_iteration=model.best_iteration)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/07 07:24
2021/05/07 07:58