Null の代入
欠損値が多すぎると、機械学習モデルの品質に悪影響を及ぼす可能性があります。代入とは、null 値として知られる欠損値を埋める方法のことです。データベース エラー、ユーザーがフォームの一部を入力していない、新しいデータを収集し始めたらデータセットの古いレコードに新しいデータポイントがないなど、データの欠落には多くの理由が考えられます。
代入がデータに与える影響について理解することが重要です。代入は行または列の予測力を保持しますが、以前は存在しなかったパターンを作成したり、存在していたパターンにノイズを追加したりする可能性もあります。そのため、データの信頼性は低下してしまいます。
データの収集方法を見直して、データの完成度を高め、必要に応じて新しいプロセスを導入する必要がある場合があります。空の値の表現を維持する場合は、null を「other」または「unknown」の値で埋めることができます。
自動前処理中の Null 代入
Qlik AutoMLでは、自動データ前処理で null 代入を使用して、トレーニング用のデータセットを準備します。自動データ前処理では、値の欠落が 50% を超える列を除外し、欠損値を代入することによって null 値は処理されます。カテゴリ特徴量の欠損値は値「その他」で補完され、数値特徴量の欠損値は平均値で補完されます。
自動設計特徴量とタイムアウェア トレーニングには追加の考慮事項が適用されます。
前処理についての詳細は、「自動データ準備と変換」を参照してください。
自動設計特徴量
自動特徴量エンジニアリングにより、AutoML は既存の親特徴から新しい特徴を作成します。自動設計特徴量の場合、null 代入は次のように実行されます。
-
自動設計された日付特徴量をトレーニングに含める場合、これらの特徴料の null 代入プロセスは数値特徴量の場合と同じです。
-
代わりに親日付特徴量を使用する場合、null 代入処理はカテゴリ特徴量の場合と同じです。
-
自由テキストとして扱われるカテゴリ特徴量の場合、null 代入はカテゴリ特徴量の場合と同じです。
タイムアウェア トレーニング
タイムアウェア トレーニングがオンになっている場合、null 代入は次のように実行されます。
-
トレーニング データセット内の選択された日付インデックスに null 値を持つ行は、前処理中に削除されます。これらの行はモデルのトレーニングには使用されません。
-
数値特徴量の場合、null 代入は線形補間で実行されます。線形補間は、自動設計された日付特徴量にも使用されます。
-
カテゴリ特徴量の場合、null 代入プロセスは、タイムアウェア トレーニングを使用していない場合と同じです。
-
自動特徴量エンジニアリングなしで日付特徴量を使用する場合、null 代入プロセスはカテゴリ特徴量の場合と同じです。
-
自由テキストとして扱われるカテゴリ特徴量の場合、null 代入はカテゴリ特徴量の場合と同じです。
タイムアウェア トレーニングの詳細については、「タイムアウェア モデルの作成」を参照してください。
代入の仕組み
null の代入では、次の方法が一般的です。
数値
デフォルトでは、平均値を代入することを推奨します。欠損値が正規分布している場合、シーソーの中心に重りを追加するようなもので、どちら側にも重みは影響しません。ただし、その値が何を表そうとしているかを常に考慮する必要があります。例えば、販売データで販売価格の値の一部が null である場合、それはデータベース エラーが原因であるか、それとも購入者が支払いにクーポンを使用したからであるかを考慮します。0、または平均値以外の値のどちらが適切でしょうか。
カテゴリ値
カテゴリ値の適切なデフォルトは、別のカテゴリを追加して、それを「Other」、「Unknown」、あるいは「Missing」と呼ぶことです。欠損値がランダムに分布している場合、このカテゴリは追加の分散を保持できます。また、欠損値とターゲット値の間に有意義な関係がある場合は、特徴量の重要度が増加します。
フォールバックは、最頻値の形で平均を代入することです。数値の場合と同様に、値が実際に何を表そうとしているのか、なぜその値が欠落しているのかを常に考慮することが重要です。欠損値のほとんどが最頻値であることがわかっている場合は、最頻値で代入できます。不明または不確実な場合は、データセットの新しい一意の値であるフィラー テキストを使用してカテゴリ値を代入できます。
数値の代入による影響
「数値の代入 1」には、最も適合する線を含む散布図が示されています。カテゴリ (x) 軸に沿って数値があり、値 (y) 軸に沿ってターゲット値があります。うまく適合しているように見えますが、x が既知のデータ ポイントのみを考慮しています。
「数値の代入 2」には、平均値が代入されています。ただし、欠損値はランダムではないようです。そのため、最も適合する線が歪められ、ノイズが追加され、モデルの全体的な正確度が低下しています。
「数値の代入 3」のチャートには、欠損値がランダムに分布している場合に平均値を代入するとどうなるかが示されています。つまり、値が存在するか欠落しているかを認識することによって得られる付加的な知識がない場合です。欠損値がランダムに分布している場合、最も適合する線は変更されません。平均値の代わりに 0 を代入した場合、「数値の代入 2」と同様に、最も適合する線は変更されます。
例: 融資の資格
例えば、年収が x で、融資を受けることができる金額が y であるとします。収入が多い人ほど、受けられる融資の金額は多くなるという関係が予想されます。そのパターンは、上記の「数値の代入 1」に似ています。
収入が少ない人ほど、年収を提示する可能性が低いと想像してみてください。この場合、特定の理由により x 値が欠落します。これらの値に平均値を代入すると、モデルの結果に歪みが生じます。結果は、「数値の代入 2」のようなものになります。
ここで、データベース内の一部のレコードがランダムに削除されたと考えてみましょう。レコードには、収入に関するデータは含まれていましたが、人物のレコードは含まれていませんでした。したがって、x 値はランダムに null になります。その影響は「数値の代入 3」に示されており、欠損値を安全に代入できるケースです。
もう 1 つ考慮が必要な点は、平均値ではなく 0 が代入された場合にどうなるかということです。融資の資格の例では、ある人の年収が 0 であるというのは、おそらく正確な表現ではありません。「数値の代入 2」と同様に、モデルに歪みが生じます。
カテゴリ値の代入による影響
上記の数値のケースでは、平均値を使用して欠損値を代入しました。カテゴリ値に対する簡単な方法は、最も頻繁に発生する値である最頻値を取ることです。最頻値を代入する際に見られる課題の一部は、数値に平均値を代入する場合と同様です。
以下のチャートでは、Missing_1 の欠損値はターゲットに関連するパターンがありますが、Missing_2 はランダムに分布しています。これは、Missing_2 が全体の平均的なターゲット値と一致するためです。Missing_1 は「数値の代入 2」に似ており、Missing_2 は「数値の代入 3」に似ています。
数値の例との違いは、この場合 Missing_1 と Missing_2 の両方がパターン認識を歪めていることです。データのサブセットであるカテゴリ B にのみ歪みが生じ、最大のカテゴリであるため、最頻値で代入する場合の代入値になります。
単一の値とターゲット値の間の関係を歪めることが代入における唯一のリスクではありませんが、最も一般的で評価しやすいリスクの 1 つです。 その他のリスクは、単にノイズを追加して正確度を低下させる傾向があります。幸いなことに、比較的まばらな軸を削除することで、歪みのリスクは大幅に軽減できます。列または行でどの程度のスパース性を許容するかについてはよく議論されますが、値を代入するとデータが歪められ、データが表現しようとするものを表すことができなくなる可能性があることについてはあまり議論されません。