Data Science Workspace チュートリアル

このドキュメントでは、Adobe Experience Platform Data Science Workspaceの手順を説明します。 このチュートリアルでは、一般的なデータサイエンティストのワークフローと、それらが機械学習を使用して問題にアプローチし、解決する方法について説明します。

前提条件

  • 登録済みの Adobe ID アカウント
    • Adobe IDアカウントは、Adobe Experience PlatformとData Science Workspaceへのアクセス権を持つ組織に追加されている必要があります。

小売の使用例

現在の市場での競争力を維持するために、ある小売業者は多くの課題に直面しています。小売業者の主な懸念事項の1つは、製品の最適価格を決定し、販売傾向を予測することです。 正確な予測モデルを使用すると、小売業者は、需要と価格設定ポリシーの関係を見つけ、販売と売上高を最大化するために最適化された価格決定を行うことができます。

データサイエンティストの解決法

データサイエンティストのソリューションは、小売業者が提供する豊富な履歴情報を活用し、将来の傾向を予測し、価格決定を最適化することです。 このチュートリアルでは、過去の販売データを使用して機械学習モデルをトレーニングし、モデルを使用して将来の販売傾向を予測します。 これにより、最適な価格変更をおこなうのに役立つインサイトを生成できます。

この概要は、データサイエンティストがデータセットを取得し、週別の売上高を予測するモデルを作成する手順を反映しています。 このチュートリアルでは、Adobe Experience Platform Data Science Workspaceのサンプル小売販売ノートブックで次の節を説明します。

Data Science Workspaceのノートブック

Adobe Experience Platform UIで、「データサイエンス」タブから「ノートブック」を選択し、ノートブックの概要ページに移動します。 このページで、「JupyterLab」タブを選択してJupyterLab環境を起動します。 JupyterLabのデフォルトのランディングページは、Launcher​です。

このチュートリアルでは、JupyterLab NotebooksのPython 3を使用して、データにアクセスし、調査する方法を示します。 ランチャーページには、サンプルのノートブックが用意されています。以下の例では、 小売売上​サンプルノートブックを使用しています。

セットアップ

Retail Salesノートブックを開いた状態で、まずワークフローに必要なライブラリを読み込む必要があります。 次のリストは、後の手順の例で使用される各ライブラリの簡単な説明です。

  • 数値:大きな多次元配列と行列のサポートを追加する科学計算ライブラリ
  • pandas:データの操作と分析に使用するデータ構造と操作を提供するライブラリ
  • matplotlib.pyplot:プロット時にMATLABと同じような操作を行うプロットライブラリ
  • seaborn :Matplotlibに基づく高レベルのインターフェイスデータ視覚化ライブラリ
  • sklearn:分類、回帰、サポートベクトル、クラスターアルゴリズムを備えた機械学習ライブラリ
  • warnings:警告メッセージを制御するライブラリ

データの調査

データの読み込み

ライブラリが読み込まれたら、データの確認を開始できます。 次のPythonコードは、pandasのDataFrameデータ構造とread_csv()関数を使用して、GithubでホストされているCSVをpandas DataFrameに読み込みます。

Pandas の DataFrame データ構造は、2 次元のラベル付きデータ構造です。データの次元をすばやく確認するには、df.shapeを使用します。 DataFrame の次元を表すタプルが返されます。

最後に、データの表示をプレビューできます。 df.head(n)を使用して、DataFrameの最初のn行を表示できます。

統計概要

Python’s pandasライブラリを利用して、各属性のデータ型を取得できます。 以下の呼び出しの出力では、各列のエントリ数とデータタイプに関する情報が得られます。

df.info()

各列のデータタイプを知ることで、データの処理方法がわかるので、この情報は役に立ちます。

次に、統計の概要を見てみましょう。数値データタイプのみが表示されるため、datestoreTypeisHolidayは出力されません。

df.describe()

これにより、各特性に対して6435個のインスタンスが存在することがわかります。 また、平均、標準偏差(std)、最小、最大、四分位数などの統計情報も表示されます。これにより、データの偏差に関する情報が得られます。次の節では、ビジュアライゼーションについて説明します。ビジュアライゼーションは、この情報と連携して、データを完全に理解できます。

storeの最小値と最大値を見ると、データが表す45の一意のストアがあることがわかります。 店舗の種類を識別する storeTypes もあります。storeTypesの分布は、次の方法で確認できます。

つまり、22 店舗が storeType A、17 店舗が storeType B、6 店舗が storeType C です。

データの視覚化

データフレームの値がわかったので、これをビジュアライゼーションで補完して、物事をより明確にし、パターンを識別しやすくする必要があります。 これらのグラフは、結果をオーディエンスに伝える場合にも便利です。

一変量グラフ

一変量グラフは、個々の変数のグラフです。データの視覚化に使用される一般的な一変量グラフは、箱ひげ図です。

以前の小売データセットを使用して、45店舗とその週別売上高ごとにボックスウィスカープロットを生成できます。 プロットは、seaborn.boxplot 関数を使用して生成されます。

箱ひげ図は、データの分布を示すのに使用されます。箱ひげ図の外側の線は上下の四分位数を示し、ボックスは四分位数の範囲に及びます。ボックス内の線は中央値を示します。上四分位数または下四分位数の 1.5 倍以上のデータポイントは、円としてマークされます。これらの点は外れ値と見なされます。

次に、週別の売上高を時間と共にプロットできます。 最初のストアの出力のみが表示されます。 ノートブック内のコードは、データセット内の 45 店舗のうち 6 店舗に対応する 6 プロットを生成します。

この図では、2年間の週別の売上高を比較できます。 販売のピークやトラフのパターンが時間の経過と共に見えやすくなります。

多変量分析グラフ

多変量プロットは、変数間の相互作用を確認するために使用されます。この視覚化手法を使用すると、データサイエンティストは変数間に相関関係やパターンがあるかどうかを確認できます。一般的に使用される多変量グラフは相関行列です。多変数間の依存関係が相関係数で定量化されます。

同じ小売データセットを使用して、相関行列を生成できます。

真ん中に斜めの 1 がそろっていることに注目してください。これは、変数をそれ自体と比較する場合、完全に正の相関関係があることを示しています。強い正の相関は 1 に近い大きさになり、弱い相関は 0 に近い大きさになります。負の相関は、逆の傾向を示す負の係数で示されます。

特徴エンジニアリング

この節では、機能エンジニアリングを使用して次の操作を実行して小売データセットを変更します。

  • 週と年の列を足す
  • storeTypeをインジケーター変数に変換する
  • isHolidayを数値変数に変換する
  • 来週の売上を予測する

週と年の列を足す

日付の現在の形式(2010-02-05)では、毎週のデータを区別するのが困難です。 このため、日付を週と年に変換する必要があります。

週と日付は次のようになります。

storeType をインジケーター変数に変換する

次に、storeType列を各storeTypeを表す列に変換します。 ストアタイプは3つ(ABC)あり、ここから3つの新しい列を作成します。 各列に設定される値はブール値で、「1」はstoreTypeの内容に応じて設定され、他の2列に対しては0が設定されます。

現在のstoreType列は削除されます。

isHoliday を数値型に変換する

次の修正は、isHoliday ブール値を数値表現に変更することです。

来週の売上を予測する

次に、各データセットに、前週の売上高と将来の週の売上高を追加します。 これを行うには、weeklySalesをオフセットします。 さらに、weeklySalesの差が計算されます。 これは、weeklySales で前の週の weeklySales 値を引くことでおこなわれます 。

weeklySalesデータ45データセットを前方に、45データセットを後方にオフセットして新しい列を作成するので、最初と最後の45データポイントにはNaN値が設定されます。 NaN値を持つすべての行を削除するdf.dropna()関数を使用して、これらのポイントをデータセットから削除できます。

変更後のデータセットの概要を次に示します。

トレーニングと検証

次に、データの一部のモデルを作成し、将来の売上を予測するのに最もパフォーマンスの高いモデルを選択します。次の5つのアルゴリズムを評価します。

  • 線形回帰
  • 決定木
  • ランダムフォレスト
  • 勾配ブースティング
  • K 近傍法

データセットのトレーニングおよびテストサブセットへの分割

モデルが値を予測する正確さを知る方法が必要です。 この評価は、検証として使用するデータセットの一部を割り当て、残りをトレーニングデータとして割り当てることでおこなうことができます。weeklySalesAheadweeklySalesの実際の将来値なので、この値を使用して、モデルが値を予測する際の正確さを評価できます。 分割は次の手順でおこないます。

これで、モデルを準備するX_trainy_train、後で評価するX_testy_testが用意されました。

スポットチェックアルゴリズム

この節では、すべてのアルゴリズムをmodelという配列に宣言します。 次に、この配列を繰り返し処理し、各アルゴリズムに対して、モデルmdlを作成するmodel.fit()を使用してトレーニングデータを入力します。 このモデルを使用して、weeklySalesAheadX_testデータで予測できます。

スコアリングの場合、予測されたweeklySalesAheady_testデータ内の実際の値との間の平均パーセント差を取ります。 予測と実際の結果の差を最小限に抑えたいので、グラデーションブースト回帰は最もパフォーマンスの高いモデルです。

予測の視覚化

最後に、予測モデルを実際の週別売上高値で視覚化します。 青い線は実際の数を表し、緑は勾配ブースティングを使用した予測を表します。 次のコードは、データセット内の45店舗のうち6店舗を表す6プロットを生成します。 ここでは Store 1 のみが表示されます。

次の手順

このドキュメントでは、小売販売の問題を解決するための一般的なデータサイエンティストワークフローについて説明しました。 要約すると、次のようになります。

  • ワークフローに必要なライブラリを読み込みます。
  • ライブラリが読み込まれたら、統計的な概要、ビジュアライゼーション、グラフを使用して、データの表示を開始できます。
  • 次に、機能エンジニアリングを使用して小売データセットを変更します。
  • 最後に、データのモデルを作成し、将来の売上を予測するのに最もパフォーマンスの高いモデルを選択します。

準備が整ったら、まず、『JupyterLabユーザーガイド🔗』を読み、Adobe Experience Platform Data Science Workspaceのノートブックの概要を確認します。 さらに、モデルとレシピの学習に関心がある場合は、まず小売販売スキーマとデータセットのチュートリアルをお読みください。

このページ