XD blog

blog page

~technical


2020-03-12 Coronavirus

L'Italie a décidé à l'instar de la Chine de plonger 60 millions de personnes en quarantaine, de fermer tous les magasins non essentiels à la vie. L'Europe n'arrive toujours pas à se concerter pour prendre des décisions communes face à un péril de la sorte. Plutôt le voisin que moi. La France essaye encore de trouver le meilleur compromis entre la sauvegarde de l'économie et la contagion. Elle suit pourtant le même chemin que l'Italie. Les élections municipales sont prévues pour dimanche avec l'assurance de déposer un bulletin dans une urne dans laquelle, nécessairement, réside le bulletin d'une personne atteinte du coronavirus. Les médecins ne sont pas assez nombreux pour tester tous les patients qui appellent ou se présentent à eux avec les premiers symptômes du virus. Ils ne le font que si la maladie s'agrave. La France ne teste qu'une partie des gens contaminés et sous-estime très probablement leur nombre. Cela veut dire également que le taux de mortalité, 2%, est probablement surestimé. Le gouvernement a annoncé que les jours de carence habituellement non payés le seraient cette fois-ci en cas de contamination par ce virus pour inciter les gens à respecter les rares consignes données jusqu'à présent. Mais que dire lorsque le médecin recommande de rester chez soi sans pour autant faire le test de contamination... Que deviennent ces jours de carence pour suspicion de contamination ? L'Italie décrète la quatorzaine pour tous car les hôpitaux du sud de l'Italie, à en croire les journaux, ne peuvent supporter un afflux massif de malades. Ceux qui tiendront les bureaux dimanche ne seront pas exposés plus de quinze minutes avec la même personne mais il est possible qu'elles soient exposés plus de quinze minutes face à des électeurs contaminés. Voter tard dans la journée revient à voter face à des assesseurs tous suceptibles d'être contaminés. Et l'Europe est toujours incapable de prendre des décisions communes, de gérer ensemble les stocks de masques, les médecins. Avec une population croissante, un réchauffement climatique qui favorise les tempêtes comme les microbes, il faudra innover scientifiquement mais aussi dans les gestions de crise. La sagesse voudrait que nous suivions l'exemple de l'Italie pour endiguer d'un seul coup le virus dans toute l'Europe. Et si le foot italien est reporté, les élections ne le devraient-elles pas également ?

2020-03-02 Récompenser ceux qui prennent des risques ?

C'est une citation de Bruno Le Maire Bruno Le Maire : « Nous voulons récompenser ceux qui prennent des risques », phrase que j'ai entendu aujourd'hui dans la bouche d'Edouard Philippe aujourd'hui pour défendre certains aspects de sa réforme des retraites. Cela dit, investir un million quand on en possède un et investir la même somme quand on en possède cent n'est pas vraiment la même chose. Je dirais même que dans le second cas, le risque n'existe quasiment pas. Et pourtant l'économie actuelle les rétribue de la même façon. Un vrai risque aujourd'hui serait plutôt de choisir le métier d'agriculteur, d'infirmière ou de professeur. Ce sont trois métiers difficiles que la plupart de ceux qui le sont le font par passion et par sens du devoir. Ce ne sont pas les choix de carrière les moins risqués. Je ne sais pas vraiment à quel risque Bruno Le Maire fait allusion, celui qui rapporte surtout à soi ou celui qui bénéficie aux autres.

2020-02-28 Mois de février

Les députés de la loi sur les retraites, pour ce que j'en comprends, c'est la première fois qu'on vote pour un texte à trous, comme si les députés devaient signer en bas d'une page blanche pour ne plus avoir à en débattre. Pendant ce temps-là, le gouvernement gère l'épidémie sans trop mettre en danger l'économie. Pour avoir visité quelques fois les urgences certains soirs, je ne vois pas trop comment l'hôpital pourra gérer un afflux massif de malades. Il est donc probable que la plupart des malades devra rester chez eux et que les lits d'hôpitaux seront réservés aux cas les plus graves. Dans le meilleur des cas, l'épidémie ne s'étend pas et notre système économique actuel aura gagné quelques années jusqu'à la prochaine crise.


more...

2020-01-28 Internet service public ?

Je ne sais pas si la concurrence est positive pour un service comme une connexion internet qui est pratiquement devenue indispensable pour interagir avec les services de l'état comme les impôts. Avant internet, la poste suffisait, maintenant, il faut internet dont le prix n'est pas négligeable.

Je suis donc allé notifier Orange de mon déménagement pour obtenir une connexion internet. J'avais l'ADSL, ils m'ont proposé la fibre sous prétexte que mon immeuble était câblé. Sans doute. Les anciens propriétaires avait Free. Entre temps, je demande pourquoi mon abonnement augmente de cinq euros étant donné que ce que j'ai me suffit, je reprendrai l'ADSL volontiers. On me répond que c'est la fibre. J'ajoute donc que si c'est le cas, je vais d'abord étudier les offres des concurrents. Et comme par magie, l'abonnement redescend au prix que je payais jusqu'à présent. Je suis moyennement content de cette tournure mais je continue car le vendeur me dit que Free utilise la même infrastructure que Orange, sous-entendu - c'est que je comprends - il n'y a pas besoin de nouveaux câbles pour que cela fonctionne. Je prends un second abonnement car c'est apparemment moins cher pour une maison secondaire chez Orange. Je repars avec quatre paquets donc des décodeurs télé dont je n'ai rien à faire.


more...

2019-10-05 Quelques essais de benchmarks

J'ai découvert ou plutôt on m'a fait découvrir le benchmark officiel de scikit-learn scikit-learn_benchmarks que je fais tourner dans une version augmentée scikit-learn_benchmarks + ONNX. Il a quelques sautes d'humeur car je fais tourner plein de choses sur la même machine. Ils ont d'ailleurs tous quelques sautes d'humeur.

Ensuite, je me suis amusé à créer un benchmark automatique pour tous les modèles de scikit-learn toujours en utilisant le module asv. Puis un autre... Bref, tout est là Benchmarks.

2019-09-27 Petit plaisir de professeur

C'est un petit plaisir de professeur : arriver en cours et exposer ce qu'on sait déjà mais sans vraiment l'avoir vérifié de ses propres mains : la régression Lasso permet de sélectionner les variables. Et puis finalement, le jour où je le dis, je ne suis pas plus convaincu que les étudiants en face de moi. Pourquoi ça marche avec cette norme et pas la norme L2 ? Bref, devant le silence d'un cours 20 minutes avant la pause déjeuner, après 2h30 de cours magistral, je me suis pris d'envie de calculer un gradient. Et là, en voyant la formule, l'intuition, je comprends qu'il y a une impossibilité car le gradient ne s'annule pas autour d'un point en particulier contrairement à la régression L2. En gros, si le gradient est mal foutu, il ne peut pas exister de solution autour. J'ai eu un peu de mal à partager cette intuition et j'ai laissé les étudiants avec un début de phrase pas faux mais pas suffisamment complet pour être tout-à-fait vrai. Je me suis dit qu'il fallait compléter la preuve : Normalisation des coefficients. La preuve n'est pas valable dans tous les cas mais l'idée suffit juste d'être poussée un peu plus loin. L'idée est développée un peu plus dans Regularization and Penalized Regression (Arthur Charpentier).

2019-06-27 Documentation needs work

A bug. One more. I read the documentation of the fonction. It hardly describes what it does. This long paragraph is probably clear for its author but still kind of obscur to me. When i understand it, it tells me that what i wrote is partially wrong but i wrote so many lines that I'm puzzled about which is wrong and which is right. So what... i go on github to see where this exception may have been raised and then i realize this information i need is not there unless i expand the error message with what i need. But then i'll to recompile and that cost 30 minutes on my poor ugly laptop. So what... I skip it unable to convince myself to freeze my machine for that much of time and drink coffee for half an hour which is much more than the small quantity that would keep me awake for ever. So i tried poking with parameter almost randomly - what i kindly oppose when my students do it - to find out the combination which works out of the many combinations Hermione - I'm pretty sure - would have been happy to solve. And finally when i find, all seem logical in a way i kindly disagree with all the non informative error messages i got all along doing it...

I need to be drunk before this fully uninteresting task gets up to my brain, before this part of my body realizes whatever i do practice is always what I need not to feel the pain of struggling against such nonsense, before it realizes that coding is one among the few kinds of shared art, something people may do with other people just because they never get somebody to tell them it was so beautiful that it deserves to be hanged on their wall.

Whatever, I'm still at that bug, skipping the documentation which does not make sense to me tonight and directly going to what causes my picasso face, a kind of disorganized puzzled face. Anyway, I'm in the CODE, the open source code and I feel happier just because the code is precise and is not outdated. Writing documentation reminds me the summary exercise I did in the preparatory school to Grandes Ecoles. A good documentation takes time. Otherwise, a link to the code is just what i need.

2019-06-25 V

J'ai lu l'article car le langage V m'évoquait la vieille série américaine V. De là à penser que ce langage allait contaminer tous les autres, il a l'air suffisamment rapide à la compilation pour rendre obsolète les langages interpréter tels que Python. Le nombre de contributeurs est encore assez réduit mais c'est comme une oeuvre d'art. Le partie C est ici v.c.

2019-04-18 Jupyter, Spyder, ... and pyodide

It seems to be a good replacement for jupyter or spyder if you need to build complex animation. The logic is close to javascript and it does not suffer from a necessary complex bridge between python and javascript : pyodide. Why not...

2019-04-17 Sites pour parcourir les contributions au grand débat

C'est le premier site que je vois qui permet de parcourir les contributions au grand débat sous la forme d'un moteur de recherche et d'autres outils d'intelligence artificielle : Le grand débat national. La requête ENA illustre une forme de ressenti de la population vis à vis de cette école. Le site permet également de télécharger des données. Une autre requête sur le département qui m'a vu naître Ardennes donne un aperçu des contributions des citoyens qui y vivent. La requête Charleville montre que les carolos-macériens se plaignent du TGV qui s'arrête à Reims. Les Ardennes sont mal desservies en terme de transports publics.

Le second site La grande annotation donne l'opportunité à tous de reformuler les contributions au grand débat. La reformulation permet de d'agréger plus facilement les réponses comme le montre de façon explicite la page Les limites de l'intelligence artificielle. Il est par exemple très difficile d'agréger des réponses mal orthographiés.

Le premier site a été construit par deux anciens élèves de l'ENSAE : Découvrez quelles ont été les contributions au grand débat dans votre commune. On retrouve le second sur github/granddebat et on y retrouve des ENSAE aussi parmi les contributeurs.

2019-04-10 Are you able to solve a linear regression without computing a matrix inverse?

A linear regression is a solved problem: it finds B which minimizes the problem |y - (A + XB)|. The solution is known: B = (X'X)^(-1) X' y (see Ordinary least squares). Can we compute the solution without any matrix inverse, only with matrix products and additions? My solution is somewhere on my github account...


more...

2019-04-01 Determines close leaves in a decision tree

That's a problem I had in mind yesterday. When scikit-learn builds a decision tree, we might want to say which classes share a border with another one, which I translated by which couples of leaves of a decision tree share a border. The final node determines which feature to use to split between two leaves and two classes. What can we say about two leaves far away in the tree structure? Do they share a border? We could use the training data to build a kind of Voronoï diagram for points and group cells which belong to the same leave. What if we do not have the training data?

My answer is implemented somewhere on my website. This question was something I was looking into to imagine a way to build a continuous piecewise linear regression with at least two features... which is impossible but still finding close leaves seemed a good algorithmic problem.

2019-03-24 Ecran blanc pour les notebooks, panique à bord

J'ai passé la nuit à coder un truc et que je lorsque je veux montrer que le code est plus rapide, j'ouvre un server de notebook pour me retrouver avec un écran blanc. Mon premier réflexe est d'essayer pas mal de navigateur pour avoir toujours le même résultat. Un écran blanc. Merde, merde, merde ! Le bug pour lequel vous n'aimez pas la programmation. Mon premier réflexe fut de réinstaller mon python en intégralité, comme sur windows, quand ça merde, on reboote.

Evidemment, après une heure d'installation, toujours la même chose. Il faut deviner le package qui ne tourne pas rond. Quelques recherches plus loin, je tombe sur cette issue while launching jupyter notebook ou celle-ci Jupyter Notebook - Blank Screen - after pip install jupyter. C'est le genre de problème qui n'apparaissait que sous Windows, allez savoir pourquoi. Bref, la solution proposée par le premier a marché. L'erreur survient quand on installe le module notebook>=5.7.6.

J'ai réinstallé mon python pour rien. Merde.

2019-03-10 Open Source

First time in my life when whatever I do is open source and on GitHub. I remember when I left my first company, it was quite annoying to leave everything I contributed to behind me and not being able to look what it became from time to time. It is like coming back to your hometown, it is a place you know very well and quite hard to leave for ever.

I made a page for all the open source projects I work on. Most of them are my own, a couple of them contains the teaching I do, some others automate the publishing of the first one, some help me during my daily life, the last ones are Microsoft's one.

2019-02-28 Sprint scikit-learn

J'ai vécu mon premier sprint scikit-learn. J'avais posté au préalable une issue Faster PolynomialFeatures à laquelle j'ai proposé une solution Fixes #13173, implements faster polynomial features for dense matrices. Je recommande l'aventure à tous ceux qui souhaitent comprendre comment on construit une librairie de machine learning qui plaise au plus grande nombre. J'y ai croisé des chercheurs venus de tous horizons, des contributeurs de scikit-learn, venus pour réfléchir sur les prochains grands défis de la librairie que je résumérais par : Comment répondre à de nouveaux usages tout en conservant la simplicité du design actuel ?.


more...
-->

Xavier Dupré