Notas de estudio de problemas de clasificación-principio KNN

Algoritmo de vecino más cercano-KNN

Caso:

La ideología rectora del algoritmo kNN es "el que está cerca de Zhu es rojo y el que está cerca de la tinta es negro", y sus vecinos pueden inferir su categoría.
Como dice el refrán, "las cosas se juntan por género y la gente se divide en grupos". Imagina que hay dos personas, A y B. A vive en una mansión de primera clase de Tomson y B vive en un anciano suburbano. Entonces, nuestro juicio más intuitivo es: A tiene una alta probabilidad de ser una persona rica y B no es nada inusual. Aunque no hemos visto el saldo de la tarjeta bancaria de A y B, aún podemos emitir un juicio cuando vivimos en una comunidad rica a través de A. Presente la idea del algoritmo KNN: "Es probable que quien viva cerca de usted sea el mismo tipo de persona que él".

Definición de Wikipedia:

En el reconocimiento de patrones, el algoritmo de k vecinos más cercanos (k-NN) es un método no paramétrico propuesto por Thomas Cover que se utiliza para clasificación y regresión. [1] En ambos casos, la entrada consta de los k ejemplos de entrenamiento más cercanos en el espacio de características. El resultado depende de si se utiliza k-NN para clasificación o regresión:

  • En la clasificación k-NN, la salida es una pertenencia a una clase. Un objeto
    se clasifica mediante un voto de pluralidad de sus vecinos, y el objeto
    se asigna a la clase más común entre sus k vecinos más cercanos
    (k es un número entero positivo, típicamente pequeño). Si k = 1, entonces el objeto
    simplemente se asigna a la clase de ese único vecino más cercano.
  • En la regresión k-NN, la salida es el valor de propiedad del objeto.
    Este valor es el promedio de los valores de k vecinos más cercanos.

principio:

Para explicar el principio del algoritmo KNN en una oración, es encontrar las K muestras más cercanas a los nuevos datos, y la categoría más grande de la muestra se utiliza como nueva categoría de datos.
Citando una imagen en Wikipedia:
Inserte la descripción de la imagen aquí
como se muestra en la imagen de arriba, hay dos tipos diferentes de datos de muestra, representados por pequeños cuadrados azules y pequeños triángulos rojos, y los datos marcados por el círculo verde en el medio de la imagen son los datos a clasificar.

  • Si K = 3, los 3 puntos más cercanos del punto verde son 2 triángulos rojos pequeños y 1 cuadrado azul pequeño. La minoría pertenece a la mayoría. Con base en métodos estadísticos, se determina que el punto verde a clasificar pertenece al rojo triángulo de un tipo.
  • Si K = 5, los 5 vecinos más cercanos del punto verde son 2 triángulos rojos y 3 cuadrados azules, o la minoría pertenece a la mayoría. Con base en métodos estadísticos, se determina que el punto verde a clasificar pertenece al azul .Un tipo de cuadrado.

Por lo tanto, hay principalmente dos detalles, la selección del valor K y el cálculo de la distancia del punto.

Ventajas y desventajas:

ventaja:

1. Simple y fácil de implementar: el algoritmo KNN en realidad no abstrae ningún modelo al final, sino que trata el conjunto de datos completo directamente como el modelo en sí. Cuando llega un nuevo dato, se compara con cada dato en el conjunto de datos. Para que pueda ver algunas de las ventajas del algoritmo KNN. Lo primero es que el algoritmo es simple, tan simple que no se requiere entrenamiento. Siempre que los datos de muestra estén organizados, se acabó, y una nueva pieza de datos se puede utilizar para la predicción.
2. El efecto es mejor para datos con bordes irregulares: se puede imaginar que nuestra predicción final es usar datos desconocidos como punto central y luego dibujar un círculo para que haya K datos en el círculo, por lo que para datos con bordes, es mejor que El clasificador lineal funciona mejor. Debido a que los clasificadores lineales pueden entenderse como trazar una línea para clasificar, los datos irregulares son difíciles de encontrar una línea para dividirlos en lados izquierdo y derecho.

Desventajas:

1. Solo adecuado para conjuntos de datos pequeños: es precisamente porque este algoritmo es demasiado simple que todos los conjuntos de datos deben usarse cada vez que se pronostican nuevos datos. Por lo tanto, si el conjunto de datos es demasiado grande, consumirá mucho tiempo y ocupar un espacio de almacenamiento muy amplio.
2. El efecto del desequilibrio de datos no es bueno: si los datos en el conjunto de datos están desequilibrados, algunos datos de categoría son particularmente grandes y algunos datos de categoría son particularmente pequeños, entonces este método fallará, porque una cantidad particularmente grande de datos es finalmente en la votación Habrá más ventajas competitivas.
3. Se debe realizar la estandarización de datos: debido al uso de la distancia para calcular, si la dimensión de los datos es diferente, el campo con un valor mayor tendrá un mayor impacto, por lo que los datos deben estandarizarse, por ejemplo, todos se convierten a un intervalo de 0-1.
4. No es adecuado para datos con demasiadas dimensiones de características: dado que solo podemos tratar con conjuntos de datos pequeños, si los datos tienen demasiadas dimensiones, la distribución de muestras en cada dimensión es muy pequeña. Por ejemplo, solo tenemos tres muestras y cada muestra tiene solo una dimensión, que es mucho más obvia que las características tridimensionales de cada muestra.

Cálculo de distancia:

Los escenarios de aplicación de varias "distancias" se resumen brevemente como:
espacio: distancia euclidiana,
camino: distancia de Manhattan,
rey del ajedrez: distancia de Chebyshev, las tres formas unificadas anteriores: distancia de Minkowski,
ponderación: distancia euclidiana estandarizada,
excluir dimensión y dependencia: Mahalanobis distancia,
espacio vectorial: ángulo coseno,
diferencia de codificación: distancia de Hamming,
aproximación de conjuntos: coeficiente de similitud Jackard y distancia,
correlación: coeficiente de correlación y distancia de correlación.

(Los estudiantes interesados ​​pueden consultar por sí mismos) De
uso común, como la distancia euclidiana:
tome un plano bidimensional como ejemplo, la fórmula para calcular la distancia euclidiana de dos puntos en un espacio bidimensional es la siguiente:

Inserte la descripción de la imagen aquí
Esta escuela secundaria tiene contactado con él, de hecho, se calcula (x1, y1) y (x2, y2) distancia. Al expandirse a un espacio multidimensional, la fórmula se convierte en la siguiente:
Inserte la descripción de la imagen aquí
El algoritmo KNN más simple y rudo es calcular la distancia entre el punto predicho y todos los puntos, luego guardar y ordenar, y seleccionar los primeros valores K para ver qué categorías son más numerosos.
Amplíe la distancia de lectura de Min:
Inserte la descripción de la imagen aquí

  • Cuando p = 1, es la distancia de Manhattan
  • Cuando p = 2, es la distancia euclidiana
  • Cuando p → ∞, es la distancia de Chebyshev

Según los diferentes parámetros de las variables, la distancia de Min puede representar una especie de distancia.
Distancia euclidiana estandarizada (distancia euclidiana estandarizada), la distancia euclidiana estandarizada es un esquema de mejora para las deficiencias de la distancia euclidiana simple. La idea de la distancia euclidiana estándar: dado que la distribución de los componentes de cada dimensión de los datos es diferente, primero "estandarice" cada componente con la misma media y varianza.
Suponiendo que la expectativa matemática o la media (media) del conjunto muestral X es my la desviación estándar (desviación estándar, raíz de la varianza) es s, entonces la "variable estandarizada" X * de X se expresa como: (Xm) / s, y el valor de la variable estandarizada La expectativa matemática es 0 y la varianza es 1.
Es decir, el proceso de estandarización del conjunto de muestras se describe mediante la fórmula:
Inserte la descripción de la imagen aquí

Valor estandarizado = (valor medio de componente de valor preestandarizado) / la desviación estándar del componente
se puede obtener mediante una derivación simple para obtener dos vectores n-dimensionales a (x11, x12, ..., x1n) yb (x21, x22 , ..., x2n) La fórmula para la distancia euclidiana estandarizada entre:
Inserte la descripción de la imagen aquí

Elección del valor K:

Generalmente a través de la validación cruzada (los datos de muestra se dividen en datos de entrenamiento y datos de verificación de acuerdo con una cierta proporción, como 6: 4 para dividir parte de los datos de entrenamiento y los datos de verificación), comenzando por seleccionar un valor K más pequeño, continúe con aumente el valor de K y luego calcule la varianza del conjunto de verificación y, finalmente, encuentre un valor de K más apropiado. Después de calcular la varianza a través de la validación cruzada, obtendrá aproximadamente el siguiente gráfico:
Inserte la descripción de la imagen aquí

Cuando aumente k, la tasa de error general disminuirá primero, porque hay más muestras de las que aprender y el efecto de clasificación será mejor. Cuando el valor de K es mayor, la tasa de error será mayor. Por ejemplo, si tiene un total de 35 muestras, cuando su K aumenta a 30, KNN básicamente no tiene sentido. Por lo tanto, al elegir el punto K, puede elegir un punto crítico K más grande. Cuando continúa aumentando o disminuyendo, la tasa de error aumentará.
Regla general: k es generalmente menor que la raíz cuadrada del número de muestras de entrenamiento

A continuación, resuma las ideas del algoritmo KNN:

Es decir, cuando se conocen los datos y las etiquetas del conjunto de entrenamiento, ingrese los datos de la prueba, compare las características de los datos de la prueba con las características correspondientes en el conjunto de entrenamiento y busque los datos K principales en el conjunto de entrenamiento que sean más similares a él, entonces los datos de prueba corresponden La categoría de es la categoría con la mayor cantidad de ocurrencias en los datos K. La descripción del algoritmo es:
1) Calcular la distancia entre los datos de prueba y cada dato de entrenamiento;
2) Ordenar según la relación creciente de distancia;
3) Seleccione la distancia más pequeña K puntos;
4) Determine la frecuencia de ocurrencia de la categoría de los primeros K puntos;
5) Devuelva la categoría con la mayor frecuencia de los primeros K puntos como la clasificación predicha de los datos de prueba .

Estuche Python iris:

from sklearn import datasets 
#sklearn模块的KNN类
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
np.random.seed(0)
#设置随机种子,不设置的话默认是按系统时间作为参数,设置后可以保证我们每次产生的随机数是一样的

iris=datasets.load_iris() #获取鸢尾花数据集
iris_x=iris.data #数据部分
iris_y=iris.target #类别部分
#从150条数据中选140条作为训练集,10条作为测试集。permutation 接收一个数作为参数(这里为数据集长度150),产生一个0-149乱序一维数组
randomarr= np.random.permutation(len(iris_x))
iris_x_train = iris_x[randomarr[:-10]] #训练集数据
iris_y_train = iris_y[randomarr[:-10]] #训练集标签
iris_x_test = iris_x[randomarr[-10:]] #测试集数据
iris_y_test = iris_y[randomarr[-10:]] #测试集标签
#定义一个knn分类器对象
knn = KNeighborsClassifier()
#调用该对象的训练方法,主要接收两个参数:训练数据集及其类别标签
knn.fit(iris_x_train, iris_y_train)
#调用预测方法,主要接收一个参数:测试数据集
iris_y_predict = knn.predict(iris_x_test)
#计算各测试样本预测的概率值 这里我们没有用概率值,但是在实际工作中可能会参考概率值来进行最后结果的筛选,而不是直接使用给出的预测标签
probility=knn.predict_proba(iris_x_test)
#计算与最后一个测试样本距离最近的5个点,返回的是这些样本的序号组成的数组
neighborpoint=knn.kneighbors([iris_x_test[-1]],5)
#调用该对象的打分方法,计算出准确率
score=knn.score(iris_x_test,iris_y_test,sample_weight=None)
#输出测试的结果
print('iris_y_predict = ')
print(iris_y_predict)
#输出原始测试数据集的正确标签,以方便对比
print('iris_y_test = ')
print(iris_y_test)
#输出准确率计算结果
print('Accuracy:',score)
"""
输出结果:
iris_y_predict = 
[1 2 1 0 0 0 2 1 2 0]
iris_y_test = 
[1 1 1 0 0 0 2 1 2 0]
Accuracy: 0.9
"""
可以看到,该模型的准确率为0.9,其中第二个数据预测错误了。

Supongo que te gusta

Origin blog.csdn.net/Pioo_/article/details/109723433
Recomendado
Clasificación