機械学習¶
お帰りなさい!
あなたはチュートリアルの 基本 と ラボからフローへ でデータの操作方法を学習したので、顧客価値を予測するモデルの構築準備ができています。
では始めましょう!¶
このチュートリアルでは、顧客レコードと注文ログの履歴をHaiku T シャツから分析して初めての機械学習モデルを作成します。
このチュートリアルは2部にわかれています。
まずあなたの初めてのモデルを作成・改良します。
次に実際の活用のように この予測モデルをデプロイして新しいレコードを評価 します。
このチュートリアルの目的は、新規購入時に収集した情報に基づいた新規顧客が高価値顧客になるかどうかの予測です。
前提条件¶
このチュートリアルは、あなたがすでに チュートリアル: ラボからフローへ を完了していることを想定しています。
あなたのプロジェクトを作成¶
機械学習チュートリアルプロジェクトの zip エクスポート をあなたのローカルファイルシステムにダウンロードします。 それから Dataiku ホームページから +New Project をクリックしリストから Import Project を選択します。次にダウンロードした zip ファイルを選択してください。
Go to Flow をクリックします。 フローでは、前のチュートリアルで 顧客および注文データセットの作成・準備・結合に使ったステップを見ることができます。
さらに私たちが予測したい新規顧客を表す “unlabeled” 顧客データセットもあります。 これらの顧客は注文ログに結合され、履歴顧客データとほぼ同じ方法で準備されます。
または以下により:doc:`ラボからフローへチュートリアル<../lab/index>`で作業したのと同じプロジェクトで続行できます。
1.*customers_labeled* データセットから total_sum と count 列の削除。 2.`customers_unlabeled.csv ファイルのコピーをダウンロード <https://downloads.dataiku.com/public/website-additional-assets/data/customers_unlabeled.csv>`_ してそれを プロジェクトにアップロード。 3.*customers_labeled* データセットのスキーマに合致させるため customers_unlabeled データセットを準備。customers_unlabeled を orders_by_customer と結合するには、内部結合を必ず使ってください。customers_orders_joined データセットの準備に使ったスクリプトから、レシピ準備ステップをコピー&ペーストすることもできます。
顧客の価値が高くなるかどうかを予測¶
私たちのゴールは、結合された顧客と注文のデータに基づき、顧客が “high revenue” 顧客となるかどうか予測 (例: guess) することです。 これを正確に予測できれば、新規ユーザーのコホートの質を評価し、購入キャンペーンやチャネルをより効果的に推進できるでしょう。
フローで、customers_labeled データセットを選択して Lab ボタンをクリックし、新規 AutoML Prediction の作成を選択します。
ラベル付きデータセットには、デバイス、およびロケーションに関する顧客の個人情報が含まれます。最後の列 high_revenue は購入履歴に基づくと多くの収益を生み出している顧客のフラグです。これはモデリングタスクのターゲット変数として使われます。
それを選択して、high_revenue に予測モデルを作成し、解析によりわかりやすい名前 High revenue analysis
を付けます。 Create をクリックします。
モデリングタスクが作成され、ビジュアル解析の Models タブが表示されます。 モデリングタスクの Design タブで、high_revenue は2つの異なる値を持つため、これが2クラス分類の問題であると DSS が自動的に判断したことがわかります。
Note
Different kinds of modeling tasks
Prediction モデルとは、教師あり学習アルゴリズムです。たとえば過去の例で実際の値 (ターゲット列) がわかっているものでトレーニングします。ターゲット変数の性質によって、予測タスクの種類が決まります。
Regression は、実数値 (例: 期間、量、消費額…) の予測に使われます。
Two-class classification は真偽値 (すなわち、有/無、はい/いいえ…)の予測に使われます。
Multiclass classification は、有限の値の集合 (赤/青/緑、小/中/大…) を持つ変数の予測に使われます。
Clustering モデルは “unlabeled” データから隠れ構造を記述する関数を推測します。これらの教師なし学習アルゴリズムは、features が与えられた類似の行をグループ化します。
Dataiku DSS により、あなたは機械学習アルゴリズムを完全に制御できるようになります。これは私たちの初モデルなので、単純に Train をクリックしてみましょう。
Dataiku は機械学習アルゴリズム適用前に、データセットの機能の適用に最適な前処理を推測します。
数秒後、Dataiku はこのモデリングセッションの結果概要を表示します。 デフォルトでは、2 つのクラスのアルゴリズムがデータに使われます。
単純な一般化された線形モデル (ロジスティック回帰)
より複雑なアンサンブルモデル (ランダムフォレスト)
モデル概要には、重要な情報が次のように含まれます。
モデルのタイプ
業績評価。ここでは Area Under the ROC Curve またはAUCが表示されます。
ターゲットを予測する上で最も重要な変数概要
AUC 測定は重宝します。1に近いほど良いモデルとなります。ここでは Random forest モデルが一番正確なようです。それをクリックすると、この特定のモデルのメイン結果ページが表示されます。
Summary タブは AUC 値を 0.767 と示しました。このタイプの活用にはかなり適しています。行をトレーニングとテストサンプルにランダムに割り当てる方法の違いにより、実際の数値が異なる場合があります。
モデル結果をよりよく理解するために、Dataiku DSS は左側のパネルに複数のさまざまな出力を表示します。これらの出力は以下のようにグループ化されます。
Interpretation。モデルの動作と特徴の効果を評価
Performance。性能測定基準を使ったモデル評価
Model Information。モデルに関する詳細情報を提供
モデルおよび特徴解釈¶
左側のパネルのリストで下に進むと Interpretation という最初のセクションがあります。このセクションでは、モデルの動作とモデル結果に対する特徴の影響を評価する情報を提供します。
このセクションの一部のパネルはアルゴリズム依存です。たとえば線形モデルでは、モデルの係数に関する情報が表示されます。一方ツリーベースのモデルでは、決定ツリーと変数の重要度に関する情報が表示されます。
解釈セクションは、部分母集団分析 (Subpopulation analysis) を実行して列レベル (Individual explanations) で 個々の予測説明 を提供する partial dependence プロット (Partial dependence) を作成するパネルも含みます。このセクションに記載されている全情報は、あなたのモデルの理解を深めるのに非常に役立ちます。
まず Variables importance パネルを見てランダムフォレストモデルを理解しましょう。
一部の変数が価値の高い顧客であることと強い関係があるように見える点に注目します。特に、最初に購入 age_first_order したときの年齢が良い指標のようです。
部分従属¶
次に、部分従属プロットを使って、ターゲット (high_revenue) についての特徴 (age_first_order) の影響を理解しましょう。
左側のパネルで Partial dependence をクリックすると、出力の部分従属ページが開きます。
変数として age_first_order を指定します。
Compute をクリックします。
部分従属プロットは age_first_order 特性について high_revenue の従属性を示し、テストセット (2177行) に対して計算されます。 負の部分従属値は、特徴値の予測応答の負の従属性を表します。一方正の部分従属値は、特徴値の予測応答の正の従属性を表します。
例えば、部分従属プロットは、”True” である high_revenue が 42 歳未満の年齢の age_first_order と負の関係性を持つことを示します。この関係性は 50 歳から 67 歳の間で徐々に増えますが、その後 74 歳まで減少します。
プロットは age_first_order 特徴分布も表示します。分布から、特徴とターゲット間の関係の解釈に十分なデータがあることがわかります。
カテゴリ的な特徴である gender の部分従属プロットを見てみましょう。
変数として gender を選択します。
Compute をクリックします。
部分従属プロットは “True” である high_revenue が “F” である gender と負の関係性を持つことを示します。gender が “M” または値なしの場合、正の関係性となります。gender 分布は男女間でほぼ等しく、データの約90%を占めています。
部分母集団分析¶
モデルをよりよく理解するためのもう1つの有用なツールは、部分母集団分析です。このツールを使うと、モデルが部分母集団間で同様に動作するかどうか、またはモデルが特定のグループにバイアスを示すかどうかを評価できます。
異なる性別グループ間でこのモデルがどのように動作するか理解するため、部分母集団分析を使いましょう。
左側のパネルで Subpopulation analysis をクリックすると、出力の分析ページが開きます。
変数として gender を指定します。
Compute をクリックします。
表はテストセットで計算された gender の部分母集団分析を表示します。モデルは high_revenue の真 (true) の確率を 18% と予測しましたが、実際の真は 9% のみでした。
“F” のサブグループでは、このモデルは*high_revenue* の確率を 17% と予測しましたが、実際の数字は 8% のみでした。同様に、このモデルは “M” サブグループの “True” の確率を 20% と予測しましたが、実際の確率は 10% でした。男女の予測確率は近いですが、同一ではありません。この差が十分に大きいかどうかを調べるには、表に基準と “F” 行と “M” 行で表される部分母集団に関する詳細な統計を表示します。
表の右上にある Displayed Metrics ドロップダウンをクリックし F1 Score を選択します。このメトリックでは、精度値と検出率の両方が考慮されることにご注意ください。最良の値は 1、最悪は 0 です。
“F” と “M” の列を展開するにはこの 2 列のどこかをクリックします。
この解析では、F1スコアが非常に低いにもかかわらず、全グループの中で男性のサブグループが最も高くなっています (0.36)。また*high_revenue* が真であると正しく予測する能力では、男性のサブグループ (54%) の方が女性のサブグループ (44%) よりも優れていることが、男女両方のグループの混同行列 (% of actual classes を表示) で示されています。
個別解説¶
モデルに対する特徴の影響を調べるだけでなく、特定の特徴がデータセット内の特定行の予測にどう影響するかの理解にも役立ちます。個別予測解説特徴によりあなたはたったこれをやるだけで済みます!この特徴は、次の2つの方法で計算できます。
モデル結果ページの Individual explanations タブから
Output explanations オプションを選択してスコアリングレシピ (フローへモデルをデプロイ後) 内で。。 例については チュートリアル: 機械学習モデルをスコアリング をご覧ください。
モデル結果ページの個別解説タブを使って、データセット内の特定サンプルの予測に影響する最も影響力のある特徴を5つビジュアル化しましょう。
左側のパネルで Individual explanations をクリックするとページが開きます。
解説に使う最も影響力のある特徴に
5
を指定します。デフォルトの ICE メソッドを保持します。
右上隅の歯車アイコンをクリックすると、サンプリング詳細などの詳細設定が表示されます。”Sample size” を
1000
で保持します。このサンプルはモデルが単純なトーニング/テストスプリットを実装しているため、テストセットからの抽出となります。モデルが K-分割検証を実装した場合、サンプルはデータセット全体から抽出されます。
予測される確率の下限と上限の行数を指定するため、左のスライダを
0.10
(“~42 rows” に対応) の近くに移動させ、右のスライダを0.70
(“~50 rows” に対応) の近くに移動させます。バックグラウンドの確率密度関数は、テストセットに基づく近似値であることにご注意ください。低/高確率を有効にするボックスは、デフォルトでオンになっているので、スライダを移動できます。
Compute をクリックします。
Note
スライダの厳密な位置によっては、この解析で表示される値と異なる場合があります。
DSS は出力確率が 0.10
より小さい30行と、 0.70
より大きい55行を返します。各行の説明は、確率密度プロット下のカードに表示されます。DSS では識別子として customerID が選択されていますが、この選択は変更可能です。
ページの左側のカードは “True” である high_revenue の低確率を持ちます。またカードは高確率順にソートされます。 対照的にページの右側のカードは “True” である high_revenue の高確率を持ちます。またカードは低確率順にソートされます。各カードについて予想される確率は右上にあり、”customerID” (カード識別子)は左上にあります。
ページの左側にあるカードの場合、すべてのバーが赤で、左向きであることを確認します。これは予測確率が平均以下で、特徴が予測に負の影響を与えることを反映しています。場合によっては、バーの中には逆方向のもの (緑色で右向き) があるかもしれません。そうであっても、ページの左側にあるカードでは、機能の正味の影響は負のままです。
ページの右側のカードでは、反対の観察ができます。バーの大部分は (常にではないにせよ) 緑で、特徴が結果に与える正の影響を反映して右側に配置されます。
カード内の Features をクリックすると、すべての特徴とその値の完全な一覧が表示されます。
予測品質とモデル結果の理解¶
Interpretation セクションに続き、Performance セクションを理解しましょう。
Confusion matrix は、ターゲット変数の実際の値を予測値 (したがって、偽陽性、偽陰性などの値は…) および関連基準と比較します。精度、検出率 、F値. 機械学習モデルは通常、2つのグループの1つに属する確率を出力する。また実際の予測値は、この確率に基づいてどのカットオフ閾値を使うかに依存します。例: 顧客を価値の高い顧客に分類する確率はどのくらいでしょうか?
表示される混同基準は、指定の閾値に依存します。この閾値は上部のスライダで変更できます。
Decision Chart は、すべてのありうるカットオフの精度、検出率、およびF値を表します。
Lift charts と ROC curve は、おそらく最もモデルのパフォーマンス評価のためのビジュアル的補助として有用です。もちろんリフトチャートとROC曲線の構造と解釈についてのより長いバージョンは別々にたどり着くことができますが、今のところ、どちらの場合も the steeper the curves are at the beginning of the graphs, the better the model ということを覚えておくことができます。
また私たちの例でも、結果は非常に良好です。
最後に **Density chart**は価値の高い顧客である確率分布を、2つの実際のグループ間で比較して示します。良いモデルでは、次のように2つの曲線をできる限り分離できます。
最後のセクションである Model Information はモデル構築方法の要約です。Features タブに移動するといくつかおもしろいことに気付くでしょう。
デフォルトでは customerID 以外の全変数がターゲットの予測に使われています。この機能は一意の識別子として検出され、知名度の高い顧客の予測には役立たなかったため Dataiku DSS は customerID を拒否しました。さらに、GeoPoint のような基準は新しいレコードでは一般化されないため、予測モデルではあまり興味深いものではありません。モデルの設定を調整するとよいでしょう。
モデルの設定をチューニング¶
モデルの作成方法を変更するには、Models リンクをクリックしてモデル一覧ページに戻り、Design ページを開きます。
変数の使用方法に関する問題に対処するには、Features handling タブに直接進みます。ここであなたは、DSS でさまざまな設定をチューニングできます。
変数の Role (または特徴) は、モデル内で変数を使用 (Input) できるか否 (Reject) かを示します。ここでは、モデルから ip_address_geopoint を取り除きます。ip_address_geopoint をクリックし、Reject ボタンをクリックします (または、直接オン/オフを切り替え)。
変数の Type は、機械学習アルゴリズムに入れる前にどう前処理するかを定義するために非常に重要です。
Numerical 変数は実数値です。整数または小数を使った数値を指定できます。
Categorical 変数は、名目値 (赤/青/緑、郵便番号、性別など) を格納する変数です。また、数値のように見える変数が実際には カテゴリ型である場合もあります。たとえば、実際の値の代わりに “id” を使った場合などです。
Text は、ツイートや顧客レビューなどテキストデータの生のブロックを対象としています。Dataiku DSS は、特定の前処理で未加工のテキスト特徴を処理できます。
各タイプはさまざまな方法で処理できます。たとえば、数値変数 age_first_order と pages_visited_avg は、標準のリスケール (これは、平均が0で分散が1になるように値が正規化されることを意味) を使って自動で正規化されています。この動作を無効にするには、一覧で両方の名前をもう一度選択し、No rescaling ボタンをクリックします。
これらの設定変更後、Train をクリックして新しいモデルを構築できます。
ランダムフォレストモデルのパフォーマンスがわずかに向上しました。
特徴生成による精度の向上¶
Design に移動し、Feature generation タブをクリックしてください。 私たちは既存の数値特徴の Pairwise linear combinations と Polynomial combinations を使って、新しい数値特徴を自動生成できます。これらの特徴生成方法をクリックし、”Enable” を Yes に設定します。生成された特徴によって、入力とターゲット間の予期しない関係が明らかになる場合があります。
完了したら、Train ボタンをクリックしてモデルを再度トレーニングできます。
生成されたランダムフォレストは、以前のランダムフォレストより優先されます。AUC値は最初の2つのモデルのいずれよりも高いです。それはおそらく特徴処理に変更を行ったためです。 最新モデルの変数重要度チャートを見ると、重要度は age_first_order と pages_visited_avg から自動的に生成された特徴とともに campaign 変数全体に分散されているため、生成された特徴によりこれまで見えなかった関係が明らかになっている可能性があります。 一方、AUC の増加はそれほど大きくはないのであまり多くの情報を読まずに、その増加に感謝するのが最善かもしれません。
モデルをいくつかトレーニングしたので、すべての結果が画面に収まらなくなる可能性があります。すべてのモデルを一目で確認するには、任意の列でソートできる Table ビューに切り替えます。 私たちは ROC AUC でソートしました。
まとめ¶
おめでとうございます、あなたは DSSで初めての予測モデルを構築しました!
モデルをどこまで使えるか、または新しいデータが来たときに自動でスコアを付ける方法で、モデルを実際どのように使えるかを確認するには、モデルスコアリングチュートリアル をご覧ください。