あるケミストの独り言(winchemwinの日記)

ケミスト(化学者)の視点で、面白そうな情報(シミュレーション関係など)を発信

機械学習による(中古)不動産価格の予測 その10 Catboost でのモデル作成

 前回までの記事でlightGBMを用いた予測モデル作成について紹介してきました。今回は別の勾配Boosting手法として「Catboost」で予測モデル作成を検討した事例について紹介します。「Catboost」は2017年に登場したアンサンブル学習法でYandex社から発表されたもののようです。データセットの種類によってはXgboostやLightGBMよりも良い結果を出しているようなので、これまでのデータについてCatboostでも検討してみることにしました。

 

コード1 ライブラリー等のインポート

 まずはいつものようにライブラリーのインポートです。catboost  は予めpip install catboostで読み込んでおく必要があるかと思います。

 

コード2  データの前処理

説明変数、目的変数の設定は以前のものと同様(カテゴリー変数はダミー変数とはしていません)ですが、Catboostの場合はデータをpoolという型として扱うようなので、その設定を行っています。

コード3 ハイパーパラメーターの設定等

 今回もハイパーパラメーターの最適化にoptunaを使うので最適化のための関数(パラメータ設定等)を定義しています。またモデル作成としてCatBoostRegressorを呼び出し、回帰モデル作成の実施の設定も行っています。

 

コード4 評価値の算出等

 

コード5 optunaによるハイパーパラメーターの最適化、学習

評価値の算出、optunaの設定は以前の検討と同様です。Catboostでの変更点としてはデータをpool型として扱うことと、ハイパーパラメータの設定値が異なるといったところでしょうか。

 

作成したモデルの結果

 最適化後のモデルの評価値、ハイパーパラメータの値は上記ですが、R2は0.6724で残念ながら以前のLightGBMの結果を上回ることはできませんでした。今回は良い結果は得られませんでしたが、アンサンブル系機械学習の一手法として検討してみる価値はあるように思います。

 今回はCatboostでの検討事例について紹介させていただきました。

 10回にわたり紹介してきた不動産価格の予測ですが、今回で一区切りとしたいと思います。