K 최근접 이웃(K nearest neighbors : KNN)
거리를 기반으로 가장 가까운 최근접 이웃의 클래스를 또는 그 평균을 할당하는 기법으로 간단하다는 장점이 존재한다.
거리를 사용해야하기 때문에 예측변수들은 모두 수치형 변수여야만 한다.
주로 K 최근접 이웃 보다는 KNN으로 불린다.
설명
알고리즘 원리
1. 예측변수들이 유사한 K개의 레코드를 찾는다.
2(분류). 유사한 레코드들 중 다수가 속한 클래스틀 찾은 후 새 레코드를 해당 클래스에 할당한다. 또는 그 확률값을 할당한다.(유사 레코드가 1인 경우가 23/25라면 이 확률을 할당)
2(예측, KNN regression 이라고도 한다). 유사한 레코드들의 평균을 찾아 새로운 레코드의 예측값으로 사용한다.
용어
이웃(neighbors) : 예측변수에서 값이 유사한 레코드
거리지표(distance metric) : 레코드 사이의 거리
K : KNN에서 사용하는 이웃의 개수
거리지표
KNN알고리즘에서 근접성(또는 유사성)은 거리 지표를 사용하여 확인할 수 있다.
대표적으로 사용하는 3가지 거리는 정리해보았다.
유클리드 거리(Euclidean distance)
L2 distance라고도 한다.
두 점 사이의 직선 거리를 구하는 방법으로
가장 많이 쓰이는 지표로, 서로의 차이를 제곱합한 후 제곱근을 취하면 구해진다
sqrt((x1-y1)^2 + ... + (xn-yn)^2)
맨하탄 거리(Manhattan distance)
L1 distance라고도 한다.
맨하탄 거리는 유클리드와 다르게 한 번에 한 축씩을 이동하므로 두 점 사이의 직선 거리는 아니다.
abs(x1-y1) + ... + abs(xn-yn)
마할라노비스 거리(Mahalanobis distance)
두 변수 간의 상관성까지 고려하는 거리 계산법이다. 다른 두 방법은 변수간의 상관성이 존재할 경우 그 값에 가중치가 높게 잡히는 문제가 있다.
마할라노비스 거리는 많은 계산이 필요하고 복잡성이 증가한다는 단점이 존재한다.
설명 나중에 추가하기
추가 : KNN을 통한 피쳐 엔지니어링
마치 스태킹앙상블을 사용하듯, KNN의 예측 결과를 변수로 사용할 수 있다.
1. KNN 알고리즘을 통해 타겟으로 분류할 결과에 대한 확률값을 얻는다.
2. 나온 결과값을 다른 알고리즘의 변수로 사용한다.
이 방법은 같은 예측변수들을 다시 재사용하는 것과 같지만(다중공선성이 일어날 것 같지만)
KNN은 소수의 근접 레코드들로만 얻은 매우 지협적인 정보라 다중공선성등의 문제가 없다고 한다.