Chaînes de traitement en apprentissage supervisé

Concevoir des flux de travail Machine Learning en Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Données étiquetées

  • Variables de caractéristiques (abrégé : X)
  • Étiquettes ou classe (abrégé : y)
credit_scoring.head(4)
  checking_status  duration  ...  foreign_worker class
0            '<0'         6  ...             yes  good
1      '0<=X<200'        48  ...             yes   bad
2   'no checking'        12  ...             yes  good
3            '<0'        42  ...             yes  good
Concevoir des flux de travail Machine Learning en Python

Ingénierie des caractéristiques

  • La plupart des classificateurs exigent des caractéristiques numériques
  • Il faut convertir les colonnes de chaînes en nombres

Prétraitez avec LabelEncoder de sklearn.preprocessing :

le = LabelEncoder()
le.fit_transform(credit_scoring['checking_status'])[:4]
array([1, 0, 3, 1])
Concevoir des flux de travail Machine Learning en Python

Ajustement du modèle

  • .fit(features, labels)
  • .predict(features)
features, labels = credit_scoring.drop('class', 1), credit_scoring['class']

model_nb = GaussianNB() model_nb.fit(features, labels) model_nb.predict(features.head(5))
['good' 'bad' 'good' 'bad' 'good']

Précision de 60 % sur les 5 premiers exemples.

Concevoir des flux de travail Machine Learning en Python

Sélection de modèle

  • .fit() optimise les paramètres du modèle donné
  • Et pour d'autres modèles ?

AdaBoostClassifier dépasse GaussianNB sur les cinq premiers points de données :

model_ab = AdaBoostClassifier()
model_ab.fit(features, labels)
model_ab.predict(features.head(5))
numpy.array(labels[0:5])
['good' 'bad' 'good' 'good' 'bad']
['good' 'bad' 'good' 'good' 'bad']
Concevoir des flux de travail Machine Learning en Python

Évaluation des performances

Échantillons plus grands $\Rightarrow$ estimations de précision plus fiables :

from sklearn.metrics import accuracy_score
accuracy_score(labels, model_nb.predict(features)) # naive bayes
0.706
accuracy_score(labels, model_ab.predict(features)) # adaboost
0.802

Qu'est-ce qui cloche avec ce calcul ?

Concevoir des flux de travail Machine Learning en Python

Surapprentissage et partition des données

Surapprentissage : un modèle performe toujours mieux sur ses données d'entraînement que sur des données inédites.

Entraînez sur X_train, y_train, évaluez la précision sur X_test, y_test :

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

GaussianNB().fit(X_train, y_train).predict(X_test)
Concevoir des flux de travail Machine Learning en Python

Un flux de travail standard en apprentissage supervisé : ingénierie des caractéristiques, partition des données en entraînement et test, puis évaluation et sélection du modèle. Cette chaîne standard ne suffit pas toujours en contexte réel.

Concevoir des flux de travail Machine Learning en Python

Alors, de quoi parle ce cours ?

  1. Des façons évolutives d'ajuster votre chaîne.
  2. Assurer la pertinence des prédictions en impliquant des expertes et experts du domaine.
  3. Vérifier que votre modèle demeure performant dans le temps.
  4. Ajuster des modèles quand les étiquettes manquent.
Concevoir des flux de travail Machine Learning en Python

Auriez-vous pu prévenir la crise des prêts hypothécaires ?

Concevoir des flux de travail Machine Learning en Python

Preparing Video For Download...