Aprendizaxe automática sen Python, Anaconda e outros réptiles

Non, ben, claro, non digo en serio. Debe haber un límite na medida en que é posible simplificar unha materia. Pero para as primeiras etapas, comprender conceptos básicos e "entrar" rapidamente no tema, pode ser aceptable. Discutaremos como nomear correctamente este material (opcións: "Aprendizaxe automática para maniquíes", "Análise de datos de cueiros", "Algoritmos para os máis pequenos") ao final.

Ata o punto. Escribiu varios programas de aplicación en MS Excel para a visualización e representación visual de procesos que se producen en diferentes métodos de aprendizaxe automática á hora de analizar datos. Ver é crer, ao fin e ao cabo, como din os portadores da cultura, que desenvolveu a maioría destes métodos (por certo, non todos. A máis poderosa "máquina de vectores de apoio", ou SVM, máquina de vectores de apoio é a invención de o noso compatriota Vladimir Vapnik, Instituto de Xestión de Moscova. 1963, por certo! Agora, porén, ensina e traballa nos EUA).

Tres expedientes para revisión

1. K-means clustering

Problemas deste tipo refírense á "aprendizaxe non supervisada", cando precisamos dividir os datos iniciais nun determinado número de categorías coñecidas de antemán, pero non temos ningún número de "respostas correctas"; debemos extraelas dos propios datos. . O problema clásico fundamental de atopar subespecies de flores de iris (Ronald Fisher, 1936!), que se considera o primeiro sinal deste campo de coñecemento, é precisamente desta natureza.

O método é bastante sinxelo. Temos un conxunto de obxectos representados como vectores (conxuntos de N números). Nos iris, son conxuntos de 4 números que caracterizan a flor: a lonxitude e o ancho dos lóbulos externos e internos do perianto, respectivamente (Iris de Fischer - Wikipedia). Escóllese a métrica cartesiana habitual como a distancia ou medida de proximidade entre obxectos.

A continuación, os centros de clúster son seleccionados aleatoriamente (ou non de forma aleatoria, ver máis abaixo) e calcúlanse as distancias de cada obxecto aos centros de clúster. Cada obxecto nun paso de iteración dado márcase como pertencente ao centro máis próximo. Despois, o centro de cada grupo transfírese á media aritmética das coordenadas dos seus membros (por analoxía coa física, tamén se chama "centro de masa") e repítese o procedemento.

O proceso converxe con bastante rapidez. Nas imaxes en dúas dimensións vese así:

1. Distribución aleatoria inicial de puntos no plano e número de cúmulos

Aprendizaxe automática sen Python, Anaconda e outros réptiles

2. Especificación de centros de clúster e asignación de puntos aos seus clústeres

Aprendizaxe automática sen Python, Anaconda e outros réptiles

3. Trasladar as coordenadas dos centros do cluster, recalculando a adscrición dos puntos ata que os centros se estabilicen. É visible a traxectoria do centro do clúster que se move ata a súa posición final.

Aprendizaxe automática sen Python, Anaconda e outros réptiles

En calquera momento, pode establecer novos centros de clúster (sen xerar unha nova distribución de puntos!) e ver que o proceso de partición non sempre é inequívoco. Matemáticamente, isto significa que para a función que se está a optimizar (a suma das distancias cadradas dos puntos aos centros dos seus clusters), non atopamos un mínimo global, senón un mínimo local. Este problema pódese superar ben mediante unha elección non aleatoria dos centros de cluster iniciais, ou ben enumerando os posibles centros (ás veces é vantaxoso situalos exactamente nun dos puntos, entón polo menos hai a garantía de que non quedaremos baleiros). clusters). En calquera caso, un conxunto finito sempre ten un ínfimo.

Podes xogar con este ficheiro nesta ligazón (Non esquezas activar a compatibilidade con macros. Os ficheiros foron analizados en busca de virus)

Descrición do método na Wikipedia - método de k-means

2. Aproximación por polinomios e desagregación de datos. Reformación

Notable científico e divulgador da ciencia de datos K.V. Vorontsov describe brevemente os métodos de aprendizaxe automática como "a ciencia de debuxar curvas a través de puntos". Neste exemplo, atoparemos un patrón nos datos usando o método dos mínimos cadrados.

Móstrase a técnica de dividir os datos de orixe en "adestramento" e "control", así como un fenómeno como a reciclaxe ou o "reaxuste" aos datos. Coa aproximación correcta, teremos un certo erro nos datos de adestramento e un pouco maior nos datos de control. Se é incorrecto, provoca un axuste preciso dos datos de adestramento e un erro enorme nos datos da proba.

(É un feito ben coñecido que a través de N puntos pódese trazar unha única curva de grao N-1, e este método no caso xeral non dá o resultado desexado. Polinomio de interpolación de Lagrange na Wikipedia)

1. Establece a distribución inicial

Aprendizaxe automática sen Python, Anaconda e outros réptiles

2. Dividimos os puntos en "adestramento" e "control" nunha proporción de 70 a 30.

Aprendizaxe automática sen Python, Anaconda e outros réptiles

3. Trazamos a curva aproximada ao longo dos puntos de adestramento, vemos o erro que dá nos datos de control

Aprendizaxe automática sen Python, Anaconda e outros réptiles

4. Trazamos unha curva exacta a través dos puntos de adestramento, e vemos un erro monstruoso nos datos de control (e cero nos datos de adestramento, pero cal é o punto?).

Aprendizaxe automática sen Python, Anaconda e outros réptiles

Móstrase, por suposto, a opción máis sinxela cunha única división en subconxuntos de "adestramento" e "control"; no caso xeral, isto faise moitas veces para o mellor axuste dos coeficientes.

O ficheiro está dispoñible aquí, dixitalizado polo antivirus. Activa as macros para un funcionamento correcto

3. Descenso de gradientes e dinámica de cambio de erro

Haberá un caso de 4 dimensións e regresión lineal. Os coeficientes de regresión lineal determinaranse paso a paso mediante o método de descenso de gradientes, inicialmente todos os coeficientes son cero. Un gráfico separado mostra a dinámica da redución de erros a medida que os coeficientes se axustan cada vez con máis precisión. É posible ver as catro proxeccións bidimensionais.

Se estableces o paso de baixada de gradiente demasiado grande, podes ver que cada vez saltaremos o mínimo e chegaremos ao resultado nun número maior de pasos, aínda que ao final aínda chegaremos (a non ser que atrasemos tamén o paso de baixada). moito - entón o algoritmo irá "en espadas"). E a gráfica do erro en función do paso de iteración non será suave, senón "entrecortada".

1. Xera datos, establece o paso de descenso do gradiente

Aprendizaxe automática sen Python, Anaconda e outros réptiles

2. Coa selección correcta do paso de descenso do gradiente, chegamos ao mínimo de forma suave e rápida

Aprendizaxe automática sen Python, Anaconda e outros réptiles

3. Se se selecciona incorrectamente o paso de descenso do gradiente, superamos o máximo, a gráfica de erro é "desigual", a converxencia leva un número maior de pasos

Aprendizaxe automática sen Python, Anaconda e outros réptiles
и

Aprendizaxe automática sen Python, Anaconda e outros réptiles

4. Se seleccionamos completamente incorrectamente o paso de descenso do gradiente, afastámonos do mínimo

Aprendizaxe automática sen Python, Anaconda e outros réptiles

(Para reproducir o proceso usando os valores do paso de descenso do gradiente que se mostran nas imaxes, marque a caixa "datos de referencia").

O ficheiro está nesta ligazón, cómpre activar as macros, non hai virus.

Segundo a respectada comunidade, é aceptable tal simplificación e método de presentación do material? Paga a pena traducir o artigo ao inglés?

Fonte: www.habr.com

Engadir un comentario