Hello,

L’un des problèmes lorsque l’on débute en machine learning est le choix de l’algorithme (ou modèle) à utiliser. Je viens de tomber sur un article du blog de Kaggle où l’auteur partage son approche des différents problèmes à résoudre en ML. J’ai noté deux parties qui m’ont éclairé un peu plus sur le choix des modèles et des hyperparamètres à régler.

Choix d’un modèle

Il y a deux grandes familles d’algorithmes : ceux qui permettent de réaliser une prédiction (à l’aide d’une régression) et ceux qui identifie une variable parmi d’autres (la classification). Les modèles les plus courants pour réaliser ses tâches sont donc :

Classification Regression
Random Forest Random Forest
GBM GBM
Logistic Regression Linear Regression
Naive Bayes Ridge
Support Vector Machines Lasso
k-Nearest Neighbors SVR

Choix des hyperparamètres

Les hyperparamètres sont ces variables qui permettent d’affiner le fonctionnement d’un modèle de machine learning. Jusqu’à présent, j’utilisais des valeurs trouvées dans un livre ou sur des sites internet, sans trop savoir qu’est ce que je pouvais utiliser, jusqu’à quelle valeur je pouvais aller.
Bref, j’y allais à tâtons au “pif-o-mètre”. Mais l’auteur partage également un tableau récapitulatif de ces différents hyperparamètres et les plages de valeurs les plus prometteuses.
Je le reprend ici :

Modèle Hyperparamètre Plage de données
Régression linéaire fit_interceptnormalize True / FalseTrue / False
Ridge alphafit_interceptnormalize 0.01, 0.1, 1.0, 10, 100True / FalseTrue / False
K-neighbors N_neighborsp 2, 4, 8, 16…2,3
SVM Cgammaclass_weight 0.001, 0.01…10…100…1000Auto ou Random SearchBalanced, None
Régression logistique PenaltyC L1 ou I20.001, 0.01…10…100
Naive Bayes aucun aucun
Lasso alphanormalize 0.1, 1.0, 10True / False
Random Forest n_estimatorsmax_depthmin_samples_splitmin_samples_leafmax_features 120, 300, 500, 800, 12005, 8, 15, 25, 30, None1, 2, 5, 10, 15, 1001, 2, 5, 10Log2, sqrt, None
Xgboost etagammamax_depthmin_child_weightsubsamplecolsample_bytreelambdaalpha 0.01, 0.015, 0.025, 0.05, 0.10.05-0.1, 0.3, 0.5, 0.7, 0.9, 1.03, 5, 7, 9, 12, 15, 17, 251, 3, 5, 70.6, 0.7, 0.8, 0.9, 1.00.6, 0.7, 0.8, 0.9, 1.00.01-0.1, 1.0, Random Search0, 0.1, 0.5, 1.0, Random Search

J’espère que ces petits récapitulatifs vous seront autant utiles qu’à moi ;-)

A bientôt !