2019-05-05 Les maths, ça bugge moins quand même

Trouver un bug dans un millier de lignes de codes, c’est rarement le jeu qui apporte le plus de joie excepté peut-être le moment l’erreur surgit sur l’autel comme la mariée apparaît dans l’église. Les bugs font souvent de mauvais mariages et de très bons divorces. Le pire survient après avoir découvert qu’ils se sont de nouveau invités dans le pâté et le fromage. Je me suis amusé avec les régressions linéaires Régression linéaire, quantiles et par morceaux. Et je me suis retrouvé un jour avec une question existencielle à propos d’une régression logistique qui ressemblait visuellement beaucoup à un diagramme de Voronoï tant est si bien que je me suis demandé s’ils étaient jumeaux ou simplement parent (Régression logistique, diagramme de Voronoï, k-Means). Je recycle quelques vieilles idées qui m’ont ramené au temps que j’ai passé chez Yahoo Distance between two graphs. Et celui-là aussi Détection de segments dont je trouve l’idée toujours aussi séduisante. J’ai dû fixer quelques erreurs dans Courbe ROC car, j’ai beau faire, je n’arrive toujours pas à retenir la définition de False Positive Rate… C’est quand le prédicteur dit blanc alors que c’est noir ou l’inverse. Bref, je n’insiste plus, je suis un dyslexique du classifieur. Je me suis amusé dans d’autres domaines : Predictable t-SNE, Visualize a scikit-learn pipeline, Regression with confidence interval.

Il est 1h30 du matin et je viens de trouver mon bug de ce soir… Un bug mathématique pour changer, un oubli dont je ne suis pas fier qui m’a fait relire mon code encore et encore jusqu’à trouver le petit détail qui a fait dérailler mon intuition, mais pas complètement dérailler. Bref j’ai fini par écrire un algorithme de streaming pour une orth-normalisation de Gram-Schmidt : streaming_gram_schmidt_update. Il ne reste plus qu’à écrire un algorithme de streaming pour la régression linéaire.