Al hacer kNN que usted necesita para mantener una cosa en mente, a saber, que no es estrictamente una, derivada matemáticamente algoritmo, sino más bien de una simple clasificador / regresor basada en una intuición - la función subyacente no cambia mucho cuando los argumentos no cambian mucho. O en otras palabras la función subyacente a nivel local es casi constante. Con esta suposición, se puede estimar el valor de la función subyacente en cualquier momento dado, por un (posiblemente ponderado) media de los valores de la más cercana de k puntos.
Manteniendo esto en mente, usted puede darse cuenta de que no hay una clara imperativo sobre qué hacer cuando no hay un claro ganador en la votación por mayoría. Usted puede utilizar siempre una extraña k, o el uso de algunos inyectiva ponderación.
En el caso de los vecinos de 3 a 5, a la misma distancia del punto de interés, usted puede utilizar sólo dos, o el uso de todos los 5. De nuevo, tenga en cuenta kNN no es un algoritmo derivado de complejo análisis matemático, pero sólo una simple intuición. Es hasta usted cómo usted quiere tratar con los casos especiales.
Cuando se trata de la ponderación, la base de su algoritmo en la intuición de que la función no cambia mucho cuando los argumentos no cambian mucho. Así que usted quiere dar más pesos de los puntos que están más cerca del punto de interés. Una buena ponderación sería, por ejemplo,$\frac{1}{||x-y||^2}$, o cualquier otro que sea relativamente grande cuando la distancia es pequeña, relativamente pequeño, cuando la distancia entre los puntos es grande (por lo que probablemente inversa de algunos continua métrica de la función).
También ha sido un buen papel por Samory Kpotufe y Abdeslam Boularias este año en el servicio de tocar en la cuestión de encontrar el derecho de ponderación. En general, la intuición, es que la función subyacente varía de manera diferente en diferentes direcciones (es decir, sus diferentes derivadas parciales son de diferente magnitud), por lo tanto sería conveniente que, en cierto sentido, el cambio de las métricas de ponderación de acuerdo a esta intuición. Ellos afirman que este truco generalmente mejora el rendimiento de kNN y núcleo de regresión, y creo que incluso tienen algunos resultados teóricos para respaldar esta afirmación (aunque no estoy seguro de lo que hacer los resultados teóricos en realidad afirmación, yo no tenía tiempo para ir a través de todo el documento). El documento puede ser descargado de forma gratuita desde sus sitios, o después de Googlear "Gradiente de Pesos de ayuda de la Paramétrica de Regresores". Su investigación se dirige hacia la regresión, pero supongo que se aplica a la clasificación en cierta medida así.
Ahora, usted probablemente querrá saber cómo se puede encontrar a la derecha de k, la métrica, la ponderación de la acción a realizar cuando hay empates y así sucesivamente. Lo triste es, que es básicamente duro para llegar a la derecha hyperparameters después de algún pensamiento profundo, usted probablemente tendrá que probar diferentes racimos de hyperparameters y ver cuáles funcionan bien en algunas conjunto de validación. Si usted tiene algunos recursos computacionales, y quiere llegar a la derecha automáticamente los parámetros en un buen conjunto de hyperparameters, hay una reciente idea (que me gusta mucho) para uso de Gauss procesos derivados de libre de optimización en ese entorno.
Permítanme elaborar - encontrar el conjunto de hyperparameters (es decir, que minimice el error en la validación de datos), puede ser visto como un problema de optimización. Por desgracia, en este contexto, no podemos obtener el gradiente de la función tratamos de optimizar (que es lo que normalmente queremos hacer, para realizar gradiente de la pendiente o algunos de los métodos más avanzados). Gauss procesos pueden ser utilizados en esta configuración, para encontrar conjuntos de hyperparameters, que tienen grandes posibilidades, para realizar mejor que la mejor que hemos encontrado hasta el momento. Por lo tanto usted puede de forma iterativa ejecutar el algoritmo con algún conjunto de hyperparameters, a continuación, pedir a la Gaussiana proceso de cuáles son los mejores para tratar la siguiente, trate de aquellos, y así sucesivamente.
Para más detalles, mira para papel "Práctica Bayesiano de Optimización de Algoritmos de Aprendizaje automático" de Jasper Snoek, Hugo Larochelle y Ryan P Adams (también se encuentran en cualquiera de sus sitios web o a través de Google).