blog

KNNImputer:欠損値補間の信頼できる方法

概要\nデータの欠損値を埋める学習\n欠損値とそのタイプの理解\n導入\nscikit learnは欠損値を補間するために広く使われている手法です。従来の補間手法に代わるものとして広く知られています。...

Sep 20, 2020 · 6 min. read
シェア

概要

  • KNNImputerでデータの欠損値を埋める学習

  • 欠損値とそのタイプについて

プレゼンテーション

scikit learnによるKNNImputerは、広く使われている欠損値補間手法です。従来の補間手法の代替として広く考えられています。

今日の世界では、データは分析、洞察の生成、理論の検証などのために多くの情報源から収集されます。通常、さまざまな情報源から収集されたデータには、いくつかの情報が欠落しています。これは、データの収集や抽出のプロセスに問題があるためで、人為的なミスである可能性もあります。

このような欠損値を扱うことは、データの前処理において重要なステップとなります。補間方法の選択は、作業に大きな影響を与える可能性があるため、非常に重要です。

ほとんどの統計アルゴリズムや機械学習アルゴリズムは、データセットの完全な観測を対象としています。そのため、欠損情報を扱うことが重要になります。

統計学の文献のいくつかは、欠損値のソースとこの問題を克服する方法を扱っています。最良の方法は、推定値を用いてこれらの欠損オブザベーションを推定することです。

この論文では、隣接するデータ点からの観測値を用いてデータセット中の欠損値を埋めるためのガイドを提示します。この目的のために、scikit-learnのKNNImputer実装を使用します。

カタログ

  • 自由度問題

  • 欠損値のパターン

  • kNNアルゴリズムの本質

  • 欠損値がある場合の距離計算

  • KNNImputer補間手法

自由度問題

データセット内の欠損値は、データサイエンティストにとってスズメバチの巣です。欠損値のある変数は、簡単に対処する方法がないため、非常に重要な問題となります。

一般に、データ中の欠損オブザベーションの比率がオブザベーションの合計数に対して小さい場合、これらのオブザベーションは単純に除去できます。

しかし、これは一般的ではありません。欠損値を含む行を削除すると、有用な情報が失われる可能性があります。

統計的には、独立したメッセージエントリーの数が少なくなるにつれて、自由度は小さくなります。

欠損値のパターン

実際のデータセットでは、欠損値は心配の種です。変数に関するオブザベーションを収集するとき、以下のようなさまざまな理由で値が欠落することがあります。

  • 機械・設備のエラー

  • 研究者のエラー

  • 連絡が取れなかった回答者

  • 偶然の削除

  • インタビュー対象者の中には忘れっぽい人もいます

  • 会計エラーなど

欠損値の種類は通常次のように分類されます:

完全にランダムな欠損

これは、欠損値が他の変数やオブザベーションの特性に隠れた依存性がないときに起こります。医師がICUに入院した10人目の患者の年齢を記録するのを忘れた場合、欠損値の存在は患者の特性には依存しません。

ランダム欠損

この場合、欠損値の確率は観測可能なデータの特徴に依存します。調査データでは、高所得の回答者が所有する不動産の数を研究者に知らせることはまずありません。所有物件数という変数の欠損値は、所得変数に依存します。

非ランダム欠損

これは、欠損値がデータの特性と欠損値の両方に依存する場合に発生します。このような場合、欠損値が生成されるメカニズムを決定することは困難です。例えば、血圧のような変数の欠損値は、血圧値に一部依存しているかもしれません。

kNNアルゴリズムの本質

欠損値の補間に使用される一変量法は、値を推定するための単純な方法であり、必ずしも正確な情報を提供するとは限りません。

例えば、道路を走る車の密度と大気中の汚染物質のレベルに関連する変数があり、汚染物質のレベルに関する観測が少ないと仮定すると、平均値や中央値を用いて汚染物質のレベルを推定することは必ずしも適切な戦略とは限りません。

この場合、k-最近傍のようなアルゴリズムが欠損データの値を補間するのに役立ちます。

社会学者やコミュニティ研究者は、人間がコミュニティで生活するのは、隣人が様々な活動に参加することで、安心感を得たり、コミュニティへの愛着を持ったり、対人関係を築いたりすることで、コミュニティ・アイデンティティの感覚を生み出すからだと考えています。

データ上で動作する同様の補間手法は、k-最近傍であり、これは距離測定によって近隣のポイントを識別し、近隣のオブザベーションの完全な値を用いて欠損値を推定することを可能にします。

例えば、家にある必要な食料品のストックがなくなってしまったとしましょう。そこで、あなたは近所の人に助けを求め、彼らが差し出すものを何でも受け入れることにしました。

これは3-NNからの補間の例です。

代わりに、あなたに助けを求める3人の隣人を特定し、3人の最も近い隣人から提供されたアイテムを組み合わせることを選択した場合、これは3-NN補間の例です。

同様に、データセット内の欠損値は、データセット内のk近傍近傍の観測値を用いて代入することができます。データセット内の近傍は、ある距離メトリック(通常はユークリッド距離)によって識別されます。

上の図はkNNの働きを表しています。この例では、楕円の領域は緑色の四角のデータ点の近傍点を表します。距離は近傍点の識別に使われます。

kNN法の背後にある考え方は、空間的に類似または類似しているデータセット内のk個のサンプルを識別することです。これらの「k」個のサンプルは、欠損データポイントの値を推定するために使用されます。各サンプルの欠損値は、データセット内で見つかった「k」個の近傍サンプルの平均値を用いて補間されます。

欠損値がある場合の距離計算

これを理解するために例を見てみましょう。2次元空間における1組のオブザベーションを考えましょう.これらの点のグラフ表現は次のようになります:

ユークリッド距離に基づく最短距離の点が最近接点とみなされます。例えば、点Aの1最近傍は点Bで、点Bの1最近傍は点Cです。

欠損座標がある場合、ユークリッド距離は欠損値を無視し、欠損していない座標の重みをスケールアップして計算されます。

その中には

例えば、2点と2点の間のユークリッド距離は次のようになります:

ここで、sklearnパッケージのpairwise metricモジュールの関数を使用して、欠損値を持つ2点間の距離を計算します。

XパラメータとYパラメータで与えられる2つの1次元配列に適用できますが、多次元の1つの配列にも適用できます。

したがって、距離行列は、オブザベーションのペアの間のユークリッド距離を表す2×2の行列です。さらに、合成行列の対角要素は、1つのオブザベーションとそれ自身との間の距離を表すので0です。

KNNImputer補間手法

kNNImputerは、オブザベーションで発生する欠損値の推定を助けるために、ユークリッド距離行列を通して最近傍を見つけます。

この場合、上のコードはオブザベーション1とオブザベーション3の距離が最も近いことを示しています。

したがって、観測値1の欠損値を1-最近傍で補間すると3の推定値が得られ、これは観測値3の2次元目の推定値と同じです。

さらに、観察1の欠損値を推定するために2-最近傍を使用すると、1.5の推定値が得られます。これは観察2と3の2番目の次元の平均、つまり合計と同じです。

ここまでは、KNNImputerによる連続変数の欠損値の取り扱いについて説明しました。以下では、離散変数の欠損値を含むデータ・フレームを作成します。

離散変数の欠損値を埋めるためには、離散値を数値としてエンコードする必要があります。これは、カテゴリから数値変数へのマッピングを使用して実行できます。

終了

本稿では、欠損値、その原因、欠損値を埋めるためのKNNImputerの使用方法について学びます。kNNアルゴリズムを使用して欠損値を埋めるためのkの選択は、論点になるかもしれません。

さらに、異なるk値を使用した補間後のモデルをテストするために、交差検証を使用する必要があることが示されました。欠損値の補間は発展途上の研究分野ですが、kNNはシンプルで効果的な戦略です。

Read next

クロスプラットフォームのハイブリッド・アプリケーションをビルドする

I. はじめに\nウィンドウシステムの会社のプロジェクトのアプリケーションのいくつかのため、異なるプラットフォーム用のアプリケーションを構築する必要があり、最終的に電子を使用することを決定しました。\n注:バージョンの問題、またはその他のエラーに起因するAPIを回避するために、テキストで使用されるバージョンだけでなく、最新バージョンはvです。

Sep 20, 2020 · 6 min read