¿Alguien tiene alguna opinión sobre la validez de este método?
El principal problema que veo es que la regresión lineal propone dividir el espacio muestral en dos (los dos "lados" de un hiperplano), mientras que los vecinos más cercanos lo dividirán en regiones (quizás muchas), dependiendo de cómo se muestreen las diferentes clases en el espacio muestral.
El peor escenario que puedo ver es el siguiente. Tus datos muestran una distribución que KNN puede manejar bien, pero que una regresión lineal realizará miserablemente, como el tablero de ajedrez de la siguiente imagen (el código está al final del post). Aunque esto es una caricatura, muchos otros conjuntos de datos mostrarán el mismo comportamiento.
Una regresión lineal descartaría ambas características si selecciona sus características en función de los valores p :
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.538955 0.041424 37.151 <2e-16 ***
x1 -0.037032 0.027543 -1.345 0.179
x2 -0.006612 0.027526 -0.240 0.810
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Si decide ponderar las características basándose en las ponderaciones de la regresión lineal, tenga en cuenta que las ponderaciones pueden ser de un orden de magnitud diferente, ¡aunque no hay razón para que lo sean! Esto equivaldría a proyectar sus datos sobre un único eje, sobre el que el KNN no podría aprender nada relevante (piense en los colores de los puntos si los mira desde una única dimensión).
Por lo tanto, yo no utilizaría este enfoque para calibrar los pesos de un KNN (o seleccionar los atributos).
Editar
Puede aumentar cualquier medida de bondad de ajuste añadiendo variables que muestren una dependencia lineal con respecto al objetivo. En este caso, la bondad del ajuste ya no sería trivial, pero se perdería la información procedente de las dos primeras variables.
En KNN ponderado
Sin embargo, existe la posibilidad de cambiar la función de distancia, de una distancia euclidiana a una distancia en la que las dimensiones tienen pesos diferentes. Este enfoque es largo de afinar porque hay que evaluar el modelo cada vez que se cambia el peso de un atributo. Si $p$ es su número de funciones y quiere sustituir una función $x$ por $x/2$ y $x\times2$ , usted tiene $3^p$ modelos a evaluar (con una estrategia ingenua).
Tenga en cuenta que puede tener una mejora significativa si trata las características de forma independiente (no cada combinación de ellas), ejecutando sólo $3\times p$ modelos.
Otras mejoras para KNN
J. Wang, P. Neskovic y L. N. Cooper, "Improving nearest neighbor rule with a simple adaptive distance measure", Pattern Recognition Letters, vol. 28, nº 2, pp. 207-213, enero de 2007.
"Random KNN feature selection - a fast and stable alternative to Random Forests" Shengqiao Li, E James Harner and Donald A Adjeroh, Bioinformatics 2011 12:450
Código
N <- 2000
decision_function <- function(x){
(((x[1]%%1-0.5)*(-x[2]%%1-0.5))>0)+1
}
x <- abs(matrix(runif(n = N, min = 0, max = 2), ncol = 2))
y <- apply(X = x, MARGIN = 1, FUN = decision_function)
plot(x, col=y)
model <- lm(y ~ x, data = cbind.data.frame(x,y))
summary(model)
1 votos
¿Está normalizando las variables auxiliares para que estén en la misma escala? Si no es así, la importancia medida de este modo dependerá de las unidades de medida de forma arbitraria.
0 votos
Estoy de acuerdo en que si se va a hacer el método anterior, es necesario normalizar las variables, pero ¿es suficiente? ¿Hay algo más que impida que esto sea un método viable?
0 votos
Me gusta usar "Boruta" y "permutación de la importancia de las variables", pero entonces no estoy transformando el espacio usando eso en ningún tipo de sentido de Mahalanobis. ¿Cómo se tiene en cuenta el "peso"? ¿Ya está codificado de más de una manera en su enfoque?
0 votos
Cuando me refería al peso en mi post original lo hacía en este sentido: Utilizamos una función creada en casa para calcular la distancia de la siguiente manera, para cada variable auxiliar la distancia se calcula utilizando alguna medida (puede variar para diferentes tipos de variables) y se reduce para estar entre 0 y 1. La distancia total es simplemente la suma de todas esas distancias reducidas. Dado que todas las distancias están en la misma escala cuando se suman todas, si cree que algunas tienen más importancia que otras puede asignarles pesos más altos en la suma. D = W1D1 + W2D2 + ... + WpDp