-
22-10-2019 - |
質問
-1ダウンロートのお気に入り、ほとんどの変数の欠落データを含むデータセットがあります。データセットが次のとおりであると仮定します。
Obs. var1 var2 var3 var4 var5 var6
1 x11 x12 x13 x14 Nan Nan
2 x21 x22 x23 Nan x25 x26
3 x31 x32 x33 x34 x35 x36
...
n xn1 xn2 xn3 xn4 Nan xn6
データセットをD1に分割しました。ここでは、すべての変数の完全なデータがあり、すべてのレコードに少なくとも1つの欠落変数があるD2があります。
KNNを使用してさまざまなモデルを作成しました。最初の観測でVAR5とVAR6の値を予測するために、D1(値のないデータセット)を使用し、VAR1、VAR2、VAR3、およびVAR4でモデル化しました。
最後の観察結果のvar5の値を予測するために、d1を使用し、var1、var2、var3、var4、およびvar5をモデル化しました。
私のアプローチは理にかなっていますか?!どんな提案でも大歓迎です。ありがとうございました。
解決
欠損値に対処するためのさまざまなアプローチがあります。データセットに4つのインスタンスがあるとします。
x1 = [1 2 3]
x2 = [1 ? 3]
x3 = [2 4 2]
x4 = [1 3 3.5]
1つの簡単なアプローチ(医療データセットで特別に人気があります)最も類似したインスタンスに関して値を見つけています。上記の場合、の値が欠落しています
x2
次になります:2(からx1
最も似ています)より洗練されたアプローチは、最も類似したインスタンスの平均化(もちろん、欠損値が数値または少なくとも順序である場合にのみ適用可能)を介した重み付けです。この場合、計算する必要があります。
x2(2) = (2*(1-(0/3)) + 3*(1-(0.5/3)) / (2-(0/3)-(0.5/3))
(x4
同様のケースとしてもカウントされています別のアプローチは、最も類似したインスタンスの間で投票することです(カテゴリ値と序数の両方に適用されます)。
ケース1と3は、あなたが実装したものです(case1 = 1近くの隣人 / case2 = k-nearest Neighbors)
欠損値を処理するには他のアプローチがありますが、データセットで何をするかによって異なります。たとえば、非常に大きなデータセットでは、少なくとも1つの欠損値を含むすべてのインスタンスを単純に無視したり、さらなるプロセスの欠損値(インスタンス全体ではなく)のみを無視したりすることが効率的である場合があります(例: VFI アルゴリズム)