メインコンテンツまでスキップ
waffle.svg
Domo Knowledge Base - 日本人

ETL Actions: データ科学

Version 6

注記:この機能は、オンデマンドで利用できます。
 

機能の有効化をリクエストするには、以下の手順を実行します。

  • Buzzで/Supportを使用するか、support@domo.comにメールを送信して、テクニカルサポートに問い合わせてください。

  • Domoカスタマーサクセスマネージャーかテクニカルコンサルタントに連絡してください。

機能によっては、利用する前に研修が必要なものもあります。

はじめに

この記事では、ETLでのすべてのデータサイエンス操作について詳しく説明します。これには以下が含まれます。

  • 分類

  • クラスタリング

  • 予測

  • 多変量外れ値

  • 外れ値検出

  • 予測

注記:データに対する正確かつ効率的なデータサイエンス分析を実行するために、クリーンなデータを使用することを推奨します。詳細は、「データクリーニングと機能エンジニアリング」を参照してください。

分類

分類(数値ではなくカテゴリー値を予測すること)アルゴリズムの目的は、データ内のカテゴリー列を予測する統計モデルを構築することです。このモデルを使用すると、その列の値を新しいデータに基づいて分類できます。複数の方法を使用し、それらを比較することを推奨します。

この操作では、1つのカテゴリー列(従属列)と1つ以上の数値やカテゴリー列(予測子列)を持つトレーニング用DataSetが1つ必要です。分類タイル内では、ナイーブベイズまたはランダムフォレストのいずれかを選択できます。

ナイーブベイズ分類子

ナイーブベイズ分類は、その他の分類アルゴリズムよりも高速かつシンプルですが、一般に精度が劣ります。この分類はサイズの大きなDataSetに使用することを推奨します。

ランダムフォレスト分類子

ランダムフォレスト分類は、複数の決定木を作成し、その結果を組み合わせて全体的な分類を得るアンサンブル学習方法です。直線性の前提は必要ありません。このアルゴリズムは、データ内の極値に対してより堅牢です。

以下の例は、DomoのETLで分類アルゴリズムを実装して使用する方法を示しています。サンプルDataSetの Catastrophic_Train.xlsx(800行)とCatastrophic_Test.xlsx(200行)は人為的に生成されたDataSetで、この例を試す場合にダウンロードできます。これらのDataSetには保険金請求に関するデータが含まれており、その目的は新しい請求が破滅的かどうかを正確に分類できる分類アルゴリズムをトレーニングすることです。 

「Catastrophic Train.csv」DataSetのスナップショットを以下に示します。

boosting_1.png

分類する列は、このDataSetに含まれている「catastrophic」です。このDataSetは、「破滅的」ステータスが認識されていない可能性がある将来のDataSetで使用できる分類アルゴリズムのトレーニングに使用されます。 

「Catastrophic Test.csv」DataSetのスナップショットを以下に示します。

boosting_2.png

なお、「catastrophic」はテストDataSetには含まれていません。

分類操作を設定するには、以下の手順を実行します。

  1. 分類データサイエンスタイルを追加し、入力DataSetに接続します。

    boosting_3.png
  2. まず、アルゴリズムのトレーニングに使用するDataSetと予測の対象になるDataSetを選択する必要があります。これらは同じDataSetにできます。

    boosting_4.png

  3. 次に、分類する列を選択します。続いて、最初に数値列を選択してから(これは空白にしておいても構いません)、分類に役立つと考えられる列を選択する必要があります。

    boosting_5.png

  4. カテゴリー分類子列を選択する必要があります(前のステップで少なくとも1つの列を数値分類子として選択した場合は、空白のままにしておいても構いません)。分類列にも名前を付ける必要があります。この例では、デフォルト名の「classification」が使用されています。

    randomforest_2.png

  5. 最後に、[ナイーブベイズ] または [ランダムフォレスト] のいずれかを分類タイルの基盤アルゴリズムとして選択します。

    Classification_-_Step_7.png

  6. 出力DataSetを接続し、名前を付けます。生成されるDataSetには、「classification」列が付加された元のDataSetが含まれます。

    randomforest_4.png

クラスタリング

クラスタリングアルゴリズムの目的は、同じグループ内のオブジェクト間の類似性が他のグループのオブジェクトとの類似性よりも高くなるように、一連のオブジェクトをグループ化することです。これはデータ分析の説明段階で特に役立ちます。ユーザーが必ずしも明白でないパターンとグループを明らかにできるようになるからです。

この操作では、1つ以上の数値列が必要で、ユーザーはK平均法アルゴリズムまたはKメジアン法アルゴリズムのいずれかを選択できます。 

K平均法クラスタリング

K平均法では、DataSetからk行をランダムに選択し、それらをクラスターの中心として扱うことでクラスターを形成します。次に、各行のクラスターの中心に対する距離に基づいてkクラスターが形成されます。 続いて、各クラスターの平均が計算され、新しいクラスターの中心として扱われます。このプロセスは、クラスターのメンバーシップが安定するまで繰り返されます。

Kメジアン法クラスタリング

Kメジアン法では、DataSetからk行をランダムに選択し、それらをクラスターの中心として扱うことでクラスターを形成します。次に、各行のクラスターの中心に対する距離に基づいてkクラスターが形成されます。続いて、各クラスターのメジアンが計算され、新しいクラスターの中心として扱われます。このプロセスは、クラスターのメンバーシップが安定するまで繰り返されます。

以下の例は、DomoのETLでクラスタリングアルゴリズムを実装して使用する方法を示しています。この例を試す場合は、サンプルDataSetの Wholesale_Distributor_Sales.xlsx(440行) をダウンロードします。

kmeans_clustering_1.png

このDataSetには、卸売業者のクライアントの各種製品カテゴリーに対する(通貨単位「m.u.」の)年間支出情報が含まれています。各行には、1つのクライアントのデータが含まれています。最初の2つの列は「地域」と「チャンネル」です。 これらは各クライアントの人口統計情報を表します。次の6つの列には、生鮮食品、牛乳、食料雑貨、冷凍食品、洗剤および紙類、惣菜の6つの製品カテゴリーに関する情報が含まれています。クラスタリングアルゴリズムを使用すると、各種の製品カテゴリーに対する支出金額に従ってクライアントをグループ化できます。

クラスタリング操作を設定するには

  1. クラスタリング操作をETLに追加し、入力DataSetに接続します。 

    ETL_Actions_Clustering.png
  2. クラスターを特定するために使用する列を選択します。少なくとも1つの数値列を選択する必要があります。また、選択できるのは数値列だけです。

    kmeans_clustering_3.png

  3. 次に、クラスターメンバーシップを含む列、およびDataSetに存在すると考えられるクラスターの数(k)を指定します。最初の段階では通常、2~5つのクラスターが適切です。ただし、それ以上の数のクラスターを使用することもできます。さまざまなkの値を調べることを推奨します。 

    注記:多すぎる数のクラスターを使用しても、通常はメリットはありません。生成されるクラスター間の解釈が難しくなるからです。

     
    kmeans_clustering_4.png

  4. 続いて、クラスタリングタイルの基盤アルゴリズムとして[K平均法] または [Kメジアン法] のいずれかを選択します。 

    Clustering_-_Step_4.png

  5. 最後に、出力DataSetを接続して名前を付ける必要があります。

生成される出力DataSetには、クラスターメンバーシップを含む列が付加された元のDataSetが含まれます。

kmeans_clustering_6.png

このDataSetを使用してカードを作成する

散布図は、このDataSetのデータを可視化するための優れた方法です。

kmeans_clustering_7.png

この散布図は、生鮮製品(X軸)と食料雑貨製品(Y軸)に対するクライアントの支出を示しています。各点は、割り当てられたクラスター別に色付けされています。この例では、3つのクラスターが選択されており、クラスター1のクライアント(青)は生鮮製品に、クラスター3のクライアント(オレンジ)は食料雑貨製品に多く支出する傾向があり、クラスター2のクライアント(緑)はどちらにもあまり支出していません。追加の散布図を作成して、別の製品カテゴリー(牛乳や冷凍食品)内でクライアントがどのようにグループ化されるかを調べることもできます。

予測

時系列予測では、時間順のデータ列を使ってさまざまな方法で未来の観測値の予測を生成できます。

この操作では、日時列と数値列が1つずつ必要です。予測では、ARIMAアルゴリズムが使用されます。

ARIMA

ARIMA(自己回帰和分移動平均)では、モデルへの適合性に応じて、予測パラメーターが自動的に選ばれます。これにより、データ内の動向や季節性などが考慮されます。そして予測は、最終的なモデルのパラメーターに基づいて行われます。

以下の例は、DomoのETLでARIMA予測アルゴリズムを実装して使用する方法を示しています。サンプルDataSetの Daily_Web_Sales.xlsx(171行)は人為的に生成されたDataSetで、1日あたりの収益合計を含んでいます。この例を試す場合、DataSetをダウンロードできます。

arima_1.png

 

予測操作を設定するには

  1. 予測操作をETLに追加し、入力DataSetに接続します。 

    arima_2.png
  2. 次に、日時を含む列を選択してから、予測する列を選択します。この例では、「Revenue」が予測されます。

    arima_3.png
     

  3. 次に、予測帯の幅(デフォルトは95%)を選択しましょう。選択した値が大きいほど、帯の幅は小さくなります。次に、予測する日数を選択できます。予測アルゴリズムは、過去のデータを調べ、データ点間の平均距離(時間単位)を取ります。将来の予測点はこの値に基づいて決まります。この例では、データは日単位であるため、将来の予測時点も日単位になります。

    arima_4.png

     

  4. 将来の予測の基礎として使用する過去の行の数を選択する必要があります。デフォルトでは、すべての列が使用されます。予測列にも名前を付ける必要があります。この例では、デフォルト名の「prediction」が使用されています。

    arima_5.png

     

  5. 次に、予測の下限と上限に名前を付ける必要があります。ここでは、デフォルトの「prediction lower」と「prediction upper」が使用されています。

    arima_6.png
     

  6. 出力DataSetを接続して名前を付ける必要があります。

    arima_7.png

生成される出力DataSetには、「prediction」列、「prediction lower」列、「prediction upper」列が付加された元のDataSetが含まれます。これら3つの新しい列は、予測が行われている場所(DataSetの最下部)を除いて空白です。

arima_9.png

このDataSetを使用してカードを作成する

予測カードは、このDataSetのデータを可視化するための優れた方法です。

arima_8.png

この予測カードには、1日あたりの予測収益値(上限および下限付き)が青色で表示されています。 

多変量外れ値

多変量外れ値検出は、DataSetに含まれている1つ以上の数値列のセットの外れ値または異常観測値を検出することを目的とする異常検出アルゴリズムです。多変量外れ値検出を使用すると、複数の次元の異常観測値(または行)を検出できます。ある観測値が単一の列については外れ値ではないものの、複数の列については外れ値になるという場合もあります。これは列数が増えるときに特に役立ちます。

この操作では、2つ以上の数値列が必要です。

以下の例は、DomoのETLで外れ値検出アルゴリズムを実装して使用する方法を示しています。サンプルDataSet:この例を試す場合は、Wholesale_Distributor_Sales.xlsx(440行)をダウンロードできます。

multivariate_outliers_1.png

このDataSetには、卸売業者のクライアントの各種製品カテゴリーに対する(通貨単位「m.u.」の)年間支出情報が含まれています。各行には、1つのクライアントのデータが含まれています。最初の2つの列は「地域」と「チャンネル」です。 これらは各クライアントの人口統計情報を表します。次の6つの列には、生鮮食品、牛乳、食料雑貨、冷凍食品、洗剤および紙類、惣菜の6つの製品カテゴリーに関する情報が含まれています。多変量外れ値検出を使用すると、各種の製品カテゴリーに対する支出金額に基づいて、外れている、または異常なクライアントを検出できます。

多変量外れ値操作を設定するには

  1. 多変量外れ値操作をETLに追加し、入力DataSetに接続します。 

    multivariate_outliers_2.png
  2. 多変量外れ値タイル内で、6つの製品カテゴリーのうちの1つ以上を、外れ値検出の対象にする列として選択する必要があります。この例では、すべての製品カテゴリーが選択されています。

    multivariate_outliers_3.png

  3. 次に、カットオフ値として使用されるカイ二乗分布の分位点(0~1の値)を選択し、TRUE(観測値が外れ値)またはFALSE(観測値が外れ値でない)のいずれかの値を含む列に名前を付ける必要があります(デフォルトは「outlier」)。最初の段階では通常、.95~.99の分位点が適切です。値が大きいほどカットオフが厳格になります。さまざまな値を調べることを推奨します。使用するカットオフ値が小さすぎると、ほとんどの観察値が外れ値に分類されます。

    multivariate_outliers_4.png

  4. 最後に、出力DataSetを接続して名前を付ける必要があります。

    multivariate_outliers_5.png

生成される出力DataSetには、外れ値インジケータ(下のプレビューペインで丸で囲まれている部分)を含む列が付加された元のDataSetが含まれます。 

multivariate_outliers_6.png

このDataSetを使用してカードを作成する

散布図グラフは、このDataSetのデータを可視化するための優れた方法です。

multivariate_outliers_7.png

この散布図は、食料雑貨製品(X軸)と生鮮製品(Y軸)に対するクライアントの支出を示しています。外れ値検出の対象として6つすべての製品カテゴリーを選択したことを思い出してください。外れ値と見なされるクライアントは赤で表示されます。外れ値クライアントのほとんどは、生鮮食品、食料雑貨、またはその両方に多く支出しています。生鮮食品にも食料雑貨にもあまり支出していない外れ値クライアントもいくつかあります(図の左下の隅にあります)。これらのクライアントは、その他の4つの製品カテゴリーに多く支出している可能性があります。さまざまな散布図を使用して、外れ値と見なされるクライアントが存在する理由を調べることができます。 

外れ値検出

外れ値とは、他の観測値/点から離れていて、発生する確率が低い観測値/点のことです。各種の外れ値の検出方法は、データに対する基本的な前提(大まかな正規釣鐘曲線データ、高次元データ、時系列データなど)と異常値の検出方法がそれぞれ異なっています。

この操作では1つの数値列が必要で、標準偏差アルゴリズムまたは平均絶対偏差アルゴリズムのいずれかを選択できます。 

平均絶対偏差

平均絶対偏差外れ値検出は、DataSet内の数値列の外れ値または異常観測値を検出することを目的とする異常検出アルゴリズムです。標準偏差検出とは異なり、平均絶対偏差外れ値検出では、列の値が正規分布(釣鐘形分布)しているとは想定されません。そのため、非正規の、または歪みのある(大きい、または小さい観測値が不釣り合いなほど多くある)列に最適です。列の観測値は、事前に指定された数の、中央値からのいずれかの方向における中央値絶対偏差(MAD)より大きい場合には、外れ値として分類されます。

標準偏差

標準偏差外れ値検出は、DataSet内の数値列の外れ値または異常観測値の検出を試みる異常検出アルゴリズムです。標準偏差外れ値検出では、列の値が大まかに正規分布(釣鐘形分布)していると想定されます。列の観測値は、事前に指定された数の、平均値からのいずれかの方向における標準偏差(MAD)より大きい場合には、外れ値として分類されます。

以下の例は、DomoのETLで外れ値検出アルゴリズムを実装して使用する方法を示しています。サンプルDataSet:この例を試す場合は、Wholesale_Distributor_Sales.xlsx(440行)をダウンロードできます。

multivariate_outliers_1.png

このDataSetには、卸売業者のクライアントの各種製品カテゴリーに対する(通貨単位「m.u.」の)年間支出情報が含まれています。各行には、1つのクライアントのデータが含まれています。最初の2つの列は「地域」と「チャンネル」です。 これらは各クライアントの人口統計情報を表します。次の6つの列には、生鮮食品、牛乳、食料雑貨、冷凍食品、洗剤および紙類、惣菜の6つの製品カテゴリーに関する情報が含まれています。標準偏差外れ値検出を使用すると、各種の製品カテゴリーに対する支出金額に基づいて、外れている、または異常なクライアントを検出できます。

外れ値検出操作を設定するには

  1. 外れ値検出操作をETLに追加し、入力DataSetに接続します。 

    nonparametric_outliers_1.png
  2. 外れ値検出タイル内で、6つの製品カテゴリーのうちのいずれか1つを、外れ値検出の対象にする列として選択する必要があります。この例では、生鮮食品列が選択されています。 

    nonparametric_outliers_1.png

  3. 次に、カットオフ値として使用される、中央値より大きい、または小さい中央値絶対偏差の数を選択し、TRUE(観測値が外れ値)またはFALSE(観測値が外れ値でない)のいずれかの値を含む列に名前を付ける必要があります(デフォルトは「outlier」)。最初の段階では通常、2~3個の中央値絶対偏差が適切です。ただし、より大きい(より厳格な)値を使用することもできます。さまざまな値を調べることを推奨します。使用するカットオフ値が小さすぎると、ほとんどの観察値が外れ値に分類されます。

    nonparametric_outliers_3.png
     

  4. 次に、標準偏差または平均絶対偏差のいずれかのアルゴリズムを選択します。この例では、標準偏差を選択します。

    Outlier_Detection_-_Standard_Deviation.png

  5. 最後に、出力DataSetを接続して名前を付ける必要があります。 

    nonparametric_outliers_4.png

生成される出力DataSetには、外れ値インジケータ(下のプレビューペインで丸で囲まれている部分)を含む列が付加された元のDataSetが含まれます。

nonparametric_outliers_5.png

このDataSetを使用してカードを作成する

散布図グラフは、このDataSetのデータを可視化するための優れた方法です。

nonparametric_outliers_6.png

この散布図は、食料雑貨製品(X軸)と生鮮製品(Y軸)に対するクライアントの支出を示しています。生鮮食品が外れ値検出の対象として選択されたことを思い出してください。外れ値と見なされるクライアントは赤で表示されます。これらのクライアントは、他のクライアントよりも生鮮食品にかなり多く支出しているようです。支出スペクトラムの下側には、外れ値と見なされたクライアントはありませんでした。この分析を再現することで、他の製品カテゴリーの潜在的な外れ値を調べることができます。

回帰

回帰アルゴリズムの目的は、データ内の数値列を予測する統計モデルを構築することです。このモデルを使用すると、その列の値を新しいデータに基づいて予測できます。複数の方法を使用し、それらを比較することを推奨します。

この操作では、線形回帰またはランダムフォレストのいずれかのアルゴリズムを選択できます。

線形回帰

線形回帰予測では、線形回帰モデルを使用してデータ内の数値列を予測します。この予測では、予測したい列、および予測プロセスに役立つと考えられるその他の列(「予測子」とも呼ばれます)を含むトレーニング用DataSetが必要です。このアルゴリズムは、トレーニング用DataSetを使用して予測アルゴリズムを「トレーニング」します。トレーニングされた予測アルゴリズムは、「テスト用」DataSet(テスト用DataSetとトレーニング用DataSetは同じでも構いません)に適用可能になり、そこで同じ「予測子」列を使用して各行を分類します。 

ランダムフォレスト

ランダムフォレスト回帰は非常に強力です。多数の弱い決定木の集合体を使用して、個々の木それぞれの平均を予測する1つの強い回帰アルゴリズムを作成するためです。このアルゴリズムは、データの複雑な下部構造を適切に識別できるため、さまざまなデータタイプに対して有効に機能します。 

ランダムフォレスト回帰アルゴリズムは非常に強力です。多数の弱い決定木の集合体を使用して、個々の木それぞれの平均を予測する1つの強い回帰アルゴリズムを作成するためです。このアルゴリズムは、データの複雑な下部構造を適切に識別できるため、さまざまなデータタイプに対して有効に機能します。これらのモデルは複雑であるため、平均的に見て実行に必要な計算コストが線形回帰よりも高くなります。

以下の例は、DomoのETLで回帰予測アルゴリズムを実装して使用する方法を示しています。サンプルDataSet:Catastrophic_Train.xlsx(800行)とCatastrophic_Test.xlsx(200行)は、人為的に生成されたDataSetで、この例を試してみたい場合はダウンローできます。これらのDataSetには、保険金請求に関するデータが含まれており、その目的は、DataSet内の各行の請求数を他の列のデータに基づいて正確に予測できる予測アルゴリズムをトレーニングすることです。 

「Catastrophic Train.csv」DataSetのスナップショットを以下に示します。

boosting_1.png

分類する列は、このDataSetに含まれている「num.claims」です。このDataSetは、「num.claims」ステータスが知られていない可能性がある将来のDataSetで使用できる分類アルゴリズムのトレーニングに使用されます。 

「Catastrophic Test.csv」DataSetのスナップショットを以下に示します。

boosting_2.png

「num.claims」はこのDataSetにも含まれています。このため、ユーザーは予測がどれくらい正確に行われたかを「num.claims」の実際の値に照らして確認できます。

予測操作を設定するには

  1. 予測操作をETLに追加し、入力DataSetに接続します。 

    olsprediction_1.png
  2. まず、トレーニング用DataSetとテスト用DataSetを選択する必要があります。これらは同じDataSetにできます。

    boosting_4.png

  3. 次に、予測する列を選択します。続いて、最初に数値列を選択してから(これは空白にしておいても構いません)、予測に役立つと考えられる列を選択する必要があります。

    olsprediction_2.png

  4. カテゴリー予測子列を選択する必要があります(前のステップで少なくとも1つの列を数値予測子として選択した場合は、空白のままにしておいても構いません)。次に、予測列の名前を設定する必要があります。この例では、デフォルトの名前をそのまま使用します。

    olsprediction_3.png 

  5. 最後に、線形回帰またはランダムフォレストのいずれかのアルゴリズムを選択します。この例では、線形回帰を選択します。

    Prediction_-_Algorithm.png

  6. 出力DataSetを接続して名前を付ける必要があります。

    olsprediction_5.png

    生成される出力DataSetには、予測列が付加された元のトレーニング用DataSetが含まれます。その後、予測列と「num.claims」列を比較できます。

    olsprediction_6.png


ETLでのデータサイエンスについて学びます。