分析および視覚化 - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

分析および視覚化

Amazon SageMaker Data Wrangler には、数回のクリックでビジュアライゼーションとデータ分析を生成できる組み込みの分析が含まれています。独自のコードを使用してカスタム分析を作成することもできます。

データフレームに分析を追加するには、データフローでステップを選択し、[Add analysis] (分析を追加) を選択します。作成した分析にアクセスするには、分析を含むステップを選択し、分析を選択します。

すべての分析はデータセットの 100,000 行を使用して生成されます。

次の分析をデータフレームに追加できます。

  • ヒストグラムや散布図などのデータビジュアライゼーション。

  • エントリ数、最小値と最大値 (数値データの場合)、最も頻度の高いカテゴリ (カテゴリ別データの場合) など、データセットの簡単な要約。

  • 各特徴の重要度スコアを生成するために使用できるデータセットの簡単なモデル。

  • 1 つ以上の特徴がターゲットの特徴と強い相関性があるかどうかを判断するために使用できるターゲットの漏洩レポート。

  • 独自のコードを使用したカスタムビジュアライゼーション。

これらのオプションの詳細については、次のセクションを参照してください。

ヒストグラム

ヒストグラムを使用して、特定の特徴の特徴値の数を確認します。[Color by] (色分け) オプションを使用して特徴間の関係を確認できます。例えば、次のヒストグラムは、2009 年から 2019 年までに Amazon で最も売れた本のユーザー評価のディストリビューションをジャンル別に色分けしてグラフ化したものです。

Data Wrangler コンソールのヒストグラムチャートの例

[Facet by] (ファセット別) 機能を使用して別の列の値ごとに、1 列のヒストグラムを作成できます。例えば、次の図は、Amazon で最も売れている本のユーザーレビューのヒストグラムを示しています。

Data Wrangler コンソールのヒストグラムの例

散布図

[散布図] 機能を使用して特徴間の関係を確認します。散布図を作成するには、[X 軸][Y 軸] でプロットする特徴を選択します。これらの列は両方とも数値型列でなければなりません。

散布図は追加の列で色分けできます。例えば、次の例は、2009 年から 2019 年まで Amazon で最も売れた本のユーザー評価に対するレビュー数を比較した散布図を示しています。散布図は本のジャンル別に色付けされています。

Data Wrangler コンソールの散布図例

さらに、特徴別に散布図をファセット化することもできます。例えば、以下の画像は、同じレビューとユーザー評価の散布図を、年別にファセット化した例を示しています。

Data Wrangler コンソールのファセット化した散布図の例

テーブルの概要

[テーブルの概要] 分析を使用してデータをすばやく要約します。

ログデータや浮動小数点データなどの数値データを含む列の場合、テーブルの概要は各列のエントリ数 (count)、最小値 (min)、最大 (max)、平均値、標準偏差 (stddev) を報告します。

文字列、ブール値、日付/時刻データなどの数値以外のデータを含む列の場合、テーブルの概要はエントリ数 (count)、最小頻度値 (min)、最大頻度値 (max) をレポートします。

クイックモデル

[クイックモデル] ビジュアライゼーションを使用して、データをすばやく評価し、各特徴の重要度スコアを生成します。特徴の重要度スコアは、特徴がターゲットラベルの予測にどの程度有用であるかを示します。特徴の重要度スコアは 0 と 1 の間にあり、数値が大きいほど、その特徴がデータセット全体に対してより重要であることを示します。クイックモデルチャートの上部にはモデルスコアが表示されます。分類問題は F1 スコアを示しています。回帰問題には平均二乗誤差 (MSE) スコアがあります。

クイックモデルチャートを作成する場合は、評価するデータセットと、特徴の重要度を比較するターゲットラベルを選択します。Data Wrangler は次を行います。

  • 選択したデータセット内のターゲットラベルと各特徴に対するデータ型を推論します。

  • 問題のタイプを決定します。Data Wrangler は、ラベル列内の個別の値の数に基づいて、その問題のタイプが回帰または分類のどちらであるかを判断します。Data Wrangler は、カテゴリ別しきい値を 100 に設定します。ラベル列に 100 を超える個別の値がある場合、Data Wrangler はそれを回帰問題として分類します。それ以外の場合、分類問題として分類されます。

  • トレーニング用に特徴とラベルデータを前処理します。使用されるアルゴリズムでは、ベクトルタイプに対するエンコーディング機能と double 型に対するエンコーディングラベルが必要です。

  • 70% のデータでランダムフォレストアルゴリズムをトレーニングします。Spark の RandomForestRegressor は回帰問題のモデルのトレーニングに使用されます。RandomForestClassifier は、分類問題のモデルのトレーニングに使用されます。

  • 残りの 30% のデータでランダムフォレストモデルを評価します。Data Wrangler は F1 スコアを使用して分類モデルを評価し、MSE スコアを使用して回帰モデルを評価します。

  • Gini 重要度メソッドを使用して、各特徴の重要度を計算します。

次の図は、クイックモデル機能のユーザーインターフェイスを示しています。

Data Wrangler コンソールのクイックモデル機能の UI 例

ターゲット漏洩

ターゲット漏洩は、機械学習のトレーニングデータセットにターゲットラベルと強い相関性があっても、実際のデータでは利用できないデータがある場合に発生します。例えば、モデルで予測する列のプロキシとして使われる列がデータセット内に存在するとします。

[ターゲット漏洩] 分析を使用する場合、次を指定します。

  • ターゲット: ML モデルで予測を行う対象の特徴です。

  • 問題のタイプ: 作業している ML 問題のタイプです。問題のタイプは [分類] または [回帰] のいずれかになります。

  • (オプション) 最大特徴数: ビジュアライゼーション内に存在する特徴の最大数であり、ターゲット漏洩のリスクによってランク付けして特徴を表示しています。

分類の場合、ターゲット漏洩分析は、受信者動作特性の下にある領域、または各列の AUC-ROC 曲線を [最大特徴数] まで使用します。回帰の場合、決定の係数、または R2 メトリクスを使用します。

AUC-ROC 曲線は、最大約 1000 行のサンプルで、交差検証を使用して列ごとに個別に計算される予測メトリクスを提供します。スコア 1 は完璧な予測能力を示し、多くの場合はターゲット漏洩を示します。0.5 以下のスコアは、列の情報が、ターゲットの予測に有用な情報を単独で提供できなかったことを示します。列から単独で情報が得られないものの、他の特徴と併用するとターゲットの予測に役立つことがあり、低いスコアは特徴が冗長であることを示す場合があります。

例えば次の図は、糖尿病の分類問題、つまり、糖尿病にかかっているかどうかを予測するターゲット漏洩レポートを示しています。AUC - ROC 曲線は 5 つの特徴の予測能力を計算するために使用され、すべてがターゲット漏洩から保護されると判断されます。

Data Wrangler コンソールのターゲット漏洩レポート例

多重共線性

多重共線性とは、2 つ以上の予測変数が互いに関連している状況です。予測変数は、ターゲット変数を予測するために使用するデータセット内の特徴量です。多重共線性がある場合、予測変数はターゲット変数を予測するだけでなく、相互の予測にもなります。

データ内の多重共線性の尺度として、[分散膨張係数 (VIF)][主成分分析 (PCA)]、または [Lasso 特徴量選択] を使用できます。詳細については、以下を参照してください。

Variance Inflation Factor (VIF)

分散膨張係数 (VIF) は、変数ペア間の共線性の尺度です。Data Wrangler は、変数が互いにどの程度密接に関連しているかを示す尺度として VIF スコアを返します。VIF スコアは、1 以上の正数です。

スコアが 1 の場合、その変数は他の変数と相関していないことを意味します。スコアが 1 より大きい場合、相関が高いことを示します。

理論的には、VIF スコアの値が無限大になることもあります。Data Wrangler はハイスコアを 50 に抑えます。VIF スコアが 50 より大きい場合、Data Wrangler はスコアを 50 に設定します。

次のガイドラインを使用して、VIF スコアを解釈できます。

  • VIF スコアが 5 以下の場合は、変数が他の変数と中程度の相関関係にあることを示します。

  • VIF スコアが 5 以上であれば、変数が他の変数と高い相関関係にあることを示します。

Principle Component Analysis (PCA)

主成分分析 (PCA) は、特徴空間のさまざまな方向に沿ったデータの分散を測定します。特徴空間は、データセット内のターゲット変数を予測するために使用するすべての予測変数で構成されます。

例えば、タイタニック号が氷山に衝突した後に誰が生き残ったかを予測する場合、特徴空間には乗客の年齢、性別、支払った運賃を含めることができます。

PCA は、特徴空間から分散の順序付きリストを生成します。これらの分散は、特異値とも呼ばれます。分散リストの値は 0 以上です。これらの値を使用して、データにどの程度の多重共線性があるかを判断できます。

数値がほぼ一様であれば、データに多重共線性があることはほとんどありません。値間のばらつきが大きい場合、多重共線性が発生しているケースが多くなります。PCA を実行する前に、Data Wrangler は各特徴量の平均値が 0、標準偏差が 1 になるように正規化します。

注記

このような場合の PCA は、特異値分解 (SVD) と呼ばれることもあります。

Lasso feature selection

Lasso の特徴量選択では、L1 正則化手法を使用して、データセット内で最も予測性の高い特徴量のみを含めます。

分類と回帰の両方で、正則化手法は特徴量ごとに係数を生成します。係数の絶対値が特徴量の重要度スコアになります。重要度スコアが高いほど、ターゲット変数の予測精度が高いことを示します。一般的な特徴量選択方法は、Lasso 係数がゼロ以外の特徴量をすべて使用することです。

時系列データの異常を検出する

異常検出ビジュアライゼーションを使用して、時系列データの外れ値を確認できます。異常と判断される基準を理解するには、時系列が予測項と誤差項に分解されることを理解しておく必要があります。時系列の季節性と傾向を予測項として処理します。残差を誤差項として処理します。

誤差項では、残差が異常と見なされるしきい値を、平均値から離れる偏差の標準の数として指定します。例えば、しきい値を 3 標準偏差として指定できます。平均値から 3 標準偏差を超える残差は異常値です。

次の手順に従って [異常検出] 分析を実行できます。

  1. Data Wrangler のデータフローを開きます。

  2. データフローの [データ型][+] を選択し、[分析を追加] を選択します。

  3. [分析タイプ] で、[時系列] を選択します。

  4. [ビジュアライゼーション] で、[異常検出] を選択します。

  5. [異常しきい値] で、値が異常と見なされるしきい値を選択します。

  6. [プレビュー] を選択して、分析のプレビューを生成します。

  7. [追加] を選択して、Data Wrangler データフローに変換を追加します。

時系列データにおける季節的な傾向の分解

季節的な傾向分解ビジュアライゼーションを使用して、時系列データに季節性があるかどうかを判断できます。STL (LOESS を使用した季節的な傾向分解) メソッド使用して分解を実行します。時系列を季節性、傾向、残差コンポーネントに分解します。この傾向は、時系列の長期的な進行を反映しています。季節性は、ある期間内に再発する信号です。時系列から傾向と季節性を削除すると、残差が得られます。

次の手順に従って [季節性傾向分解] 分析を実行できます。

  1. Data Wrangler のデータフローを開きます。

  2. データフローの [データ型][+] を選択し、[分析を追加] を選択します。

  3. [分析タイプ] で、[時系列] を選択します。

  4. [ビジュアライゼーション] で、[季節性傾向分解] を選択します。

  5. [異常しきい値] で、値が異常と見なされるしきい値を選択します。

  6. [プレビュー] を選択して、分析のプレビューを生成します。

  7. [Add] (追加) を選択して、Data Wrangler データフローに変換を追加します。

バイアスレポート

Data Wrangler のバイアスレポートを使用して、データ内の潜在的なバイアスを検出できます。バイアスレポートを生成するには、予測するターゲット列または [Label] (ラベル) を指定し、それに加えてバイアスについて確認する [Facet] (ファセット) または列を指定する必要があります。

[ラベル]: モデルに予測させる特徴量。例えば、顧客コンバージョンを予測する場合、顧客が注文したかどうかに関するデータを含む列を選択できます。また、この特徴がラベルかしきい値かを指定する必要があります。ラベルを指定する場合、データの正の結果の出力を指定する必要があります。顧客コンバージョンの例では、1 が注文列の正の結果であり、過去 3 か月以内に注文した顧客の正の結果を表します。しきい値を指定する場合、正の結果を定義する下限を指定する必要があります。例えば、顧客の注文列に昨年の注文数が含まれている場合、1 を指定します。

[ファセット]: バイアスについて確認する列。例えば、顧客コンバージョンを予測しようとする場合、ファセットが顧客の年齢である可能性があります。データが特定の年齢グループに偏っていると考えられるため、このファセットを選択できます。ファセットが値またはしきい値のどちらとして測定されるのかを特定する必要があります。例えば、1 つ以上の特定の年齢を調べる場合、[Value] (値) を選択し、年齢を指定します。年齢グループを調べる場合は、[Threshold] (しきい値) を選択し、調べる年齢のしきい値を指定します。

特徴とラベルを選択した後、計算するバイアスメトリクスのタイプを選択します。

詳細については、「事前トレーニングデータのバイアスのレポートを生成する」を参照してください。

カスタムビジュアライゼーションを作成する

Data Wrangler フローに分析を追加して、カスタムの可視化を作成できます。適用したすべての変換を含むデータセットは、Pandas DataFrame として利用できます。Data Wrangler は df 変数を使用してデータフレームを格納します。データフレームにアクセスするには、変数を呼び出します。

出力変数 chart を指定して、Altair 出力チャートを保存する必要があります。例えば、次のコードブロックを使用して、Titanic データセットを使用してカスタムヒストグラムを作成できます。

import altair as alt df = df.iloc[:30] df = df.rename(columns={"Age": "value"}) df = df.assign(count=df.groupby('value').value.transform('count')) df = df[["value", "count"]] base = alt.Chart(df) bar = base.mark_bar().encode(x=alt.X('value', bin=True, axis=None), y=alt.Y('count')) rule = base.mark_rule(color='red').encode( x='mean(value):Q', size=alt.value(5)) chart = bar + rule
カスタムビジュアライゼーションを作成するには、次の手順を実行します。
  1. 可視化したい変換を含むノードの横にある [+] を選択します。

  2. [分析を追加] を選択します。

  3. [分析タイプ] には、[カスタム可視化] を選択します。

  4. [分析名] には名前を指定します。

  5. コードボックスにコードを入力します。

  6. [プレビュー] を選択して、ビジュアライゼーションをプレビューします。

  7. [保存] を選択して可視化を追加します。

Data Wrangler コンソールでビジュアライゼーションを追加する方法の例

Python で Altair 可視化パッケージの使用方法がわからない場合は、カスタムコードスニペットを使用して始めることができます。

Data Wrangler には、検索可能な可視化スニペットのコレクションがあります。可視化スニペットを使用するには、[サンプルスニペットを検索] を選択し、検索バーにクエリを指定します。

次の例では、[ビン分割された散布図] のコードスニペットを使用しています。2 次元のヒストグラムをプロットします。

スニペットには、コードに加える必要のある変更を理解するのに役立つコメントが付いています。通常、コードにはデータセットの列名を指定する必要があります。

import altair as alt # Specify the number of top rows for plotting rows_number = 1000 df = df.head(rows_number) # You can also choose bottom rows or randomly sampled rows # df = df.tail(rows_number) # df = df.sample(rows_number) chart = ( alt.Chart(df) .mark_circle() .encode( # Specify the column names for binning and number of bins for X and Y axis x=alt.X("col1:Q", bin=alt.Bin(maxbins=20)), y=alt.Y("col2:Q", bin=alt.Bin(maxbins=20)), size="count()", ) ) # :Q specifies that label column has quantitative type. # For more details on Altair typing refer to # https://altair-viz.github.io/user_guide/encoding.html#encoding-data-types