본문 바로가기

R programming

지도학습(supervised learning)-KNN : 정규화에 대해(Today I learn)

반응형

 knn은 기본적으로 각 데이터 별로 떨어져 있는 거리를 구해 구분을 한다.
여기서 문제가 되는 것은 실제 거리를 나타내는 것이 아니라, 카테고리상으로 구분하기 위해

숫자를 쓴 경우다.

예컨대 질병에 걸렸으면 1, 질병에 걸리지 않았으면 0으로 데이터를 나타낸 경우
0과 1로 나타낸 것은 단순히 구분하기 위함이지, 실제의 차이에 기반을 둔 구분이 아니다.

그렇기 때문에 이러한 차이를 실제 차이로 받아들여서는 안된다. 

이 문제를 해결하기 위해서 dummy coding을 진행하거나 정규화를 한다.

정규화에 대해 얘기해보자.
정규화를 한다는 것은 rescale을 한다는 것이다.

normalize<-function(x) {
 return((x-(min(x))/(max(x)-min(x)))
 }

위와 같은 코드로 rescale을 하게 될 경우

카테고리 데이터가 0과 1에서 존재하듯이 정규화한 데이터도 0,1 사이에 존재하게 되어

정규화가 이루어진다. 

반응형