Aprendizaje automático sin Python, Anaconda y otros reptiles

No, bueno, claro, no lo digo en serio. Debe haber un límite en la medida en que es posible simplificar un tema. Pero para las primeras etapas, comprender los conceptos básicos y “entrar” rápidamente en el tema, puede ser aceptable. Discutiremos cómo nombrar correctamente este material (opciones: "Aprendizaje automático para tontos", "Análisis de datos de pañales", "Algoritmos para los más pequeños") al final.

Al punto. Escribí varios programas de aplicación en MS Excel para visualización y representación visual de procesos que ocurren en diferentes métodos de aprendizaje automático al analizar datos. Después de todo, ver es creer, como dicen los portadores de la cultura que desarrolló la mayoría de estos métodos (por cierto, no todos). La “máquina de vectores de soporte” más poderosa, o SVM, máquina de vectores de soporte es la invención de nuestro compatriota Vladimir Vapnik, Instituto de Gestión de Moscú (¡por cierto, 1963! Ahora, sin embargo, enseña y trabaja en Estados Unidos).

Tres archivos para revisión

1. Agrupación de K-medias

Problemas de este tipo se refieren al “aprendizaje no supervisado”, cuando necesitamos dividir los datos iniciales en un cierto número de categorías conocidas de antemano, pero no tenemos un número determinado de “respuestas correctas”; debemos extraerlas de los propios datos. . El problema clásico fundamental de encontrar subespecies de flores de iris (Ronald Fisher, 1936!), que se considera el primer signo de este campo de conocimiento, es precisamente de esta naturaleza.

El método es bastante sencillo. Tenemos un conjunto de objetos representados como vectores (conjuntos de N números). En los lirios, se trata de conjuntos de 4 números que caracterizan la flor: el largo y el ancho de los lóbulos exterior e interior del perianto, respectivamente (Iris de Fischer - Wikipedia). Se elige la métrica cartesiana habitual como distancia o medida de proximidad entre objetos.

A continuación, los centros de los grupos se seleccionan al azar (o no al azar, ver más abajo) y se calculan las distancias desde cada objeto a los centros de los grupos. Cada objeto en un paso de iteración determinado se marca como perteneciente al centro más cercano. Luego, el centro de cada grupo se transfiere a la media aritmética de las coordenadas de sus miembros (por analogía con la física, también se le llama "centro de masa") y se repite el procedimiento.

El proceso converge bastante rápido. En imágenes en dos dimensiones se ve así:

1. Distribución aleatoria inicial de puntos en el plano y número de grupos.

Aprendizaje automático sin Python, Anaconda y otros reptiles

2. Especificar centros de conglomerados y asignar puntos a sus conglomerados

Aprendizaje automático sin Python, Anaconda y otros reptiles

3. Transferir las coordenadas de los centros del cluster, recalculando la afiliación de los puntos hasta que los centros se estabilicen. La trayectoria del centro del cúmulo moviéndose hacia su posición final es visible.

Aprendizaje automático sin Python, Anaconda y otros reptiles

En cualquier momento, puede configurar nuevos centros de cluster (¡sin generar una nueva distribución de puntos!) y ver que el proceso de partición no siempre es inequívoco. Matemáticamente, esto significa que para la función que se optimiza (la suma de las distancias al cuadrado desde los puntos hasta los centros de sus grupos), no encontramos un mínimo global, sino local. Este problema se puede superar mediante una elección no aleatoria de los centros de los grupos iniciales o enumerando los posibles centros (a veces es ventajoso colocarlos exactamente en uno de los puntos, entonces al menos hay una garantía de que no nos quedaremos vacíos). conglomerados). En cualquier caso, un conjunto finito siempre tiene un mínimo.

Puedes jugar con este archivo en este enlace. (no olvide habilitar la compatibilidad con macros. Los archivos han sido analizados en busca de virus)

Descripción del método en Wikipedia - método k-medias

2. Aproximación por polinomios y desglose de datos. Reentrenamiento

Notable científico y divulgador de la ciencia de datos K.V. Vorontsov describe brevemente los métodos de aprendizaje automático como "la ciencia de dibujar curvas a través de puntos". En este ejemplo, encontraremos un patrón en los datos utilizando el método de mínimos cuadrados.

Se muestra la técnica de dividir los datos originales en "entrenamiento" y "control", así como un fenómeno como el reentrenamiento o el "reajustamiento" a los datos. Con una aproximación correcta, tendremos un cierto error en los datos de entrenamiento y un error ligeramente mayor en los datos de control. Si es incorrecto, se producirá un ajuste preciso de los datos de entrenamiento y un gran error en los datos de prueba.

(Es un hecho bien conocido que a través de N puntos se puede trazar una sola curva de grado N-1, y este método en el caso general no da el resultado deseado. Polinomio de interpolación de Lagrange en Wikipedia)

1. Establecer la distribución inicial

Aprendizaje automático sin Python, Anaconda y otros reptiles

2. Dividimos los puntos en “entrenamiento” y “control” en una proporción de 70 a 30.

Aprendizaje automático sin Python, Anaconda y otros reptiles

3. Dibujamos la curva aproximada a lo largo de los puntos de entrenamiento, vemos el error que da en los datos de control.

Aprendizaje automático sin Python, Anaconda y otros reptiles

4. Dibujamos una curva exacta a través de los puntos de entrenamiento y vemos un error monstruoso en los datos de control (y cero en los datos de entrenamiento, pero ¿qué sentido tiene?).

Aprendizaje automático sin Python, Anaconda y otros reptiles

Por supuesto, se muestra la opción más simple con una sola división en subconjuntos de “entrenamiento” y “control”; en el caso general, esto se hace muchas veces para el mejor ajuste de los coeficientes.

El archivo está disponible aquí, escaneado por antivirus. Habilitar macros para un correcto funcionamiento

3. Descenso de gradiente y dinámica de cambio de error.

Habrá un caso de 4 dimensiones y regresión lineal. Los coeficientes de regresión lineal se determinarán paso a paso utilizando el método de descenso de gradiente; inicialmente todos los coeficientes son cero. Un gráfico separado muestra la dinámica de la reducción de errores a medida que los coeficientes se ajustan cada vez con mayor precisión. Es posible ver las cuatro proyecciones bidimensionales.

Si configuras el paso de descenso del gradiente demasiado grande, puedes ver que cada vez nos saltaremos el mínimo y llegaremos al resultado en un mayor número de pasos, aunque al final igual llegaremos (a menos que retrasemos también el paso de descenso). mucho - entonces el algoritmo irá " con creces"). Y la gráfica del error dependiendo del paso de iteración no será suave, sino "entrecortada".

1. Genere datos, establezca el paso de descenso del gradiente

Aprendizaje automático sin Python, Anaconda y otros reptiles

2. Con la selección correcta del paso de descenso de gradiente, alcanzamos el mínimo de manera suave y rápida.

Aprendizaje automático sin Python, Anaconda y otros reptiles

3. Si el paso de descenso del gradiente se selecciona incorrectamente, sobrepasamos el máximo, el gráfico de error es "entrecortado", la convergencia requiere una mayor cantidad de pasos

Aprendizaje automático sin Python, Anaconda y otros reptiles
и

Aprendizaje automático sin Python, Anaconda y otros reptiles

4. Si seleccionamos el paso de descenso de gradiente de forma completamente incorrecta, nos alejamos del mínimo.

Aprendizaje automático sin Python, Anaconda y otros reptiles

(Para reproducir el proceso utilizando los valores de los pasos de descenso de gradiente que se muestran en las imágenes, marque la casilla "datos de referencia").

El archivo está en este enlace, necesitas habilitar las macros, no hay virus.

Según la respetada comunidad, ¿es aceptable tal simplificación y método de presentación del material? ¿Vale la pena traducir el artículo al inglés?

Fuente: habr.com

Añadir un comentario