インジケーター値への変換

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

Azure Machine Learning で [Convert to Indicator Values]\(インジケーター値への変換\) コンポーネントを使用して、カテゴリの値を含む列を、一連のバイナリ インジケーター列に変換する方法について説明します。

[ インジケーター値への変換] 操作を使用すると、カテゴリ データをバイナリまたは複数の値で表されるインジケーター値に変換できます。 このプロセスは、分類モデルでよく使用されるデータの前処理手順の 1 つです。

このコンポーネントでは、インジケーター値への変換に使用される変換の定義も出力されます。 [Apply Transformation]\(変換の適用\) コンポーネントを使用することで、同じスキーマを持つ他のデータセットに対してこの変換を再利用できます。

インジケーター値への変換を構成する方法

  1. インジケーター値への変換を見つけてパイプライン ドラフトにドラッグします。 このコンポーネントは [Data Transformation]\(データの変換\) カテゴリ内にあります。

    Note

    [Convert to Indiciator Values]\(インジケーター値への変換\) コンポーネントの前に [Edit Metadata]\(メタデータの編集\) コンポーネントを使用することで、ターゲット列をカテゴリとしてマーク付けすることができます。

  2. [Convert to Indicator Values]\(インジケーター値への変換\) コンポーネントを、変換する列が含まれるデータセットに接続します。

  3. [列の編集] を使用して、カテゴリ列を 1 つまたは複数選択します。

  4. 新しいブール値の列のみを出力する場合は、 [カテゴリ列を上書き] オプションを選択します。 既定では、このオプションはオフになっています。

    ヒント

    上書きするオプションを選択した場合、ソース列が実際に削除または変更されるわけではありません。 代わりに、新しい列が生成され、出力データセットに表示されます。ソース列は引き続きワークスペースで使用できます。 元のデータを参照する必要がある場合は、いつでも [Add Columns]\(列の追加\) コンポーネントを使用して、ソース列を元に戻すことができます。

  5. パイプラインを送信します。

結果

サーバーが失敗する確率が高、中、低のどれであるかを示すスコアを格納した列があるとします。

サーバー ID 失敗スコア
10301
10302 Medium
10303

インジケーター値に変換を適用すると、デザイナーによって、ラベルの 1 つの列が、ブール値を格納した複数の列に変換されます。

サーバー ID 失敗スコア - 低 失敗スコア - 中 失敗スコア - 高
10301 1 0 0
10302 0 1 0
10303 0 0 1

変換がどのように機能するかを次に示します。

  • リスクについて記述する失敗スコアの列には、3 つの可能な値 (高、中、低) のみがあり、欠損値はありません。 そのため、新しい列がちょうど 3 つ作成されます。

  • 新しいインジケーター列には、ソース列の列見出しと値に基づいて、<ソース列>- <データ値>というパターンを使用した名前が付けられます。

  • 1 つのインジケーター列にのみ 1 が格納されている必要があります。また、各サーバーに設定できるリスク評価は 1 つだけのため、他のすべてのインジケーター列には 0 が格納されている必要があります。

これで、3 つのインジケーター列を機械学習モデルの機能として使用できるようになりました。

このコンポーネントは、次の 2 つの出力を返します。

  • Results dataset (結果のデータセット) :変換されたインジケーター値の列を含むデータセット。 消去の選択がされていない列も "渡されます"。
  • インジケーター値への変換:インジケーター値への変換に使用されるデータ変換で、それをワークスペースに保存して、後で新しいデータに適用することができます。

保存されたインジケーター値の操作を新しいデータに適用する

インジケーター値の操作を頻繁に繰り返す必要がある場合は、データ操作手順を変換として保存し、それを同じデータセットで再利用することができます。 これは、同じスキーマを持つデータを頻繁に再インポートし、その後クリーンアップする必要がある場合に便利です。

  1. [Apply Transformation]\(変換の適用\) コンポーネントをパイプラインに追加します。

  2. 消去するデータセットを追加し、データセットを右側の入力ポートに接続します。

  3. デザイナーの左側ペインで [データの変換] グループを展開します。 保存した変換を見つけ、それをパイプラインにドラッグします。

  4. 保存した変換を Apply Transformation (変換の適用) の左側の入力ポートに接続します。

    保存した変換を適用するときに、どの列を変換するかを選択することはできません。 これは、変換が定義されていて、元の操作で指定されたデータ型に自動的に適用されるからです。

  5. パイプラインを送信します。

テクニカル ノート

このセクションには、実装の詳細、ヒント、よく寄せられる質問への回答が含まれています。

使用上のヒント

  • カテゴリとマーク付けされている列のみをインジケーター列に変換できます。 次のエラーが表示される場合は、選択した列のいずれかがカテゴリではない可能性があります。

    エラー 0056: Column with name <column name> is not in an allowed category. (<列名> という名前の列は、許可されたカテゴリに含まれていません。)

    既定では、ほとんどの文字列型の列は文字列機能として処理されるため、メタデータの編集を使用して、それらをカテゴリとして明示的にマーク付けする必要があります。

  • インジケーター列に変換できる列数に制限はありません。 ただし、値の各列にインジケーター列が複数生成される可能性があるため、一度にいくつかの列だけを変換して確認することができます。

  • 列に欠損値が含まれる場合は、[<ソース列> Missing] (欠損値)という名前で、欠損カテゴリに対して別個のインジケーター列が作成されます。

  • インジケーター値に変換する列に数値が含まれている場合、他の機能列と同様にカテゴリとしてマーク付けされている必要があります。 それを行った後、数値は不連続値として扱われます。 たとえば、範囲が 25 ~ 30 の MPG 値を持つ数値列がある場合、不連続値ごとに新しいインジケーター列が作成されます。

    Make 高速道路燃費 (マイル/ガロン) -25 高速道路燃費 (マイル/ガロン) -26 高速道路燃費 (マイル/ガロン) -27 高速道路燃費 (マイル/ガロン) -28 高速道路燃費 (マイル/ガロン) -29 高速道路燃費 (マイル/ガロン) -30
    Contoso 社の車 0 0 0 0 0 1
  • データセットに追加されるディメンション数が多くなりすぎないようにするには: まず、列内の値の数を調べて、データを適切に値域ごとにまとめるか、量子化することを推奨します。

次のステップ

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