Tengo un conjunto de datos con columnas a b c
(3 atributos). a
es numérica y continua, mientras que b
y c
son categóricas cada uno con dos niveles. Estoy utilizando el método K-vecinos más cercano para clasificar a
y b
sobre c
. Entonces, para poder medir las distancias, transformo mi conjunto de datos eliminando b
y agregando b.level1
y b.level2
. Si la observación i
tiene el primer nivel en las b
categorías, b.level1[i]=1
y b.level2[i]=0
.
Ahora puedo medir distancias en mi nuevo conjunto de datos: a b.level1 b.level2
Desde un punto de vista teórico / matemático: ¿Se puede realizar el vecino K más cercano (KNN) con datos binarios y continuos?
Estoy usando el FNN
paquete en R y la funciónknn()
r
classification
k-nearest-neighbour
k.dkhk
fuente
fuente
Respuestas:
Está bien combinar variables categóricas y continuas (características).
De alguna manera, no hay mucho fundamento teórico para un método como k-NN. La heurística es que si dos puntos están cerca uno del otro (de acuerdo con cierta distancia), entonces tienen algo en común en términos de salida. Tal vez sí tal vez no. Y depende de la distancia que uses.
En su ejemplo, define una distancia entre dos puntos y como:( a ′ , b ′ , c ′ )( a , b , c ) ( a′, b′, c′)
Esto corresponde a dar pesos implícitamente a cada característica.
Tenga en cuenta que si toma valores grandes (como 1000, 2000 ...) con una gran variación, entonces los pesos de las características binarias serán insignificantes en comparación con el peso de a . Sólo la distancia entre una y una ' realmente importa. Y al revés: si a toma valores pequeños como 0.001: solo contarán las características binarias.una una una una′ una
Puede normalizar el comportamiento volviendo a pesar: dividiendo cada característica por su desviación estándar. Esto se aplica tanto a las variables continuas como a las binarias. También puede proporcionar sus propios pesos preferidos.
Tenga en cuenta que la función R kNN () lo hace por usted: https://www.rdocumentation.org/packages/DMwR/versions/0.4.1/topics/kNN
Como primer intento, simplemente use básicamente norma = verdadero (normalización). Esto evitará la mayoría de los sin sentido que pueden aparecer al combinar características continuas y categóricas.
fuente
Sí, ciertamente puede usar KNN con datos binarios y continuos, pero hay algunas consideraciones importantes que debe tener en cuenta al hacerlo.
Los resultados van a estar fuertemente informados por las divisiones binarias en relación con la dispersión entre los resultados de valor real (para vectores escalados 0-1, no ponderados), como se ilustra a continuación:
Puede ver en este ejemplo que los vecinos más cercanos de una observación individual por distancia estarían MUCHO más informados por la variable binaria que por la variable de valor real escalada.
Además, esto se extiende a múltiples variables binarias: si cambiamos una de las variables de valor real a binario, podemos ver que las distancias serán mucho más informadas al coincidir en todas las variables binarias involucradas que en la cercanía de los valores reales:
Deberá incluir solo variables binarias críticas: en efecto, está preguntando "¿todas las observaciones que coinciden con esta configuración de variables binarias (si las hay), que tienen los valores reales más cercanos?" Esta es una formulación razonable de muchos problemas que podrían abordarse con KNN, y una formulación muy pobre de otros problemas.
fuente