カニゲーム攻略日記ブログ

beatmaniaIIDXやハースストーンなどのゲーム攻略日記。主にまったり勢。2016年にIIDX皆伝になった

kaggle expert を目指す 4 カニ

www.kaggle.com

前回に引き続き、カニの年齢当てるやつ

LinearRegressionと
RandomForestClassifierを 使ってみた

RandomForestClassifierの方が良い結果になると思っていたが違った

基礎をやんないと分からんね

Contents

Regression with a Crab Age Dataset

LinearRegression

from sklearn.linear_model import LinearRegression

model_lr = LinearRegression()
model_lr.fit(X_train, Y_train)
predictions_lr_test = model_lr.predict(X_test)
submission = pd.DataFrame({'id': test_data.id, 'Age': predictions_lr_test})
submission.to_csv('submission.csv', index=False)

結果

1.6

RandomForestClassifier

from sklearn.ensemble import RandomForestRegressor

model_rfr = RandomForestRegressor(n_estimators=100, random_state=0)
model_rfr.fit(X_train, Y_train)
predictions_rfr = model_rfr.predict(X_test)
submission = pd.DataFrame({'id': test_data.id, 'Age': predictions_rfr})
submission.to_csv('submission.csv', index=False)

結果

1.7

LinearRegressionとRandomForestClassifierを比較

"カニの年齢を当てるゲーム"は、特定の特徴からカニの年齢を予測する回帰問題です。予測する対象(ターゲット)は連続的な値(年齢)であるため、基本的には回帰モデルを用いるのが適切です。

ここで、LinearRegressionとRandomForestClassifierを比較した場合、それぞれ異なるタイプのモデルであることを理解することが重要です。

  • LinearRegressionは、回帰問題に対するモデルで、入力特徴から連続的な出力値(この場合は年齢)を予測します。

  • RandomForestClassifierは、分類問題に対するモデルで、入力特徴から離散的なクラスラベルを予測します。

したがって、連続的な出力を予測するこのタスクでは、LinearRegressionの方が自然に適合します。一方、RandomForestClassifierを使って年齢を予測する場合、年齢を離散的なクラスに変換する必要があります(例えば、1歳、2歳、3歳...などとして)。しかし、これには情報の損失が伴います。

このため、連続的な値を予測するタスクにおいては、通常、回帰モデルの方が分類モデルよりも優れた結果を出す傾向があります。とはいえ、実際の結果はデータや問題設定によります。

また、RandomForestRegressorという、回帰問題に対するランダムフォレストモデルも存在します。このモデルは、連続的な値の予測にも使うことができ、結果によってはLinearRegressionよりも良いパフォーマンスを示すことがあります。