Clean Missing Data (見つからないデータの消去) コンポーネント
この記事では Azure Machine Learning デザイナーのコンポーネントについて説明します。
このコンポーネントを使用して、欠損値を削除、置換、または推測します。
データ サイエンティストは多くの場合、欠損値がないかデータをチェックしてから、さまざまな操作を実行して、データを修正したり、新しい値を挿入したりします。 このような消去操作の目的は、モデルをトレーニングするときに発生する可能性がある、見つからないデータに起因する問題を回避することです。
このコンポーネントでは、欠損値を "消去" するために、次のような複数の種類の操作をサポートしています。
- 欠損値をプレースホルダー、平均値、またはその他の値で置換する
- 欠損値がある行と列を完全に削除する
- 統計的手法に基づいて値を推測する
このコンポーネントを使用しても、ソース データセットは変更されません。 代わりに、以降のワークフローで使用できる新しいデータセットがワークスペース内に作成されます。 新しい、消去されたデータセットを再利用するために保存することもできます。
このコンポーネントは、欠損値を消去するために使用される変換の定義も出力します。 [Apply Transformation]\(変換の適用\) コンポーネントを使用することで、同じスキーマを持つ他のデータセットに対してこの変換を再利用できます。
Clean Missing Data (見つからないデータの消去) の使用方法
このコンポーネントでは、消去操作を定義できます。 後で新しいデータに適用できるように、消去操作を保存することもできます。 消去プロセスを作成して保存する方法については、次に示すセクションを参照してください。
重要
欠損値の処理に使用する消去方法は、結果に大きく影響します。 さまざまな方法を試すことをお勧めします。 特定の方法の使用の妥当性と、結果の質の両方を考慮してください。
欠損値の置換
Clean Missing Data (見つからないデータの消去) コンポーネントをデータのセットに適用するたびに、同じ消去操作が選択したすべての列に適用されます。 そのため、さまざまな方法を使用して異なる列を消去する必要がある場合は、コンポーネントの別のインスタンスを使用します。
Clean Missing Data (見つからないデータの消去) コンポーネントをパイプラインに追加し、欠損値があるデータセットを接続します。
[Columns to be cleaned]\(クリーニング対象の列\) には、変更する欠損値を含む列を選択します。 複数の列を選択できますが、選択したすべての列で同じ置換方法を使用する必要があります。 そのため、通常は文字列の列と数値の列を個別に消去する必要があります。
たとえば、すべての数値の列で欠損値を確認するには、次の手順を実行します。
[Clean Missing Data]\(見つからないデータの消去\) コンポーネントを選択し、コンポーネントの右側のパネルにある [列の編集] をクリックします。
[Include]\(含める\) には、ドロップダウン リストから [Column type]\(列の型\)、[Numeric]\(数値\) の順に選択します。
選択した消去方法または置換方法は、いずれも選択範囲内のすべての列に適用できる必要があります。 いずれかの列内のデータが指定された操作と互換性がない場合、コンポーネントはエラーを返してパイプラインを停止します。
[Minimum missing value ratio]\(欠損値の最小比率\) には、操作を実行するために必要な欠損値の最小数を指定します。
このオプションを [Maximum missing value ratio]\(欠損値の最大比率\) と組み合わせて使用して、データセットで消去操作が実行される条件を定義します。 値が欠落している行が多すぎるまたは少なすぎる場合は、操作を実行できません。
入力した値は、列内のすべての値に対する欠損値の比率を表します。 既定では、[Minimum missing value ratio]\(欠損値の最小比率\) プロパティは 0 に設定されています。 これは、欠損値が 1 つだけの場合でも、欠損値が消去されることを意味します。
警告
指定された操作を適用するためには、各列でこの条件を満たす必要があります。 たとえば、3 つの列を選択し、欠損値の最小比率の値を .2 (20%) に設定しましたが、実際には 20% の欠損値があるのは 1 列しかないとします。 この場合、クリーンアップ操作は、欠損値が 20% を超えている列にのみ適用されます。 そのため、他の列は変更されません。
欠損値が変更されたかどうか不明な場合は、[欠損値インジケーター列の生成] オプションを選択します。 列がデータセットに追加され、各列が最小と最大の範囲に指定された条件を満たしているかどうかを示します。
[Maximum missing value ratio]\(欠損値の最大比率\) には、実行される操作に渡すことができる欠損値の最大数を指定します。
たとえば、欠損値が含まれている行が 30% 以下の場合にのみ欠損値の置換を実行して、欠損値が含まれている行が 30% を超えている場合には、値をそのままにすることができます。
列内のすべての値に対する欠損値の比率として値を定義します。 既定では、[Maximum missing value ratio]\(欠損値の最大比率\) は 1 に設定されています。 これは、列の値の 100% が欠落している場合でも、欠損値が消去されることを意味します。
[Cleaning Mode]\(消去モード\) には、欠損値を置換または削除するための次のいずれかのオプションを選択します。
カスタム代替値: このオプションを使用して、すべての欠損値に適用するプレースホルダーの値 (0、NA など) を指定します。 置換として指定する値は、列のデータ型と互換性がある必要があります。
平均値で置換: 列の平均を計算し、平均を列の各欠損値の置換値として使用します。
Integer、Double、Boolean のいずれかのデータ型を持つ列にのみ適用されます。
中央値で置換: 列の中央値を計算し、中央値を列のすべての欠損値の置換として使用します。
Integer または Double のデータ型を持つ列にのみ適用されます。
モードで置換: 列のモードを計算し、モードを列内のすべての欠損値の置換値として使用します。
Integer、Double、Boolean、Categorical のいずれかのデータ型を持つ列に適用されます。
行全体を削除: 1 つ以上の欠損値を含むデータセット内の任意の行を完全に削除します。 これは、欠損値がランダムに欠落していると考えられる場合に便利です。
列全体を削除: 1 つ以上の欠損値を含むデータセット内の任意の列を完全に削除します。
[Custom substitution value]\(カスタムの置換値\) オプションを選択している場合は、[Replacement value]\(置換値\) オプションを使用できます。 列内のすべての欠損値の置換値として使用する新しい値を入力します。
このオプションは、Integer、Double、Boolean、String のいずれかのデータ型を持つ列でのみを使用できることに注意してください。
欠損値インジケーターを生成: 列の値が欠損値の消去の条件を満たしているかどうかについて、いくつかのインジケーターを出力する場合は、このオプションを選択します。 このオプションは、新しい消去操作を設定し、設計どおりに動作させる場合に特に便利です。
パイプラインを送信します。
結果
このコンポーネントは、次の 2 つの出力を返します。
クリーン済みデータセット:指定したとおりに処理された欠損値を含む選択した列と、インジケーター列 (このオプションを選択した場合) で構成されるデータセット。
消去の選択がされていない列も "渡されます"。
クリーン処理変換: 消去に使用するデータ変換で、ワークスペースに保存して、後で新しいデータに適用できます。
保存した消去操作を新しいデータに適用する
データの消去操作を頻繁に繰り返し実行する必要がある場合は、データ消去のレシピを変換として保存して、同じデータセットで再利用することをお勧めします。 同じスキーマを持つデータを頻繁に再インポートしてから消去する必要がある場合は特に、消去変換を保存しておくと便利です。
[Apply Transformation]\(変換の適用\) コンポーネントをパイプラインに追加します。
消去するデータセットを追加し、データセットを右側の入力ポートに接続します。
デザイナーの左側のウィンドウで Transforms (変換) グループを展開します。 保存した変換を見つけ、それをパイプラインにドラッグします。
保存した変換を Apply Transformation (変換の適用) の左側の入力ポートに接続します。
保存した変換を適用するときに、変換を適用する列を選択することはできません。 これは、変換が既に定義されていて、元の操作で指定された列に自動的に適用されるからです。
ただし、数値列のサブセットに変換を作成する場合、 この変換を列の型が混在するデータセットに適用することができ、エラーが発生することはありません。これは、欠損値が一致する数値列でのみ変更されたからです。
パイプラインを送信します。
次のステップ
Azure Machine Learning で使用できる一連のコンポーネントを参照してください。