Imputasi k-Nearest Neighbors

Menangani Data Hilang dengan Imputasi di R

Michal Oleszak

Machine Learning Engineer

Imputasi k-Nearest Neighbors

Tabel dengan tiga kolom: A, B, dan C. Ada satu nilai hilang di kolom A.

Menangani Data Hilang dengan Imputasi di R

Imputasi k-Nearest Neighbors

Tabel dengan tiga kolom: A, B, dan C. Tiga baris tanpa nilai hilang disorot warna.

Untuk tiap observasi dengan nilai hilang:

  1. Temukan k observasi lain (donor, tetangga) yang paling mirip.
Menangani Data Hilang dengan Imputasi di R

Imputasi k-Nearest Neighbors

Tabel dengan tiga kolom: A, B, dan C. Tiga baris tanpa nilai hilang disorot warna. Nilai yang tadinya hilang di A diganti dengan rata-rata angka di kolom yang sama pada baris sorotan.

Untuk tiap observasi dengan nilai hilang:

  1. Temukan k observasi lain (donor, tetangga) yang paling mirip.
  2. Ganti nilai hilang dengan agregasi dari k donor (mean, median, mode).
Menangani Data Hilang dengan Imputasi di R

Ukuran jarak

Jarak antara dua observasi a dan b:

Jarak Euclidean untuk n variabel numerik:

$\sqrt{\Sigma_{i=1}^{n} (a_i - b_i)^{2}}$

Jarak Manhattan untuk f variabel faktor:

$\Sigma_{i=1}^{f} |a_i - b_i|$

Jarak Hamming untuk c variabel kategorikal:

$\Sigma_{i=1}^{c} I(a_i \neq b_i)$

Sistem koordinat dengan dua titik dihubungkan garis lurus.

Sistem koordinat dengan dua titik dihubungkan dua garis tegak lurus, seolah titik-titik itu adalah sudut berseberangan dari sebuah persegi panjang.

Menangani Data Hilang dengan Imputasi di R

Jarak Gower

Sebuah data frame tiruan dengan tiga jenis variabel, masing-masing disorot warna berbeda: numerik, faktor, dan kategorikal.

Menangani Data Hilang dengan Imputasi di R

Jarak Gower

Sebuah data frame tiruan dengan tiga jenis variabel: numerik, faktor, dan kategorikal. Tiap jenis variabel memiliki panah ke metrik jarak terkait: Euclidean, Manhattan, dan Hamming. Ketiga metrik mengarah ke elips “Gower distance” sebagai gabungan ketiganya.

Menangani Data Hilang dengan Imputasi di R

Imputasi kNN: praktik

library(VIM)
nhanes_imp <- kNN(nhanes, k = 5, variable = c("TotChol", "Pulse"))
head(nhanes_imp)
  Age Gender Weight Height Diabetes TotChol Pulse PhysActive TotChol_imp Pulse_imp
1  16   male   73.2  172.0    FALSE    3.00    76       TRUE       FALSE     FALSE
2  17   male   72.3  176.0    FALSE    2.61    74       TRUE       FALSE     FALSE
3  12   male   57.7  158.9    FALSE    4.27    80       TRUE       FALSE     FALSE
4  16   male   88.9  183.3    FALSE    3.62    58       TRUE       FALSE     FALSE
5  13 female   45.1  157.6    FALSE    2.66    92       TRUE       FALSE     FALSE
6  16 female   48.7  158.4    FALSE    4.32    58      FALSE       FALSE     FALSE
Menangani Data Hilang dengan Imputasi di R

Pembobotan donor

  • Dari k tetangga terpilih, sebagian lebih mirip daripada yang lain.
  • Kita dapat memberi bobot lebih pada tetangga yang lebih dekat saat mengagregasi nilainya.
  • Agregasi tetangga dengan mean berbobot, bobot = kebalikan jarak ke tiap tetangga.
  • Hanya berlaku untuk imputasi variabel numerik.
nhanes_imp <- nhanes %>% 
  kNN(variable = c("TotChol", "Pulse"),
      k = 5,
      numFun = weighted.mean,
      weightDist = TRUE)
Menangani Data Hilang dengan Imputasi di R

Mengurutkan variabel

  • Algoritme kNN memproses variabel satu per satu.
  • Setiap kali jarak antar-observasi dihitung.
  • Jika variabel pertama banyak NA, perhitungan jarak untuk variabel kedua akan berbasis banyak nilai imputasi.
  • Sebaiknya urutkan variabel naik menurut jumlah NA sebelum menjalankan kNN.
Menangani Data Hilang dengan Imputasi di R

Mengurutkan variabel: praktik

vars_by_NAs <- nhanes %>% 
  is.na() %>%
  colSums() %>%
  sort(decreasing = FALSE) %>% 
  names()
nhanes_imp <- nhanes %>% 
  select(vars_by_NAs) %>% 
  kNN(k = 5)
Menangani Data Hilang dengan Imputasi di R

Ayo berlatih!

Menangani Data Hilang dengan Imputasi di R

Preparing Video For Download...