¿Las personas en la industria realmente usan el algoritmo K-Nearest Neighbour en la práctica?

El modelo K-Nearest-Neighbor tiene dos inconvenientes principales. Si ninguno de ellos es un problema para usted, entonces definitivamente debería considerarlo como un clasificador simple y robusto.

El primer problema es el problema de rendimiento . Dado que es un modelo perezoso, debe cargar todos sus datos de entrenamiento y calcular distancias a todas las muestras de entrenamiento. Se puede hacer de una manera ingenua o utilizando estructuras de datos más elegantes, como los árboles KD. En cualquier caso, en un gran conjunto de entrenamiento, este es un gran inconveniente.

El segundo problema es la distancia métrica . El modelo simple de vainilla se usa con la distancia euclidiana, que es una métrica de distancia problemática en grandes dimensiones, así como con características ruidosas (ya que usa el mismo peso para todas las características) o características de diferentes tipos (categórica, numérica y binaria).

Diferentes variantes de k-NN se utilizan definitivamente en la práctica. Estos incluyen aprendizaje métrico a distancia con k-NN (por ejemplo, Análisis de componentes de vecindario – Análisis de componentes de vecindario – Wikipedia) y métodos para evaluar estadísticas locales.

Para resumir, si tiene un sistema que tiene que aprender un patrón sofisticado (es decir, no lineal) con un pequeño número de muestras (y generalmente dimensiones), los modelos K-NN suelen ser una de las mejores opciones disponibles.

¡No puedo hablar por nadie más, pero amo a KNN! A menudo lo usaré para la clasificación de imágenes. Así es, para lo que todos sacan las grandes armas (redes convolucionales profundas). Lo uso cuando colores diferentes significan objetos claramente diferentes. Clasificación del terreno a partir de imágenes de satélite, por ejemplo. El azul es casi siempre agua. El blanco es nieve o nubes (un cálculo de inundación y perímetro y área ayudará a diferenciar). Etc …

También he usado el resultado de KNN como entrada para otros modelos.

KNN no suele ser el predictor más preciso que puedes encontrar, pero a veces es más que suficiente y muy rápido.

Como se señaló en otras respuestas -> KNN tiene inconvenientes como:

1) Problemas de rendimiento 2) Problemas de memoria 3) Selección de una métrica de distancia

Sin embargo, he visto que se usa en la industria TODO EL TIEMPO debido a las siguientes razones:

  1. Un poderoso algoritmo de línea de base (Echa un vistazo a un documento seminal de respaldo que lo use como referencia
  2. Se requiere poco conocimiento sobre el aprendizaje automático para tomar esta ruta: “Este clasificador tiene la ventaja de que no se requiere tiempo de entrenamiento ni cerebro por parte del diseñador”
  3. Relativamente más fácil y rápido de implementar y “producir”
  4. Alta interpretabilidad y explicabilidad, especialmente en problemas de baja dimensión.
  5. Útil como entradas para otros modelos (sin entrar demasiado en conjuntos y en cascada de modelos)
  6. No es el mejor algoritmo que existe, pero es sorprendentemente bueno en muchos problemas diversos de clasificación.

Todas. Los. Hora.

Es sorprendentemente útil.

Por ejemplo, uno de los mejores algoritmos de agrupación de series de tiempo que existe (y sigue siendo un estándar de oro) es 1-NN con DTW (deformación dinámica del tiempo). Ver, por ejemplo, el trabajo de Eamonn Keogh.

Editar:

Aunque observando el trabajo de Keogh en este momento, DTW puede verse eclipsado por el Perfil Matrix … estad atentos.

He usado K-Nearest Neighbour en la industria, para clasificar las preguntas en categorías. Lo que lo hizo útil, en concordancia con la respuesta de Omri Mendels, fue tener muchas instancias de referencia (preguntas pre-etiquetadas) y una métrica de distancia fácilmente obtenible y eficiente (implementación de puntuación de Lucene). En general, funcionó muy bien.

Solo quería mencionar un uso común de k -NN en la industria (campo de PNL): agrupación de documentos sin supervisión, una clasificación rápida y sucia en tiempo real. Primero, un espacio vectorial semántico es construido por LSA / LSI / SVD. Luego, los documentos se agrupan por su posición en el espacio multidimensional resultante, y k -NN funciona muy bien para la última parte.

Estrictamente hablando, no estoy en “la industria”, pero uso Machine Learning todo el tiempo en el trabajo.

Yo uso KNN, solo para calentar. Es un excelente punto de referencia, simple e intuitivo. Cualquier otra cosa que intente primero tiene que vencer a KNN. Si no … bueno, en realidad no significa nada, pero es un buen incentivo para comenzar a pensar en qué tipo de capacitación está disponible (modelo, datos, ambos), son las características razonables y todo lo demás es habitual cosas.

Para mí, KNN es como el gambito de King en el ajedrez: rara vez se usa a alto nivel, pero es divertido intentarlo algunas veces en bombardeos.

Hago. Puede ser difícil en problemas grandes, pero los datos con los que trato son generalmente lo suficientemente pequeños como para que los problemas computacionales sean insignificantes. Se utiliza mucho en el análisis de datos topológicos y problemas basados ​​en la geometría, y la regresión KNN tiene muchos usos para distribuciones de resultados de aspecto extraño donde el resultado no es un miembro de la familia exponencial.

KNN se usa en visión por computadora para la coincidencia de características (SURF, SIFT, ORB …) (que se usa ampliamente).

More Interesting

¿Debería centrarme en aprender más idiomas o algoritmos y estructuras de datos?

¿Por qué la clasificación rápida se considera una clasificación inestable?

¿Tengo que estudiar matemáticas discretas, algoritmos y estructura de datos para convertirme en un buen desarrollador de Android?

Soy un desarrollador web que trabaja en el marco Python Django durante el año pasado. ¿Puedo aprender estructuras de datos y algoritmos si paso solo 2-3 horas diarias?

¿Qué hace que resolver CAPTCHA sea tan difícil?

¿Existe algún algoritmo que realice el reconocimiento de entidades con nombre insensible a mayúsculas y minúsculas de oraciones cortas?

Programación competitiva: dado un polígono y tres cuadrados congruentes alineados con el eje, ¿puede determinar en tiempo polinómico si el polígono puede cubrirse por completo de manera que los tres cuadrados, que pueden superponerse, cubran una cantidad igual de área en el polígono?

¿Cuál es la diferencia entre un tipo estable e inestable?

¿Cuál es la aplicación práctica de un gráfico no ponderado?

¿Cómo es inventar tu propio algoritmo?

¿Dejarías que los algoritmos se intercambiaran por ti cuando estés en el trabajo?

¿Cuándo Quicksort tiene su peor complejidad de tiempo de caso?

¿Cuáles son los mejores algoritmos para el análisis de sentimientos?

¿Cómo podría seleccionar aleatoriamente los bordes en un gráfico para conectar cada nodo [C]?

¿Qué estructura de datos es mejor para implementar una guía telefónica: Trie o Hash? ¿Por qué?