그렇습니다. 바이너리 및 연속 데이터와 함께 KNN을 사용할 수 있지만 그렇게 할 때 고려해야 할 중요한 사항이 있습니다.
아래 그림과 같이 실제 결과 (0-1 스케일, 비가 중 벡터에 대한) 사이의 분산에 대한 이진 분할에 의해 결과에 많은 정보가 제공됩니다.
이 예에서 거리 별 개별 관측치의 가장 가까운 이웃은 척도 화 된 실제 값 변수보다 이진 변수에 의해 훨씬 더 많은 정보를 얻을 수 있음을 알 수 있습니다.
또한 이것은 여러 이진 변수로 확장됩니다. 실제 값 변수 중 하나를 이진으로 변경하면 실제 값에 가까운 것보다 관련된 모든 이진 변수를 일치시켜 거리가 훨씬 더 많은 정보를 얻을 수 있음을 알 수 있습니다.
중요한 이진 변수 만 포함하고 싶을 것입니다. 실제로 "가장 가까운 실제 값을 갖는 이진 변수의 구성 (있는 경우)과 일치하는 모든 관측치에 대해 묻고 있습니까?" 이것은 KNN으로 해결할 수있는 많은 문제를 합리적으로 구성한 것이며 다른 문제는 매우 열악한 구성입니다.
#code to reproduce plots:
library(scatterplot3d)
scalevector <- function(x){(x-min(x))/(max(x)-min(x))}
x <- scalevector(rnorm(100))
y <- scalevector(rnorm(100))
z <- ifelse(sign(rnorm(100))==-1, 0, 1)
df <- data.frame(cbind(x,y,z))
scatterplot3d(df$x, df$z, df$y, pch=16, highlight.3d=FALSE,
type="h", angle =235, xlab='', ylab='', zlab='')
x <- scalevector(rnorm(100))
y <- ifelse(sign(rnorm(100))==-1, 0, 1)
z <- ifelse(sign(rnorm(100))==-1, 0, 1)
df <- data.frame(cbind(x,y,z))
scatterplot3d(df$x, df$z, df$y, pch=16, highlight.3d=FALSE,
type="h", angle =235, xlab='', ylab='', zlab='')