Apprendimento automatico: flussi di lavoro automatici

introduzione

Per eseguire e produrre risultati con successo, un modello di machine learning deve automatizzare alcuni flussi di lavoro standard. Il processo di automatizzazione di questi flussi di lavoro standard può essere eseguito con l'aiuto di Scikit-learn Pipelines. Dal punto di vista di un data scientist, la pipeline è un concetto generalizzato ma molto importante. Fondamentalmente consente il flusso di dati dal suo formato grezzo ad alcune informazioni utili. Il funzionamento delle condutture può essere compreso con l'aiuto del seguente diagramma:

I blocchi delle pipeline ML sono i seguenti:

Data ingestion- Come suggerisce il nome, è il processo di importazione dei dati da utilizzare nel progetto ML. I dati possono essere estratti in tempo reale o batch da sistemi singoli o multipli. È uno dei passaggi più impegnativi perché la qualità dei dati può influire sull'intero modello ML.

Data Preparation- Dopo aver importato i dati, dobbiamo preparare i dati da utilizzare per il nostro modello ML. La preelaborazione dei dati è una delle tecniche più importanti di preparazione dei dati.

ML Model Training- Il prossimo passo è addestrare il nostro modello ML. Abbiamo vari algoritmi ML come rinforzo supervisionato, non supervisionato, per estrarre le caratteristiche dai dati e fare previsioni.

Model Evaluation- Successivamente, dobbiamo valutare il modello ML. In caso di pipeline AutoML, il modello ML può essere valutato con l'aiuto di vari metodi statistici e regole di business.

ML Model retraining- In caso di pipeline AutoML, non è necessario che il primo modello sia il migliore. Il primo modello è considerato come un modello di base e possiamo addestrarlo ripetutamente per aumentare la precisione del modello.

Deployment- Alla fine, dobbiamo distribuire il modello. Questa fase prevede l'applicazione e la migrazione del modello alle operazioni aziendali per il loro utilizzo.

Sfide che accompagnano le pipeline ML

Per creare pipeline ML, i data scientist devono affrontare molte sfide. Queste sfide rientrano nelle seguenti tre categorie:

Qualità dei dati

Il successo di qualsiasi modello di machine learning dipende in larga misura dalla qualità dei dati. Se i dati che forniamo al modello ML non sono accurati, affidabili e robusti, finiremo con un output sbagliato o fuorviante.

Affidabilità dei dati

Un'altra sfida associata alle pipeline ML è l'affidabilità dei dati che forniamo al modello ML. Come sappiamo, possono esserci varie fonti da cui il data scientist può acquisire dati, ma per ottenere i migliori risultati, è necessario garantire che le fonti di dati siano affidabili e affidabili.

Accessibilità dei dati

Per ottenere i migliori risultati dalle pipeline ML, i dati stessi devono essere accessibili, il che richiede consolidamento, pulizia e cura dei dati. Come risultato della proprietà di accessibilità ai dati, i metadati verranno aggiornati con nuovi tag.

Modellazione della pipeline ML e preparazione dei dati

La fuga di dati, che si verifica dal set di dati di addestramento al set di dati di test, è un problema importante da affrontare per i data scientist durante la preparazione dei dati per il modello ML. In genere, al momento della preparazione dei dati, il data scientist utilizza tecniche come la standardizzazione o la normalizzazione sull'intero set di dati prima dell'apprendimento. Ma queste tecniche non possono aiutarci dalla fuga di dati perché il set di dati di addestramento sarebbe stato influenzato dalla scala dei dati nel set di dati di test.

Utilizzando le pipeline ML, possiamo prevenire questa fuga di dati perché le pipeline garantiscono che la preparazione dei dati come la standardizzazione sia vincolata a ogni piega della nostra procedura di convalida incrociata.

Esempio

Il seguente è un esempio in Python che dimostra la preparazione dei dati e il flusso di lavoro di valutazione del modello. A tale scopo, utilizziamo il set di dati Pima Indian Diabetes di Sklearn. Innanzitutto, creeremo una pipeline che standardizza i dati. Quindi verrà creato un modello di analisi discriminante lineare e alla fine la pipeline verrà valutata utilizzando una convalida incrociata di 10 volte.

Innanzitutto, importa i pacchetti richiesti come segue:

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

Ora, dobbiamo caricare il set di dati sul diabete Pima come negli esempi precedenti -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values

Successivamente, creeremo una pipeline con l'aiuto del seguente codice:

estimators = []
estimators.append(('standardize', StandardScaler()))
estimators.append(('lda', LinearDiscriminantAnalysis()))
model = Pipeline(estimators)

Infine, valuteremo questa pipeline e ne mostreremo l'accuratezza come segue:

kfold = KFold(n_splits=20, random_state=7)
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Produzione

0.7790148448043184

L'output di cui sopra è il riepilogo dell'accuratezza della configurazione sul set di dati.

Modellazione di pipeline ML ed estrazione di feature

La perdita di dati può verificarsi anche nella fase di estrazione delle caratteristiche del modello ML. Questo è il motivo per cui anche le procedure di estrazione delle funzionalità dovrebbero essere limitate per arrestare la fuga di dati nel nostro set di dati di addestramento. Come nel caso della preparazione dei dati, utilizzando pipeline ML, possiamo prevenire anche questa fuga di dati. A tale scopo è possibile utilizzare FeatureUnion, uno strumento fornito dalle pipeline ML.

Esempio

Di seguito è riportato un esempio in Python che dimostra l'estrazione delle funzionalità e il flusso di lavoro di valutazione del modello. A tale scopo, utilizziamo il set di dati Pima Indian Diabetes di Sklearn.

Innanzitutto, 3 caratteristiche verranno estratte con PCA (Principal Component Analysis). Quindi, 6 caratteristiche verranno estratte con Analisi statistica. Dopo l'estrazione della feature, il risultato della selezione di più feature e le procedure di estrazione verranno combinate utilizzando

Strumento FeatureUnion. Infine, verrà creato un modello di regressione logistica e la pipeline verrà valutata utilizzando una convalida incrociata di 10 volte.

Innanzitutto, importa i pacchetti richiesti come segue:

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import Pipeline
from sklearn.pipeline import FeatureUnion
from sklearn.linear_model import LogisticRegression
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest

Ora, dobbiamo caricare il set di dati sul diabete Pima come negli esempi precedenti -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values

Successivamente, l'unione delle funzionalità verrà creata come segue:

features = []
features.append(('pca', PCA(n_components=3)))
features.append(('select_best', SelectKBest(k=6)))
feature_union = FeatureUnion(features)

Successivamente, la pipeline verrà creata con l'aiuto delle seguenti righe di script:

estimators = []
estimators.append(('feature_union', feature_union))
estimators.append(('logistic', LogisticRegression()))
model = Pipeline(estimators)

Infine, valuteremo questa pipeline e ne mostreremo l'accuratezza come segue:

kfold = KFold(n_splits=20, random_state=7)
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Produzione

0.7789811066126855

L'output di cui sopra è il riepilogo dell'accuratezza della configurazione sul set di dati.