¿KNN tiene una función de pérdida?


12

No encontré una definición de función de pérdida en wiki en el contexto del aprendizaje automático.

sin embargo, este es menos formal, es bastante claro.

En esencia, una función de pérdida es increíblemente simple: es un método para evaluar qué tan bien su algoritmo modela su conjunto de datos. Si sus predicciones están totalmente apagadas, su función de pérdida generará un número mayor. Si son bastante buenos, generará un número menor. A medida que cambia partes de su algoritmo para intentar mejorar su modelo, su función de pérdida le dirá si está llegando a algún lado.

parece que la tasa de error de KNN no es la función que podría guiar la optimización del modelo en sí, como el Descenso de degradado.

Entonces, ¿KNN tiene una función de pérdida?

Respuestas:


11

k -NN no tiene una función de pérdida que se pueda minimizar durante el entrenamiento. De hecho, este algoritmo no está entrenado en absoluto. El único "entrenamiento" que sucede parak -NN es memorizar los datos (creando una copia local), de modo que durante la predicción pueda realizar una búsqueda y un voto mayoritario. Técnicamente, no se ajusta ninguna función a los datos y, por lo tanto, no se realiza ninguna optimización (no se puede entrenar con el descenso de gradiente).


55
kNN no utiliza una función de pérdida durante el "entrenamiento", pero eso no significa que no haya una función de pérdida que defina kNN. Por ejemplo: es bien sabido que la mediana minimiza la pérdida de diferencia absoluta media. Pero nunca calcula la pérdida media de abdominales, y tampoco utiliza la optimización como el descenso de gradiente para calcular la mediana. Todavía es un hecho útil que minimiza la pérdida media de abdominales a veces. De la misma manera, probablemente podría construir una función de pérdida que kNN siempre minimice
nikie

@nikie es cierto, pero en kNN los usa como funciones de agregación local entre los vecinos (difícil de traducir en pérdida general para minimizar). También para k = 1 no utiliza ninguna función de este tipo. Además, no se utiliza para entrenamiento. Llamarlo una función de pérdida es simplemente un ejercicio mental para forzar a kNN a ajustarse a alguna definición de clasificador, no encuentro razones convincentes para definirlo de esa manera.
Tim

@nikie: agregué la función de pérdida en una nueva respuesta. Tim: la ventaja de escribirlo de esta manera es que es más fácil ver cómo se puede hacer que el objetivo sea "más suave" al cambiar de un núcleo de sombrero de copa (contando el número de puntos, el kNN habitual) a un núcleo gaussiano (ponderando puntos por proximidad).
Miles

@Miles es cierto, pero de todos modos no es útil además de la discusión teórica, académica. En términos prácticos, el algoritmo no está entrenado usando la función de pérdida y no sería práctico hacerlo. Diría que hablar sobre la función de pérdida para kNN es más confuso que útil en la mayoría de los casos.
Tim

1
Pensé que la pregunta parecía de naturaleza teórica, pero tienes razón en que no hay ningún uso práctico para conocer la pérdida. ¿Quizás OP estaba buscando algo como el análisis de componentes del vecindario? Lo vinculé en la respuesta.
Miles

3

Cada algoritmo de estadísticas está minimizando explícita o implícitamente algún objetivo, incluso si no hay parámetros o hiperparámetros, e incluso si la minimización no se realiza de forma iterativa. El kNN es tan simple que normalmente no se piensa así, pero en realidad se puede escribir una función objetiva explícita:

t^=argmaxCi:xiNk({x},x^)δ(ti,C)

Lo que esto dice es que la clase predicha para un punto es igual a la clase que maximiza el número de otros puntos que están en el conjunto de puntos cercanos que también tienen la misma clase, medida por que es cuando está en la clase , caso contrario.t^x^CxikNk({x},x^)δ(ti,C)1xiC0

La ventaja de escribirlo de esta manera es que uno puede ver cómo hacer que el objetivo sea "más suave" ponderando los puntos por proximidad. Con respecto al "entrenamiento", no hay parámetros aquí para encajar. Pero se podría ajustar la métrica de distancia (que se utiliza para definir ) o la ponderación de puntos en esta suma para optimizar algún objetivo de clasificación adicional. Esto lleva al análisis de componentes de vecindario: https://www.cs.toronto.edu/~hinton/absps/nca.pdf que aprende una métrica de distancia.Nk


-3

No estoy de acuerdo con la respuesta aceptada (algo).

KNN es un algoritmo de clasificación , y no tiene sentido ejecutar un algoritmo de clasificación sin una función de pérdida: le interesaría qué tan bien funcionó el algoritmo. En el caso de KNN, podría, por ejemplo, evaluar la calidad de las clasificaciones observando la suma de las precisiones promedio en cada clase. O bien, podría centrarse únicamente en la precisión del algoritmo.

El método de optimización que impulsa KNN no depende de la función de pérdida, por lo que durante el entrenamiento, nunca recurre a la función de pérdida y ni siquiera utiliza el descenso de gradiente para entrenar.

Contraste esto con el siguiente "clasificador vecino más cercano a ": para las clases , primero entrene a los medios y luego defina la clase de cada punto por el número dominante de puntos que pertenecen a cada centroide. Por ejemplo, podría entrenar este algoritmo con una minimización gradual en el error de mínimos cuadrados de cada centroide (recalculando los centroides en función de los vecinos más cercanos), pero en el momento de la prueba, su función de pérdida volvería a ser una forma de precisión en cada clase, a pesar de que el algoritmo original no tiene dependencia de esto.KK


55
Una métrica para evaluar el rendimiento del algoritmo y la pérdida para minimizar son dos cosas diferentes. De hecho, puede minimizar la pérdida que difiere de la métrica que busca (por ejemplo, por razones computacionales).
Tim

@Tim: Creo que estamos en la misma página, ya que ese es exactamente el punto que estoy tratando de hacer en el último párrafo, donde se usa una métrica para entrenar. Pero, aún desea una función de pérdida después del entrenamiento para evaluar el algoritmo. Un algoritmo de clasificación entrenado sin apelar a algún tipo de función de pérdida (durante o después) en las clases no está, por definición, supervisado.
Alex R.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.