Apprendimento automatico senza Python, Anaconda e altri rettili

No, beh, ovviamente, non sono serio. Deve esserci un limite alla misura in cui è possibile semplificare un argomento. Ma per le prime fasi, comprendere i concetti di base e "entrare" rapidamente nell'argomento, potrebbe essere accettabile. Alla fine discuteremo su come denominare correttamente questo materiale (opzioni: "Apprendimento automatico per manichini", "Analisi dei dati dai pannolini", "Algoritmi per i più piccoli").

Al punto. Ha scritto diversi programmi applicativi in ​​MS Excel per la visualizzazione e la rappresentazione visiva dei processi che si verificano in diversi metodi di apprendimento automatico durante l'analisi dei dati. Dopotutto, vedere per credere, come dicono i portatori della cultura che ha sviluppato la maggior parte di questi metodi (non tutti, tra l'altro). La più potente "support vector machine", o SVM, support vector machine è l'invenzione di il nostro connazionale Vladimir Vapnik, Istituto di Management di Mosca (1963, a proposito! Ora, però, insegna e lavora negli Stati Uniti).

Tre file da rivedere

1. K-significa clustering

Problemi di questo tipo si riferiscono all’“apprendimento non supervisionato”, quando dobbiamo dividere i dati iniziali in un certo numero di categorie conosciute in anticipo, ma non abbiamo un numero qualsiasi di “risposte corrette”; dobbiamo estrarle dai dati stessi . Proprio di questa natura è il classico problema fondamentale di trovare sottospecie di fiori di iris (Ronald Fisher, 1936!), che è considerato il primo segno di questo campo di conoscenza.

Il metodo è abbastanza semplice. Abbiamo un insieme di oggetti rappresentati come vettori (insiemi di N numeri). Negli iris si tratta di serie di 4 numeri che caratterizzano il fiore: rispettivamente la lunghezza e la larghezza dei lobi esterno ed interno del perianzio (Le iridi di Fischer - Wikipedia). Come distanza, o misura della vicinanza tra oggetti, viene scelta la consueta metrica cartesiana.

Successivamente, i centri dei cluster vengono selezionati in modo casuale (o non casuale, vedere di seguito) e vengono calcolate le distanze da ciascun oggetto ai centri dei cluster. Ogni oggetto in un dato passo di iterazione è contrassegnato come appartenente al centro più vicino. Quindi il centro di ciascun ammasso viene trasferito alla media aritmetica delle coordinate dei suoi membri (per analogia con la fisica, è anche chiamato “centro di massa”), e la procedura viene ripetuta.

Il processo converge abbastanza rapidamente. Nelle immagini in due dimensioni appare così:

1. Distribuzione casuale iniziale dei punti sul piano e numero di cluster

Apprendimento automatico senza Python, Anaconda e altri rettili

2. Specificare i centri dei cluster e assegnare punti ai relativi cluster

Apprendimento automatico senza Python, Anaconda e altri rettili

3. Trasferire le coordinate dei centri dei cluster, ricalcolare l'affiliazione dei punti finché i centri non si stabilizzano. È visibile la traiettoria del centro dell'ammasso che si sposta verso la sua posizione finale.

Apprendimento automatico senza Python, Anaconda e altri rettili

In qualsiasi momento è possibile impostare nuovi centri del cluster (senza generare una nuova distribuzione di punti!) e vedere che il processo di partizionamento non è sempre univoco. Matematicamente, ciò significa che per la funzione da ottimizzare (la somma delle distanze quadrate dai punti ai centri dei loro gruppi), non troviamo un minimo globale, ma locale. Questo problema può essere superato sia con una scelta non casuale dei centri iniziali del cluster, sia enumerando i possibili centri (a volte è vantaggioso posizionarli esattamente in uno dei punti, così almeno c'è la garanzia che non rimarremo vuoti cluster). In ogni caso un insieme finito ha sempre un minimo.

Puoi giocare con questo file a questo link (non dimenticare di abilitare il supporto macro. I file sono stati scansionati alla ricerca di virus)

Descrizione del metodo su Wikipedia - metodo k-significa

2. Approssimazione mediante polinomi e scomposizione dei dati. Riqualificazione

Notevole scienziato e divulgatore della scienza dei dati K.V. Vorontsov descrive brevemente i metodi di apprendimento automatico come “la scienza di disegnare curve attraverso punti”. In questo esempio, troveremo uno schema nei dati utilizzando il metodo dei minimi quadrati.

Viene mostrata la tecnica di dividere i dati di origine in "addestramento" e "controllo", nonché un fenomeno come la riqualificazione o il "riadattamento" dei dati. Con la corretta approssimazione, avremo un certo errore sui dati di addestramento e un errore leggermente maggiore sui dati di controllo. Se non è corretto, ciò comporta una regolazione precisa dei dati di addestramento e un errore enorme sui dati di test.

(È un fatto ben noto che attraverso N punti si può tracciare un'unica curva di N-1° grado, e questo metodo nel caso generale non dà il risultato desiderato. Polinomio di interpolazione di Lagrange su Wikipedia)

1. Impostare la distribuzione iniziale

Apprendimento automatico senza Python, Anaconda e altri rettili

2. Dividiamo i punti in “allenamento” e “controllo” in un rapporto da 70 a 30.

Apprendimento automatico senza Python, Anaconda e altri rettili

3. Disegniamo la curva di approssimazione lungo i punti di allenamento, vediamo l'errore che dà sui dati di controllo

Apprendimento automatico senza Python, Anaconda e altri rettili

4. Disegniamo una curva esatta attraverso i punti di allenamento e vediamo un errore mostruoso sui dati di controllo (e zero sui dati di allenamento, ma qual è il punto?).

Apprendimento automatico senza Python, Anaconda e altri rettili

Naturalmente viene mostrata l'opzione più semplice con un'unica divisione in sottoinsiemi di “addestramento” e “controllo”; nel caso generale, ciò viene fatto più volte per il miglior aggiustamento dei coefficienti.

Il file è disponibile qui, scansionato dall'antivirus. Abilita le macro per il corretto funzionamento

3. Discesa del gradiente e dinamica del cambiamento dell'errore

Ci sarà un caso quadridimensionale e una regressione lineare. I coefficienti di regressione lineare saranno determinati passo dopo passo utilizzando il metodo della discesa del gradiente, inizialmente tutti i coefficienti sono zero. Un grafico separato mostra la dinamica della riduzione dell'errore man mano che i coefficienti vengono adeguati in modo sempre più accurato. È possibile visualizzare tutte e quattro le proiezioni bidimensionali.

Se imposti il ​​passo di discesa della pendenza troppo grande, puoi vedere che ogni volta salteremo il minimo e arriveremo al risultato con un numero di passi maggiore, anche se alla fine arriveremo comunque (a meno che non ritardiamo troppo il passo di discesa molto - quindi l'algoritmo andrà " a picche"). E il grafico dell'errore a seconda del passaggio dell'iterazione non sarà fluido, ma “a scatti”.

1. Genera dati, imposta il passo di discesa del gradiente

Apprendimento automatico senza Python, Anaconda e altri rettili

2. Con la corretta selezione del gradino di discesa della pendenza, raggiungiamo il minimo in modo fluido e rapido

Apprendimento automatico senza Python, Anaconda e altri rettili

3. Se il passo di discesa del gradiente è selezionato in modo errato, superiamo il massimo, il grafico dell'errore è “a scatti”, la convergenza richiede un numero maggiore di passi

Apprendimento automatico senza Python, Anaconda e altri rettili
и

Apprendimento automatico senza Python, Anaconda e altri rettili

4. Se selezioniamo il passo di discesa della pendenza in modo completamente errato, ci allontaniamo dal minimo

Apprendimento automatico senza Python, Anaconda e altri rettili

(Per riprodurre il processo utilizzando i valori dei passi di discesa del gradiente mostrati nelle immagini, selezionare la casella “dati di riferimento”).

Il file è a questo link, bisogna abilitare le macro, non ci sono virus.

Secondo la comunità rispettata, una tale semplificazione e un metodo di presentazione del materiale sono accettabili? Vale la pena tradurre l'articolo in inglese?

Fonte: habr.com

Aggiungi un commento