24 votos

El trato con los lazos, de los pesos y voto en kNN

Yo soy la programación de un algoritmo kNN y quisiera saber lo siguiente:

Tie-breaks:

  1. ¿Qué sucede si no hay un claro ganador en la votación por mayoría? E. g. todos los k vecinos más cercanos son de diferentes clases, o para k=4 hay 2 vecinos de clase a y 2 a los vecinos de clase B?
  2. ¿Qué sucede si no es posible determinar exactamente k vecinos más cercanos, ya que hay más vecinos que tienen la misma distancia? E. g. para la lista de distancias (x1;2), (x2;3.5), (x3;4.8), (x4;4.8), (x5;4.8), (x6;9.2) no sería posible determinar el k=3 o k=4 vecinos más cercanos, porque el 3 al 5 de vecinos, todos tienen la misma distancia.

Pesos:

  1. He leído que es bueno que el peso de los k-vecinos más cercanos antes de seleccionar la clase ganadora. ¿Cómo funciona eso? I. e. ¿cómo son los vecinos ponderado y cómo es entonces la clase determinada?

El voto de la mayoría de las alternativas:

  1. Hay otras reglas o estrategias para determinar el ganador de la clase que no sea el voto de la mayoría?

10voto

Craig Trader Puntos 8924

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).

8voto

Ali Puntos 31

La forma ideal para romper un lazo para un k vecino más cercano, en mi opinión, sería la disminución de k por 1 hasta que haya roto el empate. Esto siempre funciona independientemente de los votos sistema de ponderación, ya que un empate es imposible cuando k = 1. Si hubiera un aumento de k, a la espera de su esquema de pesos y el número de categorías, usted no sería capaz de garantizar un tie break.

3voto

ESRogs Puntos 1381

Acerca de esta eliminatoria parte, la mejor línea de base de la idea de los lazos es generalmente aleatoria de romper, por lo que la selección aleatoria de la clase de todos los ganadores de la votación y seleccionar al azar un subconjunto de empate de los objetos lo suficientemente grande como para llenar k.

Una solución de este tipo destaca el hecho de que esos son los casos patológicos que simplemente no proporcionan suficiente información para tomar una decisión en kNN régimen. Por CIERTO, si que son comunes a sus datos, tal vez usted debería tratar algunos más la diferenciación de distancia?

1voto

Mark Puntos 111

Una posible forma es el algoritmo aumenta o disminuye automáticamente k hasta llegar a un claro ganador.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X