Machine Learning - Flux de travail automatiques

introduction

Afin d'exécuter et de produire des résultats avec succès, un modèle d'apprentissage automatique doit automatiser certains flux de travail standard. Le processus d'automatisation de ces flux de travail standard peut être effectué à l'aide de Scikit-learn Pipelines. Du point de vue d'un data scientist, le pipeline est un concept généralisé mais très important. Il permet essentiellement le flux de données de son format brut vers certaines informations utiles. Le fonctionnement des pipelines peut être compris à l'aide du diagramme suivant -

Les blocs de pipelines ML sont les suivants -

Data ingestion- Comme son nom l'indique, il s'agit du processus d'importation des données à utiliser dans le projet ML. Les données peuvent être extraites en temps réel ou par lots à partir de systèmes uniques ou multiples. C'est l'une des étapes les plus difficiles car la qualité des données peut affecter l'ensemble du modèle ML.

Data Preparation- Après avoir importé les données, nous devons préparer les données à utiliser pour notre modèle ML. Le prétraitement des données est l'une des techniques les plus importantes de préparation des données.

ML Model Training- La prochaine étape consiste à former notre modèle ML. Nous avons divers algorithmes ML tels que supervisé, non supervisé, renforcement pour extraire les caractéristiques des données et faire des prédictions.

Model Evaluation- Ensuite, nous devons évaluer le modèle ML. Dans le cas d'un pipeline AutoML, le modèle ML peut être évalué à l'aide de diverses méthodes statistiques et règles métier.

ML Model retraining- Dans le cas d'un pipeline AutoML, il n'est pas nécessaire que le premier modèle soit le meilleur. Le premier modèle est considéré comme un modèle de base et nous pouvons l'entraîner de manière répétée pour augmenter la précision du modèle.

Deployment- Enfin, nous devons déployer le modèle. Cette étape implique l'application et la migration du modèle vers les opérations commerciales pour leur utilisation.

Les défis associés aux pipelines de ML

Afin de créer des pipelines ML, les data scientists sont confrontés à de nombreux défis. Ces défis entrent dans les trois catégories suivantes -

Qualité des données

Le succès de tout modèle ML dépend fortement de la qualité des données. Si les données que nous fournissons au modèle ML ne sont pas précises, fiables et robustes, alors nous allons finir avec une sortie fausse ou trompeuse.

Fiabilité des données

Un autre défi associé aux pipelines ML est la fiabilité des données que nous fournissons au modèle ML. Comme nous le savons, il peut y avoir diverses sources à partir desquelles le scientifique des données peut acquérir des données, mais pour obtenir les meilleurs résultats, il doit être assuré que les sources de données sont fiables et fiables.

Accessibilité des données

Pour obtenir les meilleurs résultats des pipelines ML, les données elles-mêmes doivent être accessibles, ce qui nécessite la consolidation, le nettoyage et la conservation des données. En raison de la propriété d'accessibilité des données, les métadonnées seront mises à jour avec de nouvelles balises.

Modélisation du pipeline ML et préparation des données

Les fuites de données, qui se produisent du jeu de données d'entraînement au jeu de données de test, sont un problème important pour le scientifique des données lors de la préparation des données pour le modèle ML. Généralement, au moment de la préparation des données, le data scientist utilise des techniques comme la standardisation ou la normalisation sur l'ensemble de données avant l'apprentissage. Mais ces techniques ne peuvent pas nous aider à éviter les fuites de données car l'ensemble de données d'entraînement aurait été influencé par l'échelle des données dans l'ensemble de données de test.

En utilisant des pipelines ML, nous pouvons empêcher cette fuite de données, car les pipelines garantissent que la préparation des données comme la standardisation est limitée à chaque volet de notre procédure de validation croisée.

Exemple

Voici un exemple en Python qui illustre le flux de travail de préparation des données et d'évaluation de modèle. À cette fin, nous utilisons l'ensemble de données Pima Indian Diabetes de Sklearn. Premièrement, nous créerons un pipeline qui normalisera les données. Ensuite, un modèle d'analyse discriminante linéaire sera créé et enfin le pipeline sera évalué en utilisant une validation croisée de 10 fois.

Tout d'abord, importez les packages requis comme suit -

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

Maintenant, nous devons charger l'ensemble de données sur le diabète Pima comme dans les exemples précédents -

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

Ensuite, nous allons créer un pipeline à l'aide du code suivant -

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

Enfin, nous allons évaluer ce pipeline et afficher sa précision comme suit -

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

Production

0.7790148448043184

La sortie ci-dessus est le résumé de la précision de la configuration sur l'ensemble de données.

Modélisation du pipeline ML et de l'extraction de fonctionnalités

Des fuites de données peuvent également se produire à l'étape d'extraction de caractéristiques du modèle ML. C'est pourquoi les procédures d'extraction d'entités doivent également être limitées pour arrêter les fuites de données dans notre ensemble de données d'entraînement. Comme dans le cas de la préparation de données, en utilisant des pipelines ML, nous pouvons également empêcher cette fuite de données. FeatureUnion, un outil fourni par les pipelines ML peut être utilisé à cet effet.

Exemple

Voici un exemple en Python qui illustre le flux de travail d'extraction de fonctionnalités et d'évaluation de modèle. À cette fin, nous utilisons l'ensemble de données Pima Indian Diabetes de Sklearn.

Tout d'abord, 3 fonctionnalités seront extraites avec PCA (Analyse en Composantes Principales). Ensuite, 6 fonctionnalités seront extraites avec l'analyse statistique. Après l'extraction de caractéristiques, le résultat de plusieurs procédures de sélection et d'extraction de caractéristiques sera combiné en utilisant

Outil FeatureUnion. Enfin, un modèle de régression logistique sera créé et le pipeline sera évalué à l'aide d'une validation croisée par 10.

Tout d'abord, importez les packages requis comme suit -

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

Maintenant, nous devons charger l'ensemble de données sur le diabète Pima comme dans les exemples précédents -

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

Ensuite, l'union d'entités sera créée comme suit -

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

Ensuite, le pipeline sera créé à l'aide des lignes de script suivantes -

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

Enfin, nous allons évaluer ce pipeline et afficher sa précision comme suit -

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

Production

0.7789811066126855

La sortie ci-dessus est le résumé de la précision de la configuration sur l'ensemble de données.