データの正規化コンポーネント

この記事では Azure Machine Learning デザイナーのコンポーネントについて説明します。

このコンポーネントを使用して、正規化によってデータセットを変換します。

正規化は、機械学習のためにデータを準備する一環として、適用されることが多い手法です。 正規化の目的は、値の範囲の差異がゆがんだり、情報を失ったりすることなく、共通スケールで使用できるように、データセット内の数値列の値を変更することです。 正規化は、一部のアルゴリズムでデータを正しくモデル化するためにも必要です。

たとえば、0 から 1 までの範囲の値を含む 1 つの列と、10,000 から 100,000 までの範囲の値を含むもう 1 つの列がある入力データセットがあるとします。 モデリング中のフィーチャーとして値を結合しようとした場合、数値のスケールにおける大きな違いによって問題が発生する場合があります。

正規化では、モデルで使用されるすべての数値列にわたって適用されるスケール内に値を保持しながら、ソース データで一般的な分布と比率を維持する新しい値を作成することで、これらの問題を回避します。

このコンポーネントでは、数値を変換するために、いくつかのオプションが提供されます。

  • すべての値を 0-1 スケールに変換したり、絶対値ではなく、パーセンタイル順位として表すことで、値を変換したりすることができます。
  • 1 つの列、または同じデータセット内の複数の列に正規化を適用できます。
  • パイプラインを繰り返す必要があったり、同じ正規化の手順を他のデータに適用したりする場合は、正規化の変換として手順を保存し、同じスキーマを含む他のデータセットに適用することができます。

警告

一部のアルゴリズムでは、モデルをトレーニングする前に、データを正規化する必要があります。 他のアルゴリズムでは、独自のデータのスケーリングや正規化を実行します。 そのため、予測モデルのビルドで使用する機械学習アルゴリズムを選ぶ場合、トレーニング データに正規化を適用する前に、アルゴリズムのデータ要件を確認してください。

Normalize Data (データの正規化) を構成する

このコンポーネントを使用するときは、1 つの正規化メソッドのみを適用できます。 そのため、同じ正規化メソッドが、選択したすべての列に適用されます。 異なる正規化メソッドを使用するには、Normalize Data (データの正規化) の 2 つ目のインスタンスを使用します。

  1. Normalize Data (データの正規化) コンポーネントをパイプラインに追加します。 Azure Machine Learning で、 [Data Transformation](データ変換) の下の [Scale and Reduce](拡大縮小) カテゴリでそのコンポーネントを見つけることができます。

  2. すべての数値で少なくとも 1 列を含むデータセットに接続します。

  3. 列セレクターを使用して、正規化する数値列を選びます。 個別の列を選択しない場合、既定では、入力にあるすべての数値型の列が含まれ、同じ正規化のプロセスが選択したすべての列に適用されます。

    正規化されるべきではない数値列を含める場合は、予期しない結果につながる可能性があります。 常に、慎重に列を確認してください。

    数値列が検出されない場合、列のメタデータを確認して、列のデータ型がサポートされる数値型であることを確認します。

    ヒント

    特定の型の列が入力として確実に提供されようにするには、Normalize Data (データの正規化) の前に、Select Columns in Dataset (データセット内の列の選択) コンポーネントを使用するようにします。

  4. [Use 0 for constant columns when checked](チェック時に定数の列に 0 を使用する): 任意の数値列に 1 つの変わらない値が含まれるときに、このオプションを選択します。 これにより、このような列は正規化の操作で使用されなくなります。

  5. [Transformation method](変換メソッド) ドロップダウン リストから、すべての選択した列に適用する 1 つの数学関数を選びます。

    • [Zscore] : すべての値を Z スコアに変換します。

      列の値は、次の数式を使用して変換されます。

      Z スコアを使用した正規化

      平均と標準偏差は、各列でそれぞれ計算されます。 母標準偏差が使用されます。

    • [MinMax] : 最小最大ノーマライザーは、すべての特徴を [0,1] 間隔に再スケーリングします。

      最小値が 0 になるように、各機能の値がシフトされ、新しい最大値 (元の最大値と最小値の差) で区切られることで、[0,1] 間隔に縦横比が変更されます。

      列の値は、次の数式を使用して変換されます。

      min-max 関数を使用した正規化

    • Logistic: 列の値は、次の数式を使用して変換されます。

      ロジスティック関数による正規化用の数式

    • LogNormal: このオプションでは、すべての値が対数スケールに変換されます。

      列の値は、次の数式を使用して変換されます。

      式 log-normal distribution

      ここでの μ と σ は、各列ごとに最大推定確率値から経験的に計算される分布のパラメーターです。

    • TanH: すべての値が双曲線正接に変換されます。

      列の値は、次の数式を使用して変換されます。

      tanh 関数を使用した正規化

  6. パイプラインを送信するか、Normalize Data (データの正規化) コンポーネントをダブルクリックして [Run Selected](選択した項目を実行) を選択します。

結果

Normalize Data (データの正規化) コンポーネントでは、2 つの出力が生成されます。

  • 変換後の値を表示するには、コンポーネントを右クリックして [可視化] を選択します。

    既定では、値はその場で変換されます。 変換された値を元の値と比較する場合は、Add Columns (列の追加) コンポーネントを使用して、データセットを再結合し、列を並べて表示します。

  • 同じ正規化メソッドを別のデータセットに適用できるように変換を保存するには、コンポーネントを選択し、右側のパネルの [出力] タブの下にある [データ セットの登録] を選択します。

    ナビゲーション ウィンドウの左側の [変換] グループから保存された変換を読み込み、Apply Transformation を使用することで同じスキーマを使ってデータセットに適用することができます。

次の手順

Azure Machine Learning で使用できる一連のコンポーネントを参照してください。