DataRobotで回帰分析：住宅価格予測

#データ
毎度おなじみ住宅価格データです👇
https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data

列をわかりやすいように日本語に訳してあります。

#学習
ターゲットを「**販売価格**」に設定して学習開始⚡️
<img width="1424" alt="スクリーンショット 2020-04-18 13.15.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/b224b201-6d52-b0fb-7df7-6648f204de97.png">

こんな感じでキューにジョブが生成され、どんどんモデルができていきます。
<img width="316" alt="スクリーンショット 2020-04-18 13.23.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/5bf798ec-2d27-1d14-0170-5d53cba70f27.png">

####相関関係
学習中にデータの関係をチェックしてみましょう。
<img width="1433" alt="スクリーンショット 2020-04-18 13.25.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/41a07ab7-d9cc-1310-d824-60007d6a5037.png">
**Feature Association**から列同士の相関関係が確認できます。
相関係数の高い列同士のところが色が濃くなっている、いわゆるヒートマップです。
相関の高い列をピックアップしてくれてるのがいいですね
<img width="429" alt="スクリーンショット 2020-04-18 13.26.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/63bd4d3e-06c3-a358-1b2d-aade387b905c.png">

####学習完了
そうこうしていると、学習が完了しました🎉
<img width="269" alt="スクリーンショット 2020-04-18 13.28.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/b8d115fa-77d8-9a11-b422-916c0b0ada7c.png">
計２８個のモデルが生成されました。
<img width="1438" alt="スクリーンショット 2020-04-18 13.28.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/409625bd-a454-60e8-10ab-253bb0d7e67f.png">
クロスバリデーションによってスコアの高かった順番に並んでいるようです。
１番精度が良かったのはLightGBMモデルのようです。
<img width="725" alt="スクリーンショット 2020-04-18 13.32.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/cfb2cfdf-0a03-cc37-8aa2-cc29d5ae02ec.png">
ブループリントから学習のプロセスが確認可能です。
特にデータの変換等は行われていない？シンプルな処理のようです。

#精度
###Predictions Distribution
予測がどのくらいずれているのかがぱっと見でわかります。
直線の上に予測結果のプロットがぴったり乗ってれば予測が正しくできていることになります。
<img width="1407" alt="スクリーンショット 2020-04-18 13.35.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/fc31eac9-16ab-7c96-b0ac-1b94b5609692.png">

|Residual mean |R2 Score |Standard Deviation|
|---:|---:|---:|
|-3449.5272|0.8877|29571.903|

####Residual meanとは
ヘルプによると検証に利用した１０００件のデータの残差の平均と書いてあります。
ようするにどのくらい販売価格がずれるのか
この場合だと平均3449ドル安く予測しちゃってますよってことですね。

残差のプロットを確認すると、高価格帯の物件を安めに予測している傾向にあることがわかります。

###Residual Distribution
実測値と予測値ごとにみた、残差の分布です。
<img width="730" alt="スクリーンショット 2020-04-18 13.51.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/809e001c-89ab-548e-03eb-a07a3ca121a9.png">
具体的になにをみたらいいかはわかりませんが、予測を大きく外しているところがはっきりわかります。

###Feature Impact
各特徴がどれくらい予測結果に影響しているのかがわかります。
ユーザーのどんな行動がコンバージョンに繋がるのか、などがわかったりするので、マーケティング施策に機械学習を利用するときなどは重宝する機能です。
<img width="1371" alt="スクリーンショット 2020-04-18 14.01.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/8dce0561-5029-38b0-bb39-ff8874b0e00b.png">


###Feature Fit
実測値と予測値の差を各特徴ごとに確認することができます。
<img width="1388" alt="スクリーンショット 2020-04-18 13.55.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/1e8bf6a6-bf4b-4d9b-861f-550cb084a1c2.png">
画像の場合「全体的な素材と仕上げの品質」が９、１０の物件が予測を外しがちな傾向がみられます。
実際にモデルを運用する場合などは、このあたりのデータを重点的にあつめたり、外れ値がないかなどをチェックすることで、精度の改善が見込めます。

#推論
<img width="1357" alt="スクリーンショット 2020-04-18 14.04.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/2883a2a3-e049-7d82-78f5-8d30511c0917.png">
実際に学習させたモデルと推論データを用いて、住宅価格を予測してみます。
選択したモデルの「Prediction」から実行できます。
ファイルをアップロードし、「Compute prediction」から予測を実行
あとは結果をダウンロードするだけです。
<img width="1262" alt="スクリーンショット 2020-04-18 14.12.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/b841e83a-c170-b9a6-b6ab-789ddfe98815.png">

<img width="236" alt="スクリーンショット 2020-04-18 14.13.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/3e5bd143-1dca-de17-1d2c-a69f6216b7aa.png">
このように住宅価格が予測されていることがわかります。

#おわり
このように、DataRobotをつかうと難しい知識がないひとでも、手順さえわかればAIモデルを生成し予測することができます。
あとは学習結果やモデルの詳細の細かい見方をゆっくり順を追って理解していけば、ある程度の目的は達成できるはずです。

きっと機械学習を使いたい人というのは、他になにか本業で忙しいことをやっている人だと思うので、機械学習を覚えることに時間を奪われてしまうようでは本末転倒ですよね。
DataRobotのようなAutoML系ツールはそういった課題のソリューションになるのではないでしょうか