Algorithme des k-moyennes avec pyAggr3g470r

Ou comment trier ses flux de manière intelligente et automatique.

Ces derniers temps je m’amuse avec de petits algorithmes de machine learning. J’apprends beaucoup de choses intéressantes grâce à ce beau livre.

Quel est donc le rapport avec pyAggr3g470r? La réponse est simplement que j’ai dépassé les 40.000 articles stockés en base de donnée par pyAggr3g470r (42.105 articles pour être exact). Ce qui constitue donc un bon ensemble de documents pour tester quelques algorithmes de clustering. J’ai donc commencé par tester un algorithme dit de K-means clustering assez simple à écrire en Python. Cela en utilisant la fonction de Pearson qui mesure la dépendance linéaire (corrélation) de 2 vecteurs. Les tests avec Tanimoto sont moins concluants je trouve. Par contre, la distance Euclidienne fournie d’assez bons résultats. Mais moins bons qu’avec Pearson.

Ci-dessous, voici donc le résultat avec la corrélation de Pearson:

Et voici les clusters que l’on peut voir avec cette représentation 2D:

  1. AdulauWikiDiary, Python News, Free Software Foundation
  2. Schneier on Security, LWN.net, Linux Kernel Newbies, dive into mark, Matt Blaze’s Exhaustive Search, cr0 blog, Handcrafted Games, etbe – Russell Coker, quuxlabs, The History of Python, Lennart Poettering, Victor Stinner, Neopythonic, sysc.tl, KDE.news, Fetchez le Python, linux kernel monkey log, Spaf’s Thoughts, Armed and Dangerous, Linus’ blog, Jefferson’s Wheel, The Invisible Things Lab’s blog
  3. Slashdot
  4. Weblogue de bnj, L’essentiel | News, Le Tigre, InternetActu.net, Journal d’un avocat, Classe, Pas Classe…, DLFP – Dépêches, Blog de Stéphane Bortzmeyer, DLFP – Journaux, ~/blog
  5. Standblog, Framablog, April, Blog Haypo, Pour les formats ouverts !
  6. La Quadrature du Net

On peut déjà constater que les blogs en langue Française ne sont pas mélangés avec les blogs en langue Anglaise. Le groupe 5 est plutôt intéressant, la thématique de ce groupe semble tourner autour du logiciel libre. Mis à part le blog de Victor Stinner.
Les blogs Anglais sont assez techniques: Linux, Python, Sécurité, etc. J’ai fais de nombreux tests et il arrive parfois que le deuxième groupe soit scindé en deux ou trois groupes (par exemple un groupe pour “LWN.net”, “Linux Kernel Newbies” et “linux kernel monkey log”).

Pour aller plus loin je teste un algorithme d’EM clustering comme on me la conseillé. Pour le moment j’ai quelques problèmes avec cette technique car l’algorithme utilise une quantité assez importante de mémoire pour un nombre de cluster égal à 8. Avec 3 clusters, 6Go de mémoire sont utilisés. Toujours avec une base de 42.105 articles.