前回の記事で中古不動産価格の予測モデル作成について、scikit-learnでの回帰モデル作成について、紹介しました。あまり良い結果はえられなかったのですが、今回はAbaboost法でのハイパーパラメータの最適化について紹介したいと思います。
ハイパーパラメータの最適化手法については、これまでの記事でも紹介ましたが、条件をランダムに発生させ最適化を行うランダムサーチ、網羅的に条件を発生させ最適化を行うグリッドサーチ、さらには自動最適化のフレームワークを利用した方法などがありますが、今回はOptuna™を利用した最適化について紹介したいと思います。
今回もまずはライブラリーインポートですが、これまでに利用してきたライブラリー以外に特に回帰モデル作成用にAbaboostRegressor、ハイパーパラメーター最適化用にOptuna™をインポートしています。
続いてこれまでも行ってきたように、不動産情報の読み取りと前処理として築年数の算出のための処理及び回帰モデル作成用の目的変数などの設定を行っています。
次は回帰モデル作成の設定で、データの分割と標準化処理を行っています。
次にOptuna™で行う探索条件の設定をobjective という関数として設定しています。まず変化させるパラメーター、回帰モデルの設定を行っています。コードの下部は得られた結果の評価値の算出で、トライアル回数ごとの評価値の保存を行っています。最後にOptuna™で最適化する目標値を関数の返り値として設定しています。
最終的にOptuna™で最適化の設定ですが、R2値を関数の返り値として設定していますので、その値を最大値とするよう最適化するよう設定するとともに、先に作成したobjective の関数に従って100回のトライアルを行う形としています。
結果はベストスコアとパラメーターを表示させるとともに、途中経過の確認のため逐次保存されている評価値のデータフレームの表示も行っています。
最適化が開始されると以下のような表示が始まります。
以下は最終的な最適化結果です。100回のトライアルの結果。R2値は0.2997でした。正直あまり良い値ではありませんが、前回のscikit-learnでの網羅的な検討での結果ではR2は0.0189程度でしたので、ある程度最適化がうまく行われていることがわかるかと思います。
以上、今回は選択した回帰手法(Ababoost法)でのハイパーパラメータの最適化の事例について紹介させていただきました。
ただ、評価値としてあまり良い結果は得られていませんので、次回はpycaretで探索した結果最も有望であったlightGBMでの検討結果について紹介したいと思います。