Pipeline pour la classification

Cette page présente un pipeline pour la classification. C’est à dire le suivi d’un processus de l’exploration des données à la classification en passant par les modèles d’évaluation.

L’apprentissage supervisé peut être subdivisé en algorithmes de classification et de régression. Le modèle de classification identifie la catégorie à laquelle appartient un objet, tandis que le modèle de régression prédit une sortie continue.

Parfois, il existe une ligne ambiguë entre les algorithmes de classification et les algorithmes de régression. De nombreux algorithmes peuvent être utilisés à la fois pour la classification et la régression, et la classification n’est qu’un modèle de régression avec un seuil appliqué. Lorsque le nombre est supérieur au seuil, il est classé comme vrai tandis qu’un nombre inférieur est classé comme faux.

Dans cet article, nous discuterons des 6 meilleurs algorithmes d’apprentissage automatique pour les problèmes de classification, notamment : la régression logistique, l’arbre de décision, la forêt aléatoire, la machine à vecteurs de support, le voisin le plus proche k et les baies naïves. Voici la pipeline pour la classification.

Regression logistique

La régression logistique utilise la fonction sigmoïde ci-dessus pour renvoyer la probabilité d’une étiquette. Il est largement utilisé lorsque le problème de classification est binaire, par exemple vrai ou faux, gagnant ou perdant, positif ou négatif, etc.

La fonction sigmoïde génère une sortie de probabilité. Et en comparant la probabilité avec un seuil prédéfini, l’objet est affecté à une étiquette en conséquence.

from sklearn.linear_model import LogisticRegression
dtc = DecisionTreeClassifier()
dtc.fit(X_train, y_train)
y_pred = dtc.predict(X_test)

Arbre de décision

L’arbre de décision construit des branches d’arbre dans une approche hiérarchique et chaque branche peut être considérée comme une instruction if-else. Les branches se développent en partitionnant l’ensemble de données en sous-ensembles, en fonction des caractéristiques les plus importantes.

from sklearn.tree import DecisionTreeClassifier
reg = LogisticRegression()
reg.fit(X_train, y_train)
y_pred = reg.predict(X_test)

Random forest (forêt aléatoire)

Comme son nom l’indique, la forêt aléatoire est une collection d’arbres de décision. Il s’agit d’un type courant de méthodes d’ensemble – qui agrègent les résultats de plusieurs prédicteurs. La forêt aléatoire utilise en outre une technique d’ensachage qui permet à chaque arbre d’être entraîné sur un échantillonnage aléatoire de l’ensemble de données d’origine et d’obtenir le vote majoritaire des arbres. Comparé à l’arbre de décision, il a une meilleure généralisation mais est moins interprétable en raison du plus grand nombre de couches ajoutées au modèle.

from sklearn.ensemble import RandomForestClassifier
rfc = RandomForestClassifier()
rfc.fit(X_train, y_train)
y_pred = rfc.predict(X_test)

Machine à vecteurs de support (SVM)

La machine à vecteurs de support trouve le meilleur moyen de classer les données en fonction de la position par rapport à une frontière entre classe positive et classe négative. Cette frontière est connue sous le nom d’hyperplan qui maximise la distance entre les points de données de différentes classes. Semblable à l’arbre de décision et à la forêt aléatoire, la machine à vecteurs de support peut être utilisée à la fois dans la classification et la régression, SVC (classificateur de vecteurs de support) est choisi pour le problème de classification.

from sklearn.svm import SVC
svc = SVC()
svc.fit(X_train, y_train)
y_pred = svc.predict(X_test)

k plus proche voisin (kNN)

You can think of k nearest neighbour algorithm as representing each data point in a n dimensional space – which is defined by n features. And it calculates the distance between one point to another, then assign the label of unobserved data based on the labels of nearest observed data points. 

from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)

Bayes naïf

Naive Bayes est basé sur le théorème de Bayes – une approche pour calculer la probabilité conditionnelle basée sur des connaissances antérieures et l’hypothèse naïve selon laquelle chaque caractéristique est indépendante l’une de l’autre. Le plus grand avantage de Naive Bayes est que, bien que la plupart des algorithmes d’apprentissage automatique reposent sur une grande quantité de données d’entraînement, il fonctionne relativement bien même lorsque la taille des données d’entraînement est petite. Gaussian Naive Bayes est un type de classificateur Naive Bayes qui suit la distribution normale.

from sklearn.naive_bayes import GaussianNB
gnb = KNeighborsClassifier()
gnb.fit(X_train, y_train)
y_pred = gnb.predict(X_test)

Faire la pipeline pour la classification

Chargement de l’ensemble de données et aperçu des données

J’ai choisi l’ensemble de données populaire Heart Disease UCI sur Kaggle pour prédire la présence d’une maladie cardiaque en fonction de plusieurs facteurs liés à la santé. La première étape de la pipeline pour la classification est la compréhension des données.

Utilisez df.info() pour avoir une vue résumée de l’ensemble de données, y compris le type de données, les données manquantes et le nombre d’enregistrements.

Analyse exploratoire des données (EDA)

L’histogramme, le diagramme à barres groupées et le diagramme en boîte sont des techniques EDA appropriées pour les algorithmes d’apprentissage automatique de classification.

Analyse univariée

 

Pour effectuer une analyse univariée, l’histogramme est utilisé pour toutes les caractéristiques. En effet, toutes les entités ont été encodées en valeurs numériques dans le jeu de données. Cela nous fait gagner du temps pour l’encodage catégoriel qui se produit généralement pendant la phase d’ingénierie des fonctionnalités

Caractéristiques catégorielles par rapport à la cible – Graphique à barres groupées

Pour montrer comment la valeur catégorique pèse dans la détermination de la valeur cible, le graphique à barres groupées est une représentation simple. Par exemple, sexe = 1 et sexe = 0 ont une distribution distincte de la valeur cible, ce qui indique qu’il est susceptible de contribuer davantage à la prédiction de la cible. Au contraire, si la distribution cible est la même quelles que soient les caractéristiques catégorielles, cela signifie qu’elles ne sont pas corrélées.

Caractéristiques numériques par rapport à la cible – Boîte à moustaches

La boîte à moustaches montre comment les valeurs des caractéristiques numériques varient selon les groupes cibles. Par exemple, nous pouvons dire que « oldpeak » a une différence distincte lorsque la cible est 0 par rapport à la cible est 1, ce qui suggère qu’il s’agit d’un prédicteur important. Cependant, «trestbps» et «chol» semblent être moins remarquables, car la distribution de la boîte à moustaches est similaire entre les groupes cibles.

Séparation du jeu de données

L’algorithme de classification relève de la catégorie de l’apprentissage supervisé, de sorte que l’ensemble de données doit être divisé en un sous-ensemble pour la formation et un sous-ensemble pour les tests (parfois également un ensemble de validation). Le modèle est entraîné sur l’ensemble d’apprentissage, puis examiné à l’aide de l’ensemble de test.

from sklearn.model_selection import train_test_split
from sklearn import preprocessing

X = df.drop(['target'], axis=1)
y = df["target"]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

Pipeline pour la classification

Afin de créer un pipeline, j’ajoute tous les 6 principaux algorithmes de classification mentionnés ci-dessus dans la liste des modèles et je les parcourrai plus tard pour former, tester, prédire et évaluer.

Evaluation des modèles

Voici une explication abstraite des méthodes d’évaluation couramment utilisées pour les modèles de classification – précision, ROC et AUC et matrice de confusion. La pipeline pour la classification comprend à la fois le traitement des données, les modèles et leur évaluation.

La précision est l’indicateur le plus simple de la performance du modèle. Il mesure le pourcentage de prédictions exactes.

Le ROC est le graphique du taux de faux positifs par rapport au taux de vrais positifs à différents seuils de classification. AUC est la zone sous la courbe ROC, et une AUC plus élevée indique une meilleure performance du modèle.

La matrice de confusion indique les valeurs réelles par rapport aux valeurs prédites et résume les valeurs vraies négatives, fausses positives, fausses négatives et vraies positives dans un format matriciel.

 

​True Negative

 

False Positive

 

False Negative

 

True Positive

 
Ensuite, nous pouvons utiliser seaborn pour visualiser la matrice de confusion dans une carte thermique.

Sur la base des trois méthodes d’évaluation ci-dessus, les forêts aléatoires et les baies naïves ont les meilleures performances alors que KNN ne se porte pas bien. Cependant, cela ne signifie pas que les forêts aléatoires et les baies naïves sont des algorithmes supérieurs. Nous pouvons seulement dire qu’ils sont plus adaptés à cet ensemble de données où la taille est relativement plus petite et les données ne sont pas à la même échelle.

Chaque algorithme a sa propre préférence et nécessite différentes techniques de traitement des données et d’ingénierie des caractéristiques, par exemple KNN est sensible aux caractéristiques à différentes échelles et la multicolinéarité affecte le résultat de la régression logistique. Comprendre les caractéristiques de chacun nous permet d’équilibrer le compromis et de sélectionner le modèle approprié en fonction de l’ensemble de données.

Ceci marque la fin de la pipeline pour la classification !

FR
FR
FR
EN
ES
Quitter la version mobile