Saltar al contenido

Usando la distancia del coseno con scikit aprende KNeighborsClassifier

Este post fue evaluado por especialistas así se asegura la exactitud de nuestra esta sección.

Solución:

TLDR: la distancia del coseno es equivalente a la distancia euclidiana cuando los vectores de entrada están normalizados, lo que resuelve su problema aquí.

La semejanza del coseno no es una distancia…

Semejanza del coseno, generalmente definida como s: (x,y) ↦ xT y / (||x|| * ||y||), mide la colinealidad de xey. En particular:

  • s(x,y) = 1 si los vectores x e y tienen la misma dirección
  • s(x,y) = -1 si x e y tienen direcciones opuestas
  • s(x,y) = 0 si x e y son ortogonales

Esto no define una distancia, ya que para todo x, s(x,x) = 1 (debería ser igual a 0 para una distancia). Intuitivamente, uno puede derivar la llamada “distancia del coseno” de la similitud del coseno: d: (x,y) ↦ 1 – s(x,y). Sin embargo, esto todavía no es una distancia en general ya que no tiene la propiedad de desigualdad triangular. Por lo tanto, no puede usarlo para acelerar estructuras como árboles de bolas y kd.

… pero se puede vincular a la distancia euclidiana cuando las entradas se normalizan

Si fuerza a scikit-learn a usar el enfoque de fuerza bruta, debería poder derivar los vecinos más cercanos usando su propio objeto métrico de distancia personalizado. Sin embargo, existen métodos para transformar la similitud del coseno en una métrica de distancia válida si desea utilizar árboles de bolas (puede encontrar uno en la biblioteca JSAT).

Cuando x e y están normalizados (||x||2 = xTx = 1), sus distancias euclidiana y coseno están unidas por la siguiente igualdad: ||xy||2 = xTx + yTy − 2 xTy = 2 * (1 – xTy) = 2 * d(x,y). En este caso, la distancia del coseno hereda las buenas propiedades de la distancia euclidiana.

Por lo tanto, normalizar todos los vectores de entrada antes de usar un KNeighborsClassifier con la distancia euclidiana arrojará resultados equivalentes a usar la distancia del coseno.

valoraciones y reseñas

Si haces scroll puedes encontrar las interpretaciones de otros creadores, tú aún eres capaz insertar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *