k-En Yakın Komşu kestirimi

R'de Atamaya Dayalı Eksik Veri Doldurma

Michal Oleszak

Machine Learning Engineer

k-En Yakın Komşu kestirimi

Üç sütunlu bir tablo: A, B ve C. A sütununda bir eksik değer var.

R'de Atamaya Dayalı Eksik Veri Doldurma

k-En Yakın Komşu kestirimi

Üç sütunlu bir tablo: A, B ve C. Eksik değeri içermeyen üç satır renkli vurgulanmış.

Eksik değeri olan her gözlem için:

  1. O gözleme en benzer olan diğer k gözlemi bulun (bağışçılar, komşular).
R'de Atamaya Dayalı Eksik Veri Doldurma

k-En Yakın Komşu kestirimi

Üç sütunlu bir tablo: A, B ve C. Eksik değeri içermeyen üç satır renkli vurgulanmış. A’daki önceki eksik değer, vurgulanan satırlardaki aynı sütunun sayı ortalamasıyla değiştirilmiş.

Eksik değeri olan her gözlem için:

  1. O gözleme en benzer olan diğer k gözlemi bulun (bağışçılar, komşular).
  2. Eksikleri k bağışçıdan toplanan değerlerle değiştirin (ortalama, medyan, mod).
R'de Atamaya Dayalı Eksik Veri Doldurma

Uzaklık ölçüleri

İki gözlem a ve b arasındaki uzaklık:

n sayısal değişken için Öklidyen uzaklık:

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

f faktör değişken için Manhattan uzaklığı:

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

c kategorik değişken için Hamming uzaklığı:

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

İki noktası doğruyla bağlanan bir koordinat sistemi.

İki noktası, dik iki hatla bağlanmış bir koordinat sistemi; sanki noktalar dikdörtgenin iki karşı köşesi.

R'de Atamaya Dayalı Eksik Veri Doldurma

Gower uzaklığı

Üç tür değişken içeren sahte bir veri çerçevesi: sayısal, faktör ve kategorik; her biri farklı renkle vurgulanmış.

R'de Atamaya Dayalı Eksik Veri Doldurma

Gower uzaklığı

Üç tür değişken içeren sahte bir veri çerçevesi: sayısal, faktör ve kategorik; her biri farklı renkle vurgulanmış. Her tür için ilgili uzaklık ölçüsünü gösteren oklar var: sırasıyla Öklidyen, Manhattan ve Hamming. Bu üç uzaklık, üçünün birleşimi olan Gower uzaklığına işaret eder.

R'de Atamaya Dayalı Eksik Veri Doldurma

Uygulamada kNN kestirimi

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
R'de Atamaya Dayalı Eksik Veri Doldurma

Bağışçılara ağırlık verme

  • Bir gözlem için seçilen k komşudan bazıları daha benzerdir.
  • Değerleri birleştirirken yakın komşulara daha fazla ağırlık verebiliriz.
  • Komşuları, her komşuya olan ters uzaklıklarla ağırlıklandırılmış ortalama ile birleştirin.
  • Bu yalnızca sayısal değişkenler için geçerlidir.
nhanes_imp <- nhanes %>% 
  kNN(variable = c("TotChol", "Pulse"),
      k = 5,
      numFun = weighted.mean,
      weightDist = TRUE)
R'de Atamaya Dayalı Eksik Veri Doldurma

Değişkenleri sıralama

  • kNN algoritması değişkenlerde dolaşır ve tek tek kestirir.
  • Her seferinde gözlemler arası uzaklıklar hesaplanır.
  • İlk değişkende çok eksik varsa, ikinci değişken için uzaklıklar çoğu kestirilmiş değere dayanır.
  • kNN çalıştırmadan önce değişkenleri eksik sayısına göre artan sırada sıralamak iyidir.
R'de Atamaya Dayalı Eksik Veri Doldurma

Uygulamada sıralama

vars_by_NAs <- nhanes %>% 
  is.na() %>%
  colSums() %>%
  sort(decreasing = FALSE) %>% 
  names()
nhanes_imp <- nhanes %>% 
  select(vars_by_NAs) %>% 
  kNN(k = 5)
R'de Atamaya Dayalı Eksik Veri Doldurma

Hadi kNN kestirimi yapalım!

R'de Atamaya Dayalı Eksik Veri Doldurma

Preparing Video For Download...