Progresser-en-maths

Maths + Toi = 1

Algorithmes machine learning
Informatique

Top 6 des algorithmes de Machine Learning de classification

Précédemment, nous avions fait un article sur les 3 algorithmes de machine learning à connaitre. Aujourd’hui, voice la suite avec 6 algorithmes, spécifiquement de classification. Nous présenterons aussi les bouts de code de base pour appeler ces algorithmes sur Python. Cet article n’a pas pour vocation à être un cours. Il a plutôt vocation à présenter de manière synthétique les algorithmes dont vous devez avoir entendu parler au minimum en classification.

La régression logistique

La régression logistique utilise la fonction sigmoïde ci-dessus pour renvoyer la probabilité d’un label. Elle est largement utilisée lorsque le problème de classification est binaire – vrai ou faux, gagnant ou perdant, positif ou négatif …

La fonction sigmoïde génère une sortie de probabilité. En comparant la probabilité avec un seuil prédéfini, l’objet est affecté à une étiquette en conséquence. Consultez mon article sur la régression logistique pour une présentation détaillée.

Voici la fonction sigmoïde, définie à partir de l’exponentielle :

f(x) = \dfrac{1}{1+e^{-x}}

Vous trouverez ci-dessous l’extrait de code d’une régression logistique par défaut. Vous trouverez à chaque fois les hyperparamètres courants à expérimenter. C’est là qu’on fait de l’engineering : On cherche quelles combinaisons donnent le meilleur résultat.

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

Les hyperparamètres à optimiser : Pénalité, Nombre d’itérations maximales, C (inverse du paramètre de régularisation), algorithme utilisé

Arbre de décision

Arbre de décision exemple

Nous vous conseillons là aussi d’aller voir la partie spécifique sur les arbres de décision de l’article précédent.

L’arbre de décision construit des branches d’arbre selon une approche hiérarchique. Chaque branche peut être considérée comme une instruction si-alors. Les branches se développent en partitionnant l’ensemble de données en sous-ensembles basés sur les caractéristiques les plus importantes. La classification finale se fait au niveau des feuilles de l’arbre de décision.

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

Les hyperparamètres à optimiser : les critères, la profondeur maximale de l’arbre, le nombre d’échantillons pouvant rentrer dans chaque branche, le nombre maximum de questions posées

La random forest

Comment faire une forêt ? Avec plein d’arbres : c’est comme ça qu’on construit une random forest qui est une collection d’arbres de décisions. Il s’agit d’un type courant de méthodes d’ensemble qui regroupent les résultats de plusieurs prédicteurs. La random forest utilise en outre la technique du « bagging ». Cette technique permet à chaque arbre formé sur un échantillon aléatoire de l’ensemble de données d’origine. Elle prend ensuite le vote majoritaire des arbres pour faire sa décision. Comparé à l’arbre de décision, il a une meilleure généralisation (pas d’overfitting). Cependant, il est moins interprétable, en raison du nombre de couches très grand ajoutées au modèle.

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

Les hyperparamètres à optimiser : Le nombre d’arbres, la profondeur des arbres, le fait d’utiliser ou non du bootstrap, le nombre minimum d’échantillons correspondant à une feuille donnée, …

Support vector machine (SVM)

Le support vector machine trouve la meilleure façon de classer les données en fonction de leur position. Elle définit une frontière entre la classe positive et la classe négative. Cette frontière est un hyperpla. Cet hyperplan maximise la distance entre les points de données de différentes classes. Comme l’arbre de décision et la forêt aléatoire, le support vector machine (SVM) on l’utilise pour la classification et la régression. On utilise le SVC (support vector classifier) uniquement pour les problèmes de classification.

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

Les hyperparamètres à optimiser : C, le choix du noyau, gamma

Les K-plus proches voisins (PPV ou KNN en anglais)

On peut considérer que l’algorithme des k plus proches voisins représente chaque point de données dans un espace à n dimensions, défini par n caractéristiques. Il calcule la distance entre un point et un autre, puis attribue l’étiquette des données non observées en fonction des étiquettes des points de données observés les plus proches. On utilise les plus proches voisins (KNN) aussi pour construire par exemple des systèmes de recommandation : mon voisin a des goûts simialires.

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

Les hyperparamètres à optimiser : Le nombre de voisins (le famux K), les poids des dimensions, la pénalité

Naive Bayes

L’algorithme Naive Bayes est basé sur le théorème de Bayes, une approche permettant de calculer la probabilité conditionnelle sur la base de connaissances préalables, et sur l’hypothèse naïve que chaque caractéristique est indépendante les unes des autres. Le plus grand avantage du Naive Bayes est que, alors que la plupart des algorithmes d’apprentissage automatique reposent sur une grande quantité de données d’apprentissage, ils sont relativement performants même lorsque la taille des données d’apprentissage est faible. Naive Bayes gaussien 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)

Les hyperparamètres à optimiser : la prior, var_smoothing : Portion de la plus grande variance de toutes les caractéristiques qui est ajoutée aux variances pour la stabilité du calcul.

Cet article vous a plus ? Retrouvez nos derniers articles sur le même thème :

Laisser un commentaire