SageMaker CanvasとRandomForestとCatBoostで性能を簡易に比較してみた。
はじめに
SageMaker Canvasは、SageMakerのAutoMLのようなもので、構造化データを突っ込んで、モデル作成!って押すとモデルが作成される。 今回はその性能を自分の目で確かめてみようと思う。 ちなみにタイトルに性能比較とかたいそうなことが書いてあるけど、ちょっと試してみただけです。 詳細な条件とか、実験計画とかはなしに、気楽な実験です。
DataSet
Allstate Claims Severityデータセットを利用。 Allstate Claims Severity | Kaggle
保険の請求額を推測するモデルを構築すれば良い。簡単に言えば、回帰問題。 カテゴリ変数が多いのでそれをどう扱うかが見せ所なのかも?
モデル作成
SageMaker Canvas
Training
難しいことはひとつもなくて、S3に置いてあるデータを選んで、モデル作成!って押すだけ。 モデル作成中はこんな画面が出てくる。
学習が終わると、こういう画面が出る。 学習データでのRMSEが1868.745。
Inference
testデータにも推論をかけて、kaggleに投稿をしてみる。 testデータに推論をかけるには、あらかじめtestデータをS3などに置き、Canvas上にimportしておく。 Canvasのpredict画面から、データを選ぶだけで、Batch Inferenceが可能である。 推論が終わると下記のような画面が表示され、結果をダウンロードできる。
Evaluation
結果をkaggleに投稿してみる。
Private Score: 1175.67319 Public Score: 1166.37955
ランキングに照らし合わせてみると、だいたい2000位くらい。 フルオートにしてはまぁそこそこうまくいってるような、それなりなような。
RandomForest
手元で簡単なモデルでも学習。 ごく普通にScikit-learnのRandom Forest Regressorで学習、推論。 kaggleに投稿した結果は下記の通り。
Private Score: 1230.21947 Public Score: 1221.70745
さすがにCanvasよりは悪い。ランキングに照らし合わせると、2300位くらい。 どうだろうか・・なんともいえない?
CatBoost
カテゴリ変数がたくさんあるので、CatBoostが強いのではないかと考えてみる。 あまり深く考えず、ごく普通のコードでCatBoostを学習。Canvasに結構肉薄する。
Private Score: 1183.38271 Public Score: 1175.69527
Kaggleのスクショ
ここまでのまとめ画像。
今回の気づき
とりあえずフルオートで作れるし、簡単に試した中では最も性能がよかったので、Canvas結構いいんじゃないかと。 全くコードを書かずにそれなりに性能が出ている。
ただしリーダーボードの上位ほど出るわけでもないし、CatBoostはCrossValidationすらしていないので、自身でコードを書けるならもっと改善できそう。 逆にCanvasを改善する方法は今のところデータを増やすくらいしかないと思っているので、コードを書けるなら無理して使わなくてもいいかもしれない。
ただ、初期検討でとりあえずこのデータでも性能出そう、とかそういう占いには結構便利かも。 なんたって数クリックでモデルが作れるわけだし。
今回はカテゴリ変数が多い問題だったけど他の問題とかも少し試してみたくなる。 とりあえず今回はここまで。