Come utilizzare l'apprendimento automatico per prevedere la qualità dei vini

Pubblicato anche nel mio blog tecnico

Machine Learning (ML) è un sottocampo dell'intelligenza artificiale. Si tratta di dare ai computer la possibilità di apprendere senza essere esplicitamente programmati. Nel corso degli anni, la popolarità e la domanda di machine learning sono state sicuramente in aumento, come indicato da questa curva di hype:

Curva hype ML negli ultimi 5 anni

Secondo Indeed, lo stipendio medio per un ingegnere di machine learning negli Stati Uniti è di $ 134.655. Ma cosa c'è di così speciale al punto che è uno dei lavori più pagati nella programmazione? Questo articolo ti aiuterà a comprendere la sua vasta gamma di applicazioni.

Questo tutorial prende il via dall'ultimo, che mostra come è possibile utilizzare Data Science per capire cosa rende buono il vino! Se non l'hai già fatto, dai un'occhiata prima e avrai una buona idea di cosa sia Data Science.

L'apprendimento automatico è spesso il passo successivo nella pipeline, subito dopo Data Science. Pronto a far parte dell'hype? Continua a leggere!

Sommario (sentitevi liberi di leggere in sequenza o saltare a parti specifiche di questo articolo)

  • Che cos'è l'apprendimento automatico?
  • Chi dovrebbe leggere questo tutorial
  • Iniziare
  • Tipi di apprendimento automatico -
  • Quali problemi può risolvere l'apprendimento supervisionato?
  • Il meccanismo dell'apprendimento automatico
  • Errori dovuti a distorsione e varianza: insufficiente e insufficiente
  • Alcuni degli algoritmi di Machine Learning più comunemente usati
  • Il processo di formazione
  • Metriche delle prestazioni per problemi di classificazione
  • Importanze delle funzioni
  • Ottimizzazione e ottimizzazione dell'iperparametro

Che cos'è l'apprendimento automatico?

Nel mondo reale abbiamo umani e abbiamo computer. Come impariamo noi umani? È semplice - dalle esperienze passate!

Ora, noi umani usiamo i nostri input sensoriali come occhi, orecchie o senso del tatto per ottenere dati dall'ambiente circostante. Quindi usiamo questi dati in molti modi interessanti e significativi. Più comunemente, lo usiamo per fare previsioni accurate sul futuro. In altre parole, impariamo.

Ad esempio, pioverà in questo periodo dell'anno? La tua ragazza si arrabbierà se dimentichi il suo compleanno? Dovresti fermarti quando il segnale stradale è rosso? Dovresti investire in un immobile? Con quale probabilità Jon Snow sopravviverà nella prossima stagione di GOT? Per rispondere a queste domande, hai bisogno di dati passati!

I computer, d'altra parte, tradizionalmente non usano i dati nello stesso modo in cui lo facciamo noi. Devono avere una serie specifica di istruzioni da seguire - in altre parole, un algoritmo. Un computer è molto bravo a seguire una sequenza di passaggi in breve tempo.

Ora la domanda è: i computer possono imparare dalle esperienze (o dai dati) passati, proprio come gli umani? Sì, puoi offrire loro la possibilità di apprendere e prevedere eventi futuri, senza essere esplicitamente programmati. Ed è proprio questo il machine learning. Dalle auto a guida autonoma, alla scoperta dei pianeti: le applicazioni di ML sono immense.

Ho anche letto un post davvero carino sulla differenza tra Data Science, Machine Learning e Artificial Intelligence. È piuttosto completo, quindi lo riassumerò:

  • Data Science produce approfondimenti
  • L'apprendimento automatico produce previsioni
  • L'intelligenza artificiale produce azioni

E ci sono molte sovrapposizioni tra questi campi, motivo per cui questi termini sono spesso usati in modo intercambiabile.

In Netflix, l'apprendimento automatico viene utilizzato per apprendere dai dati che contengono i profili comportamentali degli utenti e mostrano buoni consigli. La Ricerca Google è personalizzata per mostrare i risultati più rilevanti per te, sempre con molte tecniche ML che imparano continuamente dai dati dietro le quinte. Nella terra di Data Science e ML, i dati sono oro. Come direbbe Tyrion Lannister, di fronte al mondo di ML e AI:

Un'azienda ha bisogno di dati come una spada ha bisogno di una pietra per affilare, se vuole mantenere il suo vantaggio.

Ora che abbiamo capito di cosa si tratta, è tempo di immergersi!

Chi dovrebbe leggere questo tutorial:

Se desideri comprendere l'apprendimento automatico, ma sei stato scoraggiato perché ritieni che la matematica, le statistiche e l'implementazione di algoritmi da zero siano troppo complessi, questo tutorial è per te.

Ad un certo punto del tuo apprendimento, dovrai immergerti più a fondo - non puoi rifuggire dalla matematica per troppo tempo! Entro la fine di questo articolo, spero che sarai motivato ad esplorare ogni profondità di questo campo.

Se hai qualche conoscenza della programmazione in Python e hai completato il tutorial precedente, sei a posto.

Iniziamo!

Hai imparato molto sui tuoi vini dal tutorial precedente. Questa volta, la tua macchina farà l'apprendimento. Imparerai a costruire un modello di apprendimento automatico che, se gli attribuissi le caratteristiche del vino, ti direbbe con precisione quanto è buono il vino. Dopo aver completato questo tutorial, otterrai una comprensione di:

  • Diversi algoritmi e tecniche ML
  • Come addestrare e costruire un classificatore
  • Errori comuni che si verificano durante la creazione di modelli ML e come eliminarli
  • Come analizzare e interpretare le prestazioni dei tuoi modelli

Tipi di apprendimento automatico -

  • Apprendimento supervisionato (cosa impareremo in questo tutorial):

Come suggerisce il nome, l'Apprendimento Supervisionato ha bisogno di un essere umano per “supervisionare” e dire al computer cosa dovrebbe essere addestrato per prevedere, o dargli la risposta giusta. Forniamo al computer i dati di addestramento contenenti varie funzionalità e diciamo anche la risposta giusta.

Per fare un'analogia, immagina che il computer sia un bambino che è una tabula rasa. Lui non sa niente.

Ora, come insegni a Jon Snow la differenza tra un cane e un gatto? È abbastanza intuitivo: lo porti fuori a fare una passeggiata e quando vedi un gatto, lo fai notare e dici: "Questo è un gatto". Mentre continui a camminare potresti vedere un cane, quindi lo indichi di nuovo e dì "Questo è un cane". Nel corso del tempo, continuando a mostrare molti cani e gatti, il bambino imparerà a distinguere tra i due.

Certo, puoi sempre mostrare a Jon molte foto di cani e gatti invece di uscire a fare una passeggiata. Instagram in soccorso! : P

Per quanto riguarda il nostro set di dati sui vini, il nostro modello di apprendimento automatico imparerà a correlare la qualità dei vini rispetto al resto degli attributi. In altre parole, imparerà a identificare i modelli tra le caratteristiche e gli obiettivi (qualità).

  • Apprendimento non supervisionato:

Qui non diamo al computer un'etichetta "target" da prevedere. Invece, lasciamo che il computer scopra da solo i modelli e quindi scegliamo quello che ha più senso. Questa tecnica è necessaria, poiché spesso non sappiamo nemmeno cosa stiamo cercando nei nostri dati.

  • Insegnamento rafforzativo:

Viene utilizzato per addestrare un agente AI a "comportarsi" e imparare a scegliere l'azione migliore per un determinato scenario, sulla base di premi e feedback. Ha molti parallelismi con l'IA.

Oltre a questi tre, ci sono anche altri tipi di ML, come l'apprendimento semi-supervisionato, il clustering ecc.

Quali problemi può risolvere l'apprendimento supervisionato?

In generale, la ML supervisionata può essere utilizzata per risolvere due tipi di problemi:

https://aldro61.github.io/microbiome-summer-school-2017/sections/basics/
  • Classificazione: dove è necessario classificare una determinata osservazione in un gruppo. Nella figura sopra, se ti viene assegnato un punto, devi classificarlo come punto blu o rosso. Pochi altri esempi sarebbero: prevedere se una determinata email è spam o no? Una particella rilevata è un bosone di Higgs o una normale particella subatomica? O anche assegnare un determinato articolo di notizie in un gruppo - come sport, tempo o scienza.
  • Regressione: utilizzata nuovamente per la previsione e la previsione, ma per valori continui. Ad esempio, considera di essere un agente immobiliare che vuole vendere una casa di 2000 piedi quadrati, con 3 camere da letto e 5 scuole nella zona. Per quale prezzo dovresti vendere la casa?

Uno scenario in cui è necessario identificare le cellule tumorali benigne contro le cellule tumorali maligne sarebbe un problema di classificazione. Quindi il compito del classificatore di machine learning sarebbe quello di utilizzare i dati di training per apprendere e trovare questa linea, curva o confine decisionale che separa in modo più efficiente le due classi.

Nota che i problemi di classificazione non devono necessariamente essere binari: possiamo avere problemi con più di 2 classi.

D'altra parte, uno scenario in cui è necessario determinare l'aspettativa di vita dei malati di cancro sarebbe un problema di regressione. In questo caso, il nostro modello dovrebbe trovare una linea o una curva che si generalizzi davvero bene per la maggior parte dei punti dati.

Alcuni problemi di regressione possono anche essere trasformati in un problema di classificazione. Inoltre, alcuni tipi di problemi potrebbero benissimo appartenere a entrambi i tipi, alla classificazione e alla regressione.

Il meccanismo dell'apprendimento automatico

La maggior parte dei problemi nell'apprendimento supervisionato può essere risolta in tre fasi:

#Fase 1: Preparazione, trasformazione e suddivisione dei dati

Il primo passo è analizzare i dati e prepararli per l'uso a scopi di formazione. Osserva cose come quanto è distorto, quanto è ben distribuito e statistiche come media e mediana delle caratteristiche. Lo abbiamo già trattato nel blog precedente.

Una volta compresi, è possibile preelaborarli e applicare trasformazioni di funzionalità ad esso, se necessario.

Successivamente, dividi i dati in due set: un blocco più grande per l'allenamento e l'altro più piccolo per il test. Il nostro classificatore utilizzerà il set di dati di formazione per "apprendere". Abbiamo bisogno di una porzione separata di dati per i test e la convalida, in modo da poter vedere come il nostro modello funziona su dati che non ha mai visto prima.

#Fase 2: Allenamento

Quindi vai a costruire un modello. Puoi farlo creando una funzione o un "modello" e allenandolo utilizzando i tuoi dati. La funzione userebbe internamente qualsiasi algoritmo di tua scelta e userebbe i tuoi dati per allenarsi e comprendere schemi o apprendere. Ricorda, il tuo classificatore è buono solo quanto è buono il suo insegnante (sei tu) - quindi devi allenarlo nel modo giusto!

#Fase 3: Test e convalida

Una volta che il modello è stato addestrato, potresti fornirgli nuovi dati invisibili e ti darà un risultato o una previsione.

#Fase 4: Ottimizzazione dell'iperparametro

Infine, proverai a migliorare le prestazioni del tuo algoritmo.

Ora, prima di approfondire alcuni algoritmi di machine learning, dobbiamo conoscere alcuni possibili errori che potrebbero verificarsi in problemi di classificazione o regressione.

Errore dovuto a distorsione: precisione e insufficienza

La distorsione si verifica quando un modello ha abbastanza dati ma non è abbastanza complesso per acquisire le relazioni sottostanti. Di conseguenza, il modello travisa sistematicamente e sistematicamente i dati, portando a una bassa precisione nella previsione. Questo è noto come underfitting.

In poche parole, la distorsione si verifica quando abbiamo un modello inadeguato. Un esempio potrebbe essere quando stiamo cercando di identificare i personaggi di Game of Thrones come nobili o contadini, in base alle altezze e agli abiti del personaggio. Se il nostro modello fosse in grado di suddividere e classificare i personaggi solo in base all'altezza, avrebbe etichettato Tyrion Lannister (un nano) come un contadino - e sarebbe sbagliato!

Un altro esempio potrebbe essere quando abbiamo oggetti classificati per colore e forma, ad esempio le uova di Pasqua. Ma il nostro modello può solo partizionare e classificare gli oggetti per colore. Pertanto, eticherebbe costantemente gli oggetti futuri, ad esempio etichettare gli arcobaleni come uova di Pasqua perché sono colorati.

Per quanto riguarda il nostro set di dati sul vino, il nostro classificatore di machine learning non sarà adatto se è troppo "ubriaco" con un solo tipo di vino. : P

Un altro esempio potrebbe essere rappresentato da dati continui di natura polinomiale, con un modello che può rappresentare solo relazioni lineari. In questo caso, non importa quanti dati alimentiamo il modello perché non può rappresentare la relazione sottostante. Per superare l'errore derivante dalla distorsione, abbiamo bisogno di un modello più complesso.

Errore dovuto alla varianza: precisione e adattamento eccessivo

La varianza è una misura di quanto "sensibile" sia il modello rispetto a un sottoinsieme dei dati di addestramento.

Durante l'addestramento di un modello, in genere utilizziamo un numero limitato di campioni provenienti da una popolazione più ampia. Se formiamo ripetutamente un modello con sottoinsiemi di dati selezionati casualmente, ci aspetteremmo che le sue previsioni siano diverse in base agli esempi specifici forniti. Qui la varianza è una misura di quanto variano le previsioni per ogni dato campione di prova.

Una certa varianza è normale, ma troppa varianza indica che il modello non è in grado di generalizzare le sue previsioni alla popolazione più ampia. In tale scenario, il modello sarà molto accurato per i dati che ha già visto prima. Ma funzionerà male per punti dati invisibili. L'elevata sensibilità al set di allenamento è anche nota come overfitting e generalmente si verifica quando il modello è troppo complesso. Se il tuo modello è troppo attillato, probabilmente dovrai liberarlo.

In genere possiamo ridurre la variabilità delle previsioni di un modello e aumentare la precisione addestrando su più dati. Se non sono disponibili più dati, possiamo anche controllare la varianza limitando la complessità del nostro modello.

Per il programmatore, la sfida consiste nell'utilizzare il giusto tipo di algoritmo che risolve in modo ottimale il problema, evitando al contempo un'inclinazione elevata o una varianza elevata. Il motivo è perché:

  • L'aumento del bias diminuirà la varianza
  • L'aumento della varianza diminuirà il bias

Questo è anche comunemente definito il compromesso di Bias-Variance. Ecco un bellissimo post dettagliato che puoi leggere in seguito.

Quindi, a differenza della programmazione tradizionale, i problemi di Machine Learning e Deep Learning possono spesso comportare molti approcci basati sull'errore e la traccia quando si cerca di trovare il modello migliore.

Ora, devi avere un'idea di base su alcuni degli algoritmi che puoi utilizzare per addestrare il tuo modello. Non mi immergerò nella matematica o nei dettagli di implementazione di livello inferiore, ma questo dovrebbe essere sufficiente per darti qualche prospettiva.

Alcuni degli algoritmi di Machine Learning più comunemente usati:

  1. Gaussian Naive Bayes

Questa tecnica esiste dagli anni '50. Appartiene a una famiglia di algoritmi chiamati classificatori probabilistici o probabilità condizionale, in cui assume anche l'indipendenza tra le caratteristiche. Naive Bayes può essere applicato in modo efficace per alcuni problemi di classificazione, come contrassegnare le e-mail come spam o non spam o classificare articoli di notizie.

2. Alberi decisionali

È fondamentalmente una struttura di dati ad albero, che si comporta come un diagramma di flusso. Un albero decisionale è un algoritmo di classificazione che utilizza strutture di dati ad albero per modellare le decisioni e i loro possibili risultati. Il modo in cui funziona l'algoritmo è:

  • Posiziona l'attributo migliore del set di dati nella radice dell'albero.
  • I nodi, o il luogo in cui un ramo si divide, viene spesso chiamato "nodo decisionale". Di solito rappresenta un test / condizionale. (come se è nuvoloso o soleggiato)
  • Le filiali rappresentano il risultato di ogni decisione.
  • I nodi foglia indicano il risultato finale o l'etichetta (nei problemi di classificazione) o un valore discreto nei problemi di regressione.

3. Foreste casuali

Se usati da soli, gli alberi decisionali sono inclini a un eccesso di adattamento. Tuttavia, le foreste casuali aiutano correggendo il possibile eccesso di adattamento che potrebbe verificarsi. Le foreste casuali funzionano utilizzando più alberi decisionali: utilizzando una moltitudine di diversi alberi decisionali con previsioni diverse, una foresta casuale combina i risultati di quei singoli alberi per ottenere i risultati finali.

La foresta casuale applica un algoritmo ensemble chiamato insaccamento agli alberi delle decisioni, che aiuta a ridurre la varianza e il sovradimensionamento.

  • Dato un set di allenamento X = x1,…, xn con le etichette / i risultati Y = y1,…, yn, il bagging ripetutamente (B volte) seleziona un campione casuale con la sostituzione del set di allenamento
  • Addestra alberi decisionali con quei campioni
  • Fai le classifiche prendendo il voto maggioritario degli alberi di classificazione

Oltre a questi, ci sono molti altri algoritmi, come Support Vector Machines, metodi Ensemble e molti metodi di apprendimento non supervisionato. Ne parleremo più avanti.

Ora è il momento di iniziare con la nostra pipeline di formazione!

Innanzitutto, dovremo preparare i nostri dati.

Ai fini di questo tutorial, convertirai il nostro problema di regressione in un problema di classificazione. Tutti i vini con rating inferiore a 5 rientreranno nella categoria 0 (scadente), i vini con rating 5 e 6 saranno classificati con il valore 1 (medio) e i vini con 7 e oltre saranno di ottima qualità (2).

#Definizione delle divisioni per le categorie. 1–4 sarà di scarsa qualità, 5–6 sarà nella media, 7–10 sarà eccezionale
bin = = 1,4,6,10]
# 0 per bassa qualità, 1 per media, 2 per ottima qualità
quality_labels = [0,1,2]
data ['quality_categorical'] = pd.cut (data ['quality'], bins = bins, labels = quality_labels, include_lowest = True)
# Visualizza le prime 2 colonne
visualizzazione (data.head (n = 2))
# Dividi i dati in caratteristiche ed etichetta di destinazione
quality_raw = data ['quality_categorical']
features_raw = data.drop (['quality', 'quality_categorical'], axis = 1)

Come puoi vedere, c'è una nuova colonna chiamata quality_categorical che classifica le classificazioni di qualità in base all'intervallo scelto in precedenza. Utilizzerai quality_categorical come valori target e il resto come caratteristiche.

Successivamente, creerai sottoinsiemi di formazione e test per i dati:

# Import train_test_split
da sklearn.model_selection import train_test_split
# Suddividere i dati "caratteristiche" e "reddito" in set di formazione e test
X_train, X_test, y_train, y_test = train_test_split (features_raw,
 quality_raw,
 test_size = 0.2,
 random_state = 0)
# Mostra i risultati della divisione
print ("Il set di addestramento ha {} campioni.". formato (X_train.shape [0]))
print ("Il set di test ha {} campioni.". formato (X_test.shape [0]))

Nella cella di codice sopra, utilizziamo il metodo sklearn train_test_split e gli forniamo i dati delle nostre caratteristiche (X) e le etichette di destinazione (y). Mescola e divide il nostro set di dati in due parti: l'80% viene utilizzato per la formazione e il restante 20% viene utilizzato a scopo di test.

Successivamente, eseguiremo la nostra formazione su un algoritmo e ne valuteremo le prestazioni.

Avrai bisogno di una funzione che accetti un algoritmo ML di tua scelta e i set di dati di training e test. La funzione eseguirà l'allenamento e quindi valuterà le prestazioni dell'algoritmo utilizzando alcune metriche delle prestazioni.

Infine, scriverai una funzione in cui inizializzerai 3 algoritmi di tua scelta ed eseguirai l'addestramento su ciascuno di essi usando la funzione sopra. Quindi aggregherai tutti i risultati e poi li visualizzerai.

# Importare tre modelli di classificazione di apprendimento supervisionato da sklearn
da sklearn.naive_bayes import GaussianNB
da sklearn.tree import DecisionTreeClassifier
da sklearn.ensemble import RandomForestClassifier
#from sklearn.linear_model import LogisticRegression
# Inizializza i tre modelli
clf_A = GaussianNB ()
clf_B = DecisionTreeClassifier (max_depth = None, random_state = None)
clf_C = RandomForestClassifier (max_depth = None, random_state = None)
# Calcola il numero di campioni per l'1%, il 10% e il 100% dei dati di addestramento
# SUGGERIMENTO: samples_100 è l'intero set di training, ad esempio len (y_train)
# SUGGERIMENTO: samples_10 è il 10% di samples_100
# SUGGERIMENTO: samples_1 è l'1% di samples_100
samples_100 = len (y_train)
samples_10 = int (len (y_train) * 10/100)
samples_1 = int (len (y_train) * 1/100)
# Raccogli i risultati sugli studenti
risultati = {}
per clf in [clf_A, clf_B, clf_C]:
    clf_name = clf .__ class __.__ name__
    risultati [clf_name] = {}
    per i, campioni in elenco ([samples_1, samples_10, samples_100]):
    risultati [clf_name] [i] = \
    train_predict_evaluate (clf, samples, X_train, y_train, X_test, y_test)
#print (risultati)
# Esegui la visualizzazione delle metriche per i tre modelli di apprendimento supervisionato scelti
vs.visualize_classification_performance (risultati)

L'output sarà simile al seguente:

Il grafico sopra mostra quanto bene gli algoritmi si sono comportati nelle previsioni. La prima riga mostra le metriche delle prestazioni sui dati di allenamento e la seconda riga mostra le metriche per i dati di test (dati che non sono stati mai visti prima). Che cosa significano queste metriche delle prestazioni? Continuare a leggere…

Metriche delle prestazioni per problemi di classificazione

Precisione

La precisione è di gran lunga la metrica di prestazione più semplice e più comunemente usata. È semplicemente il rapporto tra previsioni corrette diviso per il totale dei punti dati. Tuttavia, potremmo avere scenari in cui il nostro modello potrebbe avere una precisione davvero buona, ma potrebbe non funzionare bene per nuovi punti dati invisibili.

Quando l'accuratezza non è un buon indicatore delle prestazioni?

A volte le distribuzioni di classificazione in un set di dati possono essere fortemente distorte. Ciò significa che i dati potrebbero contenere molti punti dati per alcune classi e molti meno per le altre. Esaminiamo questo con un esempio.

Supponiamo che tu abbia un set di dati di 100 email diverse. Tra queste email, 10 sono spam, mentre le altre 90 non lo sono. Ciò significa che il nostro set di dati è distorto e distribuito in modo non uniforme tra le due classi: e-mail che sono spam e e-mail che non sono spam.

Ora, immagina di aver addestrato un classificatore utilizzando questo set di dati per prevedere se una nuova e-mail fosse o meno spam. Dopo aver valutato le sue prestazioni, hai ottenuto un tasso di precisione del 90%. Sembra abbastanza buono vero? Non proprio.

Il motivo è che il classificatore potrebbe etichettare o prevedere tutte e 100 le email come "Non spam" e avere comunque una grande precisione. In questo caso, avrebbe 90/100 = 0,9, o un tasso di precisione del 90%! Ma questo classificatore non è utile per noi, poiché classifica sempre ogni email come non spam.

Pertanto, l'accuratezza non è sempre un buon indicatore delle prestazioni. Esistono altre metriche che possono aiutarti a valutare meglio i tuoi modelli in determinate situazioni:

Precisione

La precisione ci dice quale percentuale di messaggi classificati come spam erano effettivamente spam. È un rapporto tra i veri positivi (e-mail classificate come spam e che in realtà sono spam) e tutti i positivi (tutte le e-mail classificate come spam, indipendentemente dal fatto che fosse la classificazione corretta). In altre parole, è il rapporto tra veri positivi / (veri positivi + falsi positivi).

Richiamare

Richiamo o sensibilità ci dicono quale percentuale di messaggi che erano effettivamente spam sono stati classificati da noi come spam. È un rapporto tra i veri positivi (parole classificate come spam e che in realtà sono spam) e tutte le parole che erano effettivamente spam (indipendentemente dal fatto che li abbiamo classificati correttamente). È dato dalla formula - Veri positivi / (Veri positivi + Falsi negativi)

Ora, per il nostro classificatore che ha un tasso di accuratezza del 90%, quale sarebbe la sua precisione e il suo richiamo? Vediamo - i suoi veri positivi sono 0, i falsi positivi sono 0 e i falsi negativi sono 10. Inserendoli nelle nostre formule, il nostro classificatore ha valori di precisione e di richiamo di 0 - punteggi piuttosto abissali! Non sembra così bello adesso, vero?

Punteggio F1

Il punteggio F1 è la media armonica di precisione e richiamo. È dato dalla formula:

Se si imposta il valore di β su un valore più elevato, viene posta maggiore enfasi sulla precisione.

Ora diamo un'occhiata al rendimento dei nostri algoritmi ML:

Da questi risultati, possiamo vedere che le prestazioni di Gaussian Naive Bayes non sono eccezionali come quelle di Decision Tree o Random Forests.

Perché pensi che non riesca a funzionare così come gli altri algoritmi? (Suggerimento: sentiti libero di scorrere verso l'alto e leggere ancora una volta la spiegazione di Gaussian Naive Bayes!)

Importanze delle funzioni

Alcuni degli algoritmi di classificazione forniti da scikit-learn presentano un attributo di importanza delle funzionalità. Usando questo attributo, puoi vedere l'importanza di ogni caratteristica in base ai relativi ranghi quando fai delle previsioni, in base all'algoritmo scelto.

Il Classificatore casuale della foresta in scikit-learn ha un attributo .feature_importance_, quindi puoi usare lo stesso classificatore o sceglierne un altro.

# Importa un modello di apprendimento supervisionato che ha "feature_importances_"
modello = RandomForestClassifier (max_depth = None, random_state = None)
# Addestra il modello supervisionato sul set di allenamento usando .fit (X_train, y_train)
model = model.fit (X_train, y_train)
# Estrai le importazioni delle funzionalità utilizzando .feature_importances_
importances = model.feature_importances_
stampa (X_train.columns)
stampa (importanze)
# Trama
vs.feature_plot (importances, X_train, y_train)

Questo ti darà le seguenti classifiche relative:

Come puoi vedere chiaramente, il grafico mostra cinque caratteristiche più importanti che determinano quanto è buono un vino. Il contenuto di alcol e i livelli di acidità volatile sembrano essere i fattori più influenti, seguiti da solfati, acido citrico e livelli di acidità fissi.

Ottimizzazione e ottimizzazione dell'iperparametro

Come avrai notato, Machine Learning (o anche Deep Learning, per quel che riguarda) è correlato a Data Science. Come ogni altra scienza, inizia con alcune osservazioni precedenti. Quindi fai un'ipotesi, esegui alcuni esperimenti e poi analizzi quanto da vicino replicano le osservazioni precedenti. Questo è anche noto come il metodo scientifico. È simile anche al processo di ingegneria.

Un'ipotesi può anche essere considerata come un "presupposto". Durante la costruzione del nostro classificatore, abbiamo prima ipotizzato un gruppo di algoritmi, che a nostro avviso funzionerebbero bene. Ma anche la nostra ipotesi potrebbe essere sbagliata. Non siamo ancora sicuri che siano "su misura" o "ottimizzati" bene. Spesso, dobbiamo sintonizzare le nostre ipotesi per vedere se possono essere migliorate.

Durante la scelta dei nostri modelli di Machine Learning, abbiamo formulato ipotesi iniziali su alcuni dei loro iperparametri. Un iperparametro è un tipo speciale di variabile di configurazione il cui valore non può essere calcolato direttamente utilizzando il set di dati. È compito dello scienziato dei dati o dell'ingegnere dell'apprendimento automatico sperimentare e capire i valori ottimali di questi iperparametri. Questo processo si chiama ottimizzazione dell'iperparametro.

Ora, per il nostro algoritmo di foresta casuale, quali potrebbero essere i suoi iperparametri?

  • Numero di alberi decisionali nella foresta
  • Il numero di funzioni da considerare durante la ricerca della migliore suddivisione in un albero
  • La massima profondità dell'albero o il percorso più lungo dalla radice alla sua foglia

Per questi iperparametri, il nostro classificatore di foreste casuali ha utilizzato valori predefiniti inclusi nelle API di scikit-learn.

Ora, non ci vorrebbe molto tempo per addestrarci, analizzare e registrare ripetutamente le prestazioni di un algoritmo per valori diversi di un gruppo di iperparametri?

Sì lo farebbe! Fortunatamente per noi, scikit-learn fornisce un'API molto conveniente che fa il lavoro pesante per noi. Possiamo specificare valori diversi per i nostri iperparametri in una "griglia" e l'API GridSearchCV di scikit-learn formerebbe ed eseguirà la convalida incrociata su tutte le possibili combinazioni di questi iperparametri e ci fornirà la configurazione ottimale. In questo modo, non è necessario eseguire manualmente così tante iterazioni.

Esegui il codice nel blocco di celle successivo per ottimizzare il tuo modello:

E fatto. Puoi vedere che le prestazioni del nostro modello sono in effetti leggermente aumentate!

Utilizzo del modello per le previsioni

Infine, puoi testare il tuo modello dandogli un sacco di valori per varie funzionalità e vedere cosa prevede:

Congratulazioni! Hai creato con successo il tuo classificatore di apprendimento automatico in grado di prevedere vini buoni e vini cattivi. Spero che ti sia divertito a risolvere questo esercizio. Adesso siediti, bevi un drink e goditi la tua conoscenza dell'apprendimento automatico!

Alcune domande su cui dovresti riflettere:

  • Il tuo classificatore è più adatto per rilevare vini medi o meglio attrezzato per rilevare buoni vini? Quale pensi possa essere la ragione?
  • Consiglieresti il ​​tuo classificatore a un produttore di vino? Se sì, allora perché? Se no, perché no?
  • Quanto bene funzionerà il tuo modello se lo hai allenato usando tecniche di regressione, invece di classificarlo?

Quale prossimo?

  • Prova a risolvere questo esercizio con il set di dati sui vini bianchi
  • Vai su Kaggle, esplora diversi set di dati e lavora su uno che ritieni interessante.
  • Scrivi un servizio API che utilizza i tuoi modelli di apprendimento automatico e crea una bella app Web o mobile

Infine, dovresti assolutamente dare un'occhiata a queste risorse:

  • Una guida per principianti di AI e ML
  • Oltre 200 dei migliori tutorial di Machine Learning, NLP e Python - Edizione 2018
  • Padronanza dell'apprendimento automatico
  • Introduzione all'apprendimento automatico - Udacity
  • Un'introduzione visiva all'apprendimento automatico
  • Un tour di algoritmi di Machine Learning
  • 40 Domande di intervista poste a Startup Data Science e Machine Learning

Fino ad allora, Valar Alcoholis! Che tu possa ottenere fantastici punteggi in F1 per tutte le tue (soluzioni) quest'anno.

Ti è piaciuto quello che hai letto? Devi iscriverti. Non perderò il tuo tempo.

In caso di domande o se desideri trattare un determinato argomento, non esitare a lasciare un commento! Cosa vorresti imparare dopo?