En cherchant à établir l'état de l'art des algorithmes de diffusion de messages en multicasting dans un réseau en pair à pair pour le projet P2P Energy Meter, je suis tombé par un heureux hasard sur une publication concernant un système d'anonymisation pour les filtres collaboratifs permettant de créer des recommandations : Distant-based Differential Privacy on Recommanders.
L'algorithme utilisé pour vérifier que l'approche proposée d'anonymisation est effective est k-NN. Les entrées choisies pour l’apprentissage sont, comme c'est tout le temps le cas pour ce type d'algorithmes, les notes que l'utilisateur donnent à un contenu, ce qui est différent de ce que j'ai fait pour l'expérimentation d'autonomisation d'un média center. J'ai choisi de prendre le nombre de consultation d'un contenu qui a un identifiant unique et le temps d'utilisation de chaque consultation (en gardant le timestamp de début et la durée). Au final je manipule des 3-uplets (# de vues, timestamp début avec granularité à la seconde, durée en secondes) pour chaque contenu et seulement ceux qui correspondent à une action humaine. Pour faire une prédiction d'usage à partir de ces données, j'ai fait une descente en gradient sur 3 variables sur ce jeux de données pour en sortir une prédiction de la prochaine utilisation d'un contenu avec un timestamp de début et une durée. C'est simple et demande peu de calcul et ça marche au sens que le média center va par exemple lancer le streaming de la radio machin de 7h à 8h du Lundi au Vendredi. Mais voici maintenant les problèmes :

  • Le code qui finit par définir la liste ou le planning des actions futures se remplit de conditions pour définir une action correspondant au type de media;
  • La prédiction finit par converger vers des patterns automatiques d'usage rigides;
  • Ça fait chier les gens les automatismes qui sont intrusifs, indépendamment de leur qualité :)

Ce qu'il faut sauver dans l'approche, c'est vraiment la méthode qui rend l’apprentissage transparent pour l'utilisateur, indépendamment de l'algorithme choisi pour réaliser la prédiction.

Pourquoi me faire chier en partant sur un paradigme différent du jeux de données communément défini pour la mise en place d'un filtre collaboratif ?
Déjà tout simplement parce que la plupart des utilisateurs de média center ne fournit aucune note à leur contenu :) Ensuite parce que un média center de base n'est pas un système multi-utilisateur et n'offre aucun système de partage de ses informations d'usage de base avec anonymisation.

L'approche que propose cette publication permet la création d'une base d'usage sans que l'utilisateur hurle à la violation de sa vie privée.

Si je devais faire une feuille de route de réalisation d'une médiathèque intelligente, elle ressemblerait beaucoup à çà :

  1. Implémenter la privauté différentielle dans le media center (pas d'approche par utilisateurs mais par dispositifs);
  2. Récupérer les profils d'usage rendu anonyme sur une base en remappant les UUID des media sur une base commune;
  3. Rendre possible sur le media center le rapprochement des dispositifs selon des critères bien humains;
  4. Implémenter un filtre collaboratif pour créer la vue intelligente de la médiathèque (local ou distant, à creuser).

Et si on pouvait faire çà sans avoir besoin d'une centralisation, çà serait encore mieux :p