dataiku Academy Tutorial:Scoringをやってみた


# はじめに
この記事はDataiku DSS ver6で作成したものです。
ver7に対応した記事が以下となります。ver7対応記事には、explanations等の説明が含まれています。
[[ver7.0版]dataiku Academy Tutorial:Scoringをやってみた](https://qiita.com/ayoyo/items/fb89ac032011a6900941)

Dataiku DSSチュートリアルの[Scoring](https://academy.dataiku.com/latest/tutorial/scoring/index.html)をやってみました。
前回からの続き色濃厚なため、他記事も読んでからこちらを読むことを推奨します。
（そもそも、前回をやってないとこの記事の内容は実施できない。）

[Dataiku DSSをVirtual Boxを使って利用する方法](https://qiita.com/goya1021/items/0b244ffec4a971b0f736)
Tutorial: Basics([投稿記事](https://qiita.com/hosoya_int/items/dee44549acb2ee469eb6)、[元記事](https://academy.dataiku.com/latest/tutorial/basics/index.html))
Tutorial: From Lab to Flow( [投稿記事](https://qiita.com/komugiko/items/fb547a83eb73f243441c)、[元記事](https://academy.dataiku.com/latest/tutorial/lab/index.html) )
Tutorial: Machine Learning([投稿記事](https://qiita.com/ningendamono/items/45be9fc319c3b0d31f39)、[元記事](https://academy.dataiku.com/latest/tutorial/machine-learning/index.html))
Tutorial: Scoring(今回はここです、[元記事](https://academy.dataiku.com/latest/tutorial/scoring/index.html))


ちなみに今回使ったDataiku DSSのメジャーバージョンは6です


# 概要
Tutorial:Scoring
https://academy.dataiku.com/latest/tutorial/scoring/index.html

テーマは変わらず「高収益顧客の分析」です。
今までは、高収益顧客かどうかわかっている、既存の顧客に対して、予測モデルを作成し、精度について論じていました。
今回は、高収益顧客かどうかわからない、新規顧客について高収益顧客かどうかの予測を行っていきたいと思います。

-----
# 使用プロジェクトについて
前回のTutorial:Machine Learning projectの続きからはじまります。
前回の記事を実施していない方は、実施してからこちらをご参照ください。

フローは以下のようになっているはずです。
![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/914e7133-f5c3-655e-f0fd-51eace4e1dfa.png)

-----

# 
最初に、前回のモデル画面のフローへ。
まず、customers_labeledデータセットをクリックしてLABボタンをクリックしてください。
![image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/f019cb9f-197c-7acc-47c7-86e75682de09.png)


Visual analysisの下に、High revenue analysisという名前で先ほど作成したモデルがありますのでこちらをクリック。
![image3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/b488d2f9-4699-1a7b-fd3a-1b87960103c5.png)

さらにModelタブをクリック。
![image4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/74aae23e-6db1-125c-27f3-7983277d02a3.png)

前回いろいろ試したモデル画面に到達できていると思います。
ちなみに、一番良い結果が、Random Forestとなっているはずです。このモデルを使って、新規顧客に対しての予測を行っていきます。

Random Forestの結果をクリックして、モデルのSummary画面に移ります。
![image5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/4b09986d-cf2c-dcf7-2d21-88c3c605ee5f.png)



-----
#:writing_hand_tone2:メモ　 モデル名や詳細は編集可能
モデル名やモデルの詳細を編集することが可能であるため、最も良いモデルの名前やdescriptionを編集しておき、あとからわかるようにしておくことができます。

編集のためには、モデルのSummary画面のモデル名横の薄いペンマークをクリック。
![image6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/b733db2e-7d3c-70e9-6329-60114f63b23b.png)


すると、編集画面に移ります。モデル名やモデルの詳細(description)を好きに変更し、SAVEボタンで変更反映できます。
![image7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/2062c11e-8d63-6eb2-5303-68476aea4297.png)
----
#モデルのデプロイ
モデルをデプロイすることにより、フローに組み込んで予測に使えるようになります。

まず、モデルのSummary画面右上、DEPLOYボタンをクリックします。
![image8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/1aa6fa1e-0ce6-af54-e076-2628a7a4fcda.png)


ポップアップが出てきます。ここでCREATEボタンを押すことにより、フローに新しいTrainレシピを追加することができます。
Model nameはこのままでも問題ありませんが、わかりやすくRandom Forestに変更します。たくさんモデルをデプロイして試す場合は、別の名前にした方が良いかもしれません。今回は、これしかデプロイしませんので安直なネーミングです。
Model name変更後にCREATEボタンをクリックしてください。CREATEボタンクリックにより、自動的にフロー画面に遷移します。
![image9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/53cb49a7-00fb-d17c-15a9-d7ee0e7a66ea.png)


フロー画面では、右端に二つの緑の四角が追加されています。
左側が今回デプロイしたTrainレシピで、右側がTrainレシピにより作成されたモデルになります。
![image10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/edb995bd-bf0c-f041-5519-0a6ec04ecc32.png)


右側の緑四角、Random Forestモデルをクリックすると、右側のパネルが、Random Forest用のレシピに切り替わります。Random Forestモデルをクリックして選択した状態で、Openアイコンをクリックしてください。
![image11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/703c3606-c338-e988-1585-339ae6a252f1.png)


さきほどデプロイしたRandom Forestの精度が記載されたページが表示されます。ここでは詳細は述べませんが、このページからモデルの精度改善（Retrain）を行うことができます。作成したモデルのバージョン管理のようなことも可能です。
![image12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/6d4fc9cc-0835-30ef-655c-cbd0e2a3e243.png)

次はいよいよ、予測スコアの計算です。
Flowをクリックし、フロー画面に戻りましょう。
![image13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/64dfd439-a63f-8880-0b1b-76fe72a8e978.png)


------
# 予測スコアの計算
ここまででモデル側の準備が終わりました。
最後にデプロイしたモデルを使って、新規顧客データに対しての予測スコア算出を行っていきます。

先ほどと同様に、Random Forest(緑の四角)をクリックした状態で、右側パネルのScoreアイコンをクリックします。
![image14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/a9f198ca-339c-a73a-deb0-222b185ac3d0.png)

Score a datasetというポップアップウィンドウが開かれますので、以下のように設定してください。

 - 左側のInput datasetに予測対象のデータセット(customers_unlabeled_prepared)を設定。これを設定すると、右側のOutput datasetが設定できるようになります。
 - Prediction Modelに用いたいモデル（Random Forest)を設定。これはすでにRandom Forestが設定済みだと思います。
 - output datasetの名前をNameに設定。任意のデータセット名（ただし、既出のデータセットとかぶらないもの）を記入します。ここでは、customers_unlabeled_scoredとしました。
 - 結果の保存先をStore intoで選択。既に選択済みの、filesystem managedを用います。
 - 結果の出力フォーマットをFormatで選択。すでに選択済みのCSVを用います。

上記設定後、CREATE RECIPEボタンをクリックします。
![image16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/bc99a582-70bf-1ab0-b77d-1cb5a1f5da60.png)

RUNボタンを押すことで、予測スコア計算が行われます。
![image18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/d133ff92-aea1-24f5-8cda-6a7de9cdc040.png)

数秒後に画面下側に、Job Succeededと出れば成功です。
![image19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/23b05187-2cf8-b221-75b9-0e97b408747a.png)

-----
#予測結果の確認
フロー画面に戻ってみましょう。
新しく、customer_unlabeled_scoredが追加されています。
クリックすることにより、予測結果を確認することができます。
![image20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/21ba308d-b55e-c94b-94de-9d2f7f66935a.png)


表示されたデータの一番右の３列に予測結果が記載されています。
![image21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/87bdb2c1-e2ce-2ddf-ca47-d0e6cccabe84.png)

右の3列はそれぞれ以下の情報が記載されています。
- proba_False : 高収益顧客でない確率
- proba_True  : 高収益顧客である確率
- prediction  : 予測結果

今回のモデルでは、予測対象の各顧客に対して、高収益顧客であるかどうかを0～1の確率で算出します。これが、proba_Trueに記載されます。この値が高いほど、高収益顧客である可能性が高いと解釈することができます。
一方、proba_Falseはproba_Trueとは逆で、この値が高いほど高収益顧客である可能性が低いと解釈することができます。
これらの値は確率ですので、proba_Falseとproba_Trueを合計すると1になります(多少の計算誤差は含む)。

predictionは、高収益顧客であるかどうかの予測結果です。予測対象の各顧客に対して、True(高収益顧客である)か、False(高収益顧客でない)かが記載されます。モデル作成時に設定された閾値を元に、TrueかFalseかのラベルがつきます。今回は、モデル作成時の閾値が0.525でしたので、0.525を超えればTrue（高収益顧客）となります。

# おわりに
今回は、Dataiku DSS上で作成したモデルをどのように新規データに適用するかについて紹介しました。全5回でお送りした、Dataiku DSSの基本的なチュートリアルは、一通り終了となります。

メリークリスマス！:tada: