Un code propre ne suffit pas à mieux classer un modèle dans l'étude Kaggle

Un code propre ne suffit pas à mieux classer un modèle dans l’étude Kaggle

Mignard, Costiou et Etien ont publié en septembre une étude sur 265 363 notebooks Python issus d’un concours Kaggle. Dans ces compétitions, chaque participant envoie un programme pour faire une prédiction et reçoit un score. Les auteurs ont voulu savoir si un code propre allait de pair avec la performance du modèle. Leur réponse est nuancée : un notebook bien écrit n’obtient pas forcément un meilleur classement.

La différence tient en partie à ce que l’on regarde. Une interface visible sur 1xbet.ci ne permettrait pas, à elle seule, de juger la qualité du code qui la fait fonctionner. Pour Kaggle, les chercheurs ont donc séparé la propreté générale du Python des erreurs plus directement liées au travail sur les données et à l’apprentissage automatique.

Kaggle sert ici de terrain d’observation, pas de preuve pour tous les projets. Les auteurs ont travaillé sur des notebooks déjà rendus publics et ont aussi regardé leur popularité ainsi que l’expérience de leurs auteurs. Ils voulaient savoir si ces signaux permettaient de prévoir un code plus propre ou un meilleur score. Dans cet échantillon, ce n’est pas le cas.

Deux lectures du même notebook

Pour éviter de tout mettre dans le même sac, l’équipe a fait passer les notebooks dans deux outils. Le premier, Pylint, regarde le Python de tous les jours : noms oubliés, structures difficiles à relire, erreurs simples ou passages qui gagneraient à être repris.

Le second, SonarQube, a été configuré avec 34 règles propres au travail sur les données et au machine learning. Elles concernent par exemple la lecture des fichiers, la préparation des données ou certains choix qui peuvent fragiliser une chaîne d’apprentissage.

Le score obtenu dans le concours a ensuite été mis en regard de ces deux mesures, notebook par notebook.

Cette séparation a un intérêt simple. Un défaut de style ou une fonction trop longue n’a pas le même effet qu’une erreur qui touche directement la préparation des données. Dans ce lot, les deux familles de problèmes ne suivent d’ailleurs pas le classement de la même manière.

Ce que ces notebooks montrent vraiment

Les auteurs tirent plusieurs constats, tous limités à ces 265 363 notebooks et à ces concours. Ils ne les présentent pas comme des règles valables pour tous les projets logiciels.

  • Un notebook bien noté par Pylint n’obtient pas, ici, un meilleur score de modèle
  • Les violations propres au machine learning vont légèrement avec de moins bonnes performances
  • La popularité d’un notebook ne permet pas de prévoir sa qualité ni son score
  • L’expérience dans les concours va avec de meilleurs résultats, mais pas avec un Python plus propre

Le dernier point est le plus contre-intuitif. Les participants les plus expérimentés dans les compétitions obtiennent de meilleurs scores et commettent moins d’erreurs propres au machine learning. En revanche, leurs notebooks présentent légèrement plus d’erreurs Python ordinaires et davantage de passages signalés comme pouvant être remaniés.

Mieux classé ne veut donc pas dire plus propre à relire.

Mignard, Costiou et Etien ont publié en septembre une étude sur 265 363 notebooks Python issus d'un concours Kaggle.

Une version visible ne raconte pas le code

Cette distinction dépasse la seule question du classement. Un logiciel peut changer d’apparence ou recevoir une mise à jour sans que cela permette de savoir si son code interne est devenu plus clair.

Une interface peut signaler une nouvelle version de l’application 1xbet sans que cette information révèle quoi que ce soit sur les critères que Pylint ou SonarQube mesureraient dans le code. C’est précisément le type de raccourci que l’étude évite avec les notebooks Kaggle : ne pas déduire une qualité invisible d’un signal visible.

Il en va de même pour la popularité. Un notebook très consulté ou très repris n’est pas automatiquement mieux structuré. Dans l’échantillon étudié, ce signal n’aide pas non plus à prévoir ses performances.

Un notebook populaire n’est pas un modèle

Beaucoup de participants peuvent partir d’un notebook déjà visible ou bien noté. Pourtant, cette popularité ne dit rien de fiable sur la qualité du code ni sur le résultat obtenu dans le concours.

L’expérience de l’auteur ne suffit pas davantage lorsqu’on parle de qualité générale du Python. Seule l’habitude des compétitions se distingue vraiment sur la performance du modèle et sur les erreurs propres au machine learning.

Les trois lignes qui suivent résument ce que l’échantillon autorise à dire, sans aller plus loin.

Ce qui a été regardé

Dans ces notebooks

Ce qu’il ne faut pas en conclure

Qualité générale du Python pas de lien clair avec le score qu’un code propre fait gagner le concours
Erreurs propres au machine learning petit lien avec un moins bon score que cela vaut pour tous les projets
Popularité du notebook ni meilleure qualité, ni meilleur score qu’un notebook visible est un modèle à suivre

L’étude dresse donc le portrait de ce lot, rien de plus. Elle ne parle pas des projets d’entreprise, ni des logiciels écrits hors concours, ni des autres langages.

Elle montre surtout qu’un même mot, qualité, recouvre ici deux choses différentes. Un notebook peut être agréable à lire sans que le modèle monte dans le classement. À l’inverse, certaines erreurs propres au machine learning semblent peser un peu sur la performance, sans que cette relation devienne une règle générale.

C’est cette séparation que Mignard, Costiou et Etien mettent en évidence : la qualité du code et la qualité du modèle peuvent se croiser, mais elles ne racontent pas la même chose.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *