Dataiku アプリケーション

Dataiku アプリケーションの紹介

Dataiku アプリケーション は、プロジェクトの再利用を可能にする DSS カスタマイゼーションの一種です。 Dataiku アプリケーションの作成や使用の典型的なプロセスは以下のとおりです。

  • データサイエンティストが、通常どおり DSS プロジェクトを作成します。

  • データサイエンティストは、このプロジェクトのワークフローが、同僚にも役に立つと気づきます。

  • 一部の同僚は、自分の業務の開始点としてのみこのプロジェクトを必要としているので、複製を作成します。

  • 一部の同僚は、このプロジェクトのさらなる開発に積極的に参加したいので、ブランチを作成します。

  • 一部の同僚は、単に既存のプロジェクトのワークフローを新しいデータに適用する必要があるだけで、プロジェクトの詳細を理解する必要はありません。 Dataiku アプリケーションは、この最後のグループにとって有用です。

  • データサイエンティスト(またはアプリ開発者)が、プロジェクトを Dataiku アプリケーションに変換します。

  • アプリケーションを使用する各同僚が、自分個人用に Dataiku アプリケーションのインスタンスを作成します。

ビジュアルアプリケーションと Applications-as-Recipes(レシピとしてのアプリケーション)

Dataiku アプリケーションは、次の2つの異なる方法で表面化されます。

  • Visual Applications では、GUI を最前面にして、プロジェクトをパッケージングすることができます。これにより、組織内のもっと多くのユーザーが、AI とセルフサービス分析を利用できます。

  • Applications-as-Recipes では、フローの一部を、別のプロジェクトのフローで使用可能なレシピとしてパッケージングすることができます。

前提条件

このコースを開始する前に、受講者は次のことを熟知している必要があります。

  • 自動化シナリオ。これは、Dataiku アプリケーションを実行するための鍵となります。

ビジュアルアプリケーションの作成

プロジェクトの作成

Dataiku DSS ホームページから +New Project > DSS Tutorials > Advanced Designer > Dataiku Applications (Tutorial) を選択します。 このプロジェクトには、完全にビルドの完成したフローがあります。このフローは:

  • UCI機械学習リポジトリ からデータをダウンロードします。

  • Prepare(準備)レシピの中でデータを軽く処理してから、次の2つのサブフローに分岐します。

    • Monthly Forecasting(月間フォーキャスト)サブフローは、月間売上高をモデリングして、for_predictions データセットからフォーキャストを生成します。

    • One Customer’s Invoices(1人の顧客の請求書)サブフローには、任意の顧客に関する履歴データを見るためのフィルタが含まれています。

../../../_images/flow-starting1.png
  • ここから到達可能な、Download recipe and Build Flow outputs(レシピをダウンロードして、フローアウトプットをビルドする)を選択します。

  • 各サブフローに 1 つずつある、2 つのダッシュボードを見てください。

../../../_images/dashboard-forecasts.png ../../../_images/dashboard-one-customer.png
  • 同僚がプロジェクトの詳細を理解する必要なしでプロジェクトを使用できるように、このプロジェクトを Dataiku アプリケーションに変換します。

    • 最初にスコアリングを使用可能にします。

    • 次に、単一の顧客の注文履歴データを追加します。

Dataiku アプリに変換

  • メニューから … > Application Designer を選択して、Convert into a visual application を選択します。

../../../_images/app-designer.png

オプションで、アプリケーションに説明を追加して、これを他のユーザーが使用できるようにし、タグ付けします。

../../../_images/app-designer-main-page.png

予測の生成

次に、予測を作成するためのアプリケーションUIを定義しましょう。

  • Add Section をクリックします。

  • ``Monthly sales forecast``(月間売上予測)と命名します。

  • これに次のような説明を追加します:``Generate predictive sales by month for the total sales of goods``(物品の合計売上高を出すために、月ごとの売上予測を生成する)。

  • Add Tile をクリックして View dashboard を選択します。

  • これに次のようなタイトルを付けます:``See results in dashboard``(ダッシュボードに結果を表示する)

  • Monthly sales forecast(月間売上フォーキャスト)ダッシュボードを選択します。

  • Save をクリックして、次に Test をクリックします。

すると、アプリが現在エンドユーザーにどのように見えているかを示すビューが表示されます。 リンクをクリックするとダッシュボードが開きます。 これは好調な第一ステップですが、ユーザーには全くインタラクティビティを提供しません。 次に、ユーザーが自分でフォーキャスト期間を指定できる機能を追加しましょう。

../../../_images/app-designer-test-01.png
  • ブラウザの中で Back(戻る)ボタンをクリックして、Application Designer に戻ります。

  • Add Tile > Upload file in dataset をクリックします。

  • 次のようなタイトルを付けます:``Optionally, upload a CSV containing the months to predict``(オプションで、フォーキャスト対象の月を含むCSVをアップロードする)

  • Add help をクリックして、次のヘルプテキストを作成します: ``The format of the CSV should be: year,month.``(CSVの形式は year,month にする必要があります。

  • for_predictions をデータセットとして選択します。

  • Only upload file をタイルの動作として選択します。

  • ファイルのアップロードが最初に来るようにタイルを並べ替えます。

../../../_images/app-designer-upload-file.png

これにより、アプリケーションユーザーが自分でフォーキャスト期間を指定できるようになりますが、今度は、このデータセットをスコアリングしてダッシュボードを更新するメカニズムを追加する必要が生じます。 これは、シナリオを使って実行できます。

  • Jobs > Scenarios に移動します。

  • +Create Your First Scenario をクリックします。

  • これに ``Generate predictions``(予測を生成する)と命名して、Create をクリックします。

  • Steps(ステップ)タブに移動します。

  • Add Step をクリックして Build/Train を選択します。

  • Add Dataset to Build をクリックして for_predictions_scored を選択します。

  • Build only this dataset をビルドモードとして選択します。

  • Save をクリックします。

データセットをビルドするシナリオができたので、今度はアプリケーションに、このシナリオを実行するボタンを追加できます。

../../../_images/scenario-generate-predictions.png
  • Application Designer に戻ります。

  • Run scenario タイプのタイルを追加します。

  • ``Run``(実行)というタイトルを付けます。

  • Generate predictions をシナリオとして選択します。

  • Run が 2 番目に来るようにタイルを並べ替えます。

最後に、モデルとデータセットをアプリケーションに使用可能にします。

  • included content セクションの中で、for_predictions を含まれるデータセットとして追加します。

  • Prediction sales_by_month を保存済みのモデルとして追加します。

アプリケーションのフォーキャスト機能に最後に追加する機能として、アプリのユーザーに、スコアリングされたデータセットをダウンロードできるようにしましょう。

  • Download dataset タイプのタイルを追加します。

  • これに``Download forecasts``(予測をダウンロードする)というタイトルを付けます。

  • for_predictions_scored をダウンロードするデータセットとして選択します。

  • Save をクリックして、次に Test > Create or update test instance (full) をクリックします。

../../../_images/app-designer-test-02.png

単一の顧客に関する注文履歴データ

アプリケーションユーザーにフォーキャストの生成を可能にしたので、今度はユーザーが自分で単一の顧客に関する注文データをプルできるようにしましょう。

  • Application Designer に戻ります。

  • 新しいセクションを追加して、これを ``Sales history of one customer``(1人の顧客に関する売上履歴)と命名します。

  • これに次のような説明を追加します:``You can generate a dashboard with the detailed sales of one given customer.``(特定の1人の顧客に関する売上の詳細を示すダッシュボードを生成できます。)

ここで実現したいことの多くは、予測の生成のときに行ったことと似ています。つまり、アプリケーションユーザーに、items_of_one_customer データセットをビルドしてダッシュボードを更新するようなシナリオを生成可能にすること、そして、そのデータセットをダウンロードできるようにすることです。 新たな問題は、アプリケーションユーザーに、任意の顧客を指定できるようにしたいということです。

現在、この値は Filter(フィルタ)レシピの中でハードコーディングされていますが、これはカスタムの変数を使って変更できます。

  • … > Variables に移動します。

  • Local variables(ローカル変数)の配下で、次を指定します。

{
  "customer_id": "13758"
}
  • Save をクリックします。

  • Filter(フィルタ)レシピに移動して、フォーミュラを val('Customer ID') == "${customer_id}" に更新します。

../../../_images/filter-recipe.png

次に、このデータセットをビルドするシナリオを作成します。

  • Jobs > Scenarios に移動します。

  • +New Scenario をクリックします。

  • これに Build dashboard of one customer (1 人の顧客のダッシュボードをビルドする)と命名して、Create をクリックします。

  • Steps(ステップ)タブに移動します。

  • Add Step をクリックして Build/Train を選択します。

  • Add Dataset to Build をクリックして items_of_one_customer を選択します。

  • Build only this dataset をビルドモードとして選択します。

  • ビルドするデータセットを invoices_of_one_customer にして、2 番目の Build/Train(ビルド/トレーニング)ステップを追加します。

  • Save をクリックします。

カスタム変数とシナリオができたので、アプリをビルドできます。

../../../_images/scenario-one-customer.png
  • Application Designer に戻ります。

  • included content セクションの中で、items データセットを追加して、これをアプリケーションに使用可能にします。

  • Add Tile をクリックして Edit project variables を選択します。

  • ``Define``(定義)というタイトルを付けます。

  • Add help(ヘルプを追加)をクリックして、ヘルプテキストを追加します。例:``For example, you can use 17191 or 13758.``(例えば 17191 または 13758 を使用できます。)

  • アプリユーザーには、単一のカスタム変数だけを設定してもらえばよいので、動作に関しては、Edit inline with auto-save を選択します。

  • 次に、カスタム変数の設定項目を指定する必要があります。 これは、次のJSONを使って行うことができます。

[
   {
      "name": "customer_id",
      "type": "INT",
      "label": "The dashboard will be for this customer",
      "mandatory": false,
      "canSelectForeign": false,
      "markCreatedAsBuilt": false,
      "allowDuplicates": true,
      "getChoicesFromPython": false,
      "canCreateDataset": false
   }
]
../../../_images/app-designer-project-vars.png
  • Add Tile > Run scenario をクリックします。

  • ``Run``(実行)というタイトルを付けます。

  • Build dashboard of one customer を実行するシナリオとして選択します。

  • Add Tile > View dashboard をクリックします。

  • これに ``See results in dashboard``(ダッシュボードに結果を表示する)のタイトルを付けます。

  • Sales history of one customer をダッシュボードとして選択します。

  • Add Tile > Download dataset をクリックします。

  • これに ``Download all the sales of this customer (XLSX format)``(この顧客に関するすべての売上をダウンロードする(XLSX形式))のタイトルを付けます。

  • items_of_one_customer をダウンロードするデータセットとして選択します。

  • Excel (*.xlsx) を形式として選択します。

  • Save をクリックします。

このアプリは、Dataiku DSS ホームページからすべての人が使用できるようになりました。

Application-As-Recipe(レシピとしてのアプリケーション)の作成

プロジェクトの作成

まず、Haiku Starter プロジェクトから始めましょう。

  • DSS ホームページから、+New Project > DSS Tutorials > General Topics > Haiku Starter をクリックします。

このプロジェクトのフローは、注文データを取得してこれを顧客データで強化し、さまざまな処理オペレーションを実行するというものです。

../../../_images/flow-starting-02.png

同僚にも、注文データを処理する必要がある人が何人かいます。 これらの同僚とこのフローを共有できます。そうすれば彼らも、このプロジェクトを複製するか、レシピを自分のプロジェクトにコピーすることができます。 また、代替の方法として、同僚がプロジェクトの詳細を理解する必要なくプロジェクトを使用できるようにするために、Dataiku App-as-recipe を作成することも可能です。

このオリジナルのプロジェクトには後でまた作業をしたいので、複製を作成します。

  • プロジェクトホームページから、Actions > Duplicate this project をクリックします。

  • この複製のプロジェクトに ``Process Orders``(注文を処理する)と命名します。

  • Advanced Options(詳細オプション)の中で、Required inputs を複製モードとして選択します。

../../../_images/duplicate-project.png

App-As-Recipe に変換

Process Orders プロジェクトの中で:

  • メニューから … > Application Designer を選択して、Convert into application-as-recipe を選択します。

  • オプションで、アプリに次のような説明を追加します。``Enrich orders with customer data, then prepare for further analysis.``(注文を顧客データで強化して、さらなる分析のための準備をする)

フォルダとデータセットをアプリに使用可能にします。

  • included content セクションの中で、CustomersOrders を含まれるデータセットとして追加します。

  • OrdersCustomers を、含まれる管理対象フォルダとして追加します。

  • Application-as-recipe セクションの中で、オプションでレシピに ``Order processing``(注文処理)などのカテゴリを指定します。 これが、フローの中で、+Recipe メニューでレシピを探す場所となります。

  • インプットデータに ``Orders data``(注文データ)ラベルを設定して、Orders をデータセットとして選択します。

  • アウトプットデータに ``Enriched and prepared orders data``(強化済み、準備済み注文データ)ラベルを設定して、Orders_enriched_prepared をデータセットとして選択します。

このレシピのユーザーが、インプットデータセットに Haiku 注文スキーマを提供した場合、レシピは注文データを顧客データで強化し、データを準備してから、強化済み、準備済み注文データをアウトプットします。

../../../_images/app-designer-inputs-outputs.png

今度は、レシピのユーザーが Run(実行)をクリックしたときに実行されるシナリオを作成する必要があります。

  • アプリを保存します。

  • Jobs > Scenarios に移動します。

  • +New Scenario をクリックします。

  • これに ``Run Recipe``(レシピの実行)と命名して、Create をクリックします。

  • Steps(ステップ)タブに移動します。

  • Add Step をクリックして Build/Train を選択します。

  • Add Dataset to Build をクリックして Orders_enriched_prepared を選択します。

  • Save をクリックします。

../../../_images/scenario-run-recipe.png
  • Application Designer に戻ります。

  • Run recipe をシナリオとして選択します。

  • ここで適用されるパラメータはないので、コントロールは必要ありません。自動生成されたコントロールを空にしてください。 これでレシピは Run(実行)ボタン以外は空白になります。 アプリユーザーに何らかの指図を提供するには、Use custom UI をクリックします。

  • カスタム UI HTML に、次を入力します。

<p>
インプットデータセットには、下記のスキーマがあります。
</p>
<ul>
<li>order_date</li>
<li>pages_visited</li>
<li>order_id</li>
<li>customer_id</li>
<li>tshirt_category</li>
<li>tshirt_price</li>
<li>tshirt_quantity</li>
</ul>
  • Application-as-recipe を保存します。 レシピを使用する準備が完了しました。

このレシピを別のプロジェクトに使用してください。

  • オリジナルの Haiku Starter プロジェクトに戻ります。

  • フローの中で、+ Recipe > Process Orders > Order processing を選択します。

../../../_images/recipe-selection.png
  • Orders をインプットデータセットとして選択して、Orders_enriched_prepared_2 をアウトプットデータセットとして作成します。

  • Create をクリックします。

../../../_images/recipe-inputs-outputs.png
  • レシピは、インプットデータセットに期待されるスキーマをユーザーに指示します。

  • Run をクリックします。

../../../_images/recipe1.png

Application-as-recipeとそのアウトプットが、フローの中で可視できるようになりました。

../../../_images/flow-final.png