22 Mai

Quelle pizza est faite pour vous ? Cet algorithme a la réponse…

Lors du workshop #intelAi sur l’intelligence artificielle on nous a parlé de manière simplifiée sur la manière dont Netflix propose des recommendations à ses utilisateurs. Je vous fait partager cette méthode en codant un petit « algorithme » de recommendation de pizzas en php.

Pour créer cette algorithme, je me suis basé sur les pizzas de Pizza king, une pizzeria proche de 42 et j’ai choisi 16 de leurs pizzas.

Première étape : Choisir les bons critères de recommendation.

La première étape de la fabrication d’un algorithme de recommendation est de choisir les bons critères de classement des produits. Ainsi, si Netflix utilisera des genres (comédie, Horreur, Romantique, …), nous utiliserons nous des grandes familles d’ingrédients. J’en ai choisi sept qui me semblaient pertinents : Charcuterie, Fromage, Poisson, Légumes, Viande Hachée, Poulet et épicé/piquant. Le dernier critère n’est pas vraiment une famille d’ingrédients mais reste un critère utile pour correspondre aux choix de l’affamé indécis en quête de pizza utilisant le programme. Une fois que vous avez votre liste de critères objectifs, passez à l’étape suivante.

Deuxième étape : Attribuer un poids aux produits.

Pour cette deuxième étape, un humain est nécéssaire. Il s’agit pour chaque produit disponible d’attribuer un poids à chaque caractéristique. Plus les poids sont attribués de manière précise et objective, plus l’algorithme sera efficace. Pour attribuer les poids, on va utiliser un tableau de int. Petit exemple avec la pizza charcutière.

Nous avons une pizza composée de : tomate, fromage, jambon, chorizo, pepperoni.
Nous devons attribuer une notre aux critères suivants : charcuterie, fromage, poisson, légumes,piquant, viande hachée, poulet.
Pour chaque ingrédient de la pizza, nous allons regarder comment il affecte nos critères :

Comme on peut le voir, un critère peut être affecté plusieurs fois et un ingrédient peut affecter plusieurs critères (le chorizo est de la charcuterie et est piquant).

A partir de la nous pouvons attribuer une note a chaque critère et placer toutes ces notes dans un tableau correspondant a la pizza et où chaque case est un critère.

$charcutiere = array(7,2,0,2,3,0,0);

Dans l’exemple ci dessus les notes sont sur 10.

Pour me simplifier le code, je vais aussi enregistrer au passage la description de la pizza dans mon tableau :

$charcutiere = array(7,2,0,2,3,0,0, »Charcutière : tomate, fromage, jambon, chorizo, peperonni »);

Le défaut de cette étape est qu’elle est subjective et que deux personnes peuvent attribuer dès lors un score différent à une même pizza. Nous pouvons maintenant passer à la troisième étape .

Troisième étape : Récolter les goûts de l’utilisateur

On pourrait imaginer faire une moyenne de toutes ses dernières commandes de pizza pour voir vers quoi tendent ses préférences. Pour ce test je vais plutôt me baser sur un petit formulaire rempli par l’utilisateur sur ce qu’il a envie de manger sur l’instant. En bougeant des curseurs, il pourra indiquer ce qu’il souhaite retrouver ou pas dans son repas.

Quatrième étape : Extraire une recommendation 

C’est maintenant que la magie s’opère. On va obtenir un score pour chaque pizza en fonction des gouts de l’utilisateur. En comparant les scores, on saura directement quelle pizza est faire pour lui.

Pour y parvenir c’est de la simple multiplication de « vecteurs ». On prend le critère 1 de la pizza et on le multiplie par le critère 1 de l’utilisateur. On y a joute ensuite le critère 2 de la pizza multiplié par le critère 2 de l’utilisateur et ainsi de suite.

Ainsi on fait simplement le calcul suivant :

score_pizza = (pizza.critere1 * client.critere1) +(pizza.critere2 * client.critere2) + (pizza.critere3 * client.critere3) + …

Une fois que tous les critères ont étés pris en compte, on découvre alors le score de la pizza pour l’utilisateur. plus le score est élevé, plus il est probable que ce choix convienne à l’utilisateur…

En php cela donne :

function getscore($pizza, $taste)
{
global $score1, $score2, $score3, $name1, $name2, $name3;
$temp = 0;
$var = 0;
while ($var < 7) //car on a 7 critères pour nos pizzas
{
$temp = $temp + ($pizza[$var] * $taste[$var]);
$var++;
}
}

Il reste en suite a savoir combien de résultats et comment vous voulez afficher les meilleurs scores mais le principe est là.

Moi je suis simplement parti sur l’affichage des trois pizzas préférées de l’utilisateur.

Pour finir

Pour finir il peut être intéressant de comparer les choix d’un utilisateur avec un autre utilisateur ayant des goûts similaires afin de perfectionner l’algorithme. Comme il peut être intéressant d’ajouter des critères  supplémentaires surtout lorsqu’on commence a connaitre l’utilisateur (par exemple tenir compte du nombre de fois ou chaque pizza à été commandé par lui pour savoir quelle est sa pizza favorite).

Si tout cela vous a donné faim, sachez que vous pouvez tester l’algorithme sur pizza.timotheemohr.com.

20 Mai

Talking heads ou comment créer une nouvelle façon de communiquer…

Jeudi dernier, Lors d’un meet-up intel sur l’intelligence artificielle à 42, le scientifique et entrepreneur Jean-Christophe Baillie nous a parlé d’une expérience réalisée entre 1999 et 2001 mélant robots et intelligence artificielle qui m’a captivée : the talking heads experiment. Les « têtes parlantes » sont en fait des caméras reliées à une intelligence artificielle qui observent un grand tableau blanc avec des formes colorées diverses et variées dessus. dans le cadre de l’expérience deux têtes parlantes tentent de construire un langage pour pouvoir communiquer entre elles a travers un jeu. Dans ce jeu, une tête parlante doit choisir une forme et tenter de la faire deviner a l’autre tête parlante. Si cette dernière la trouve, les deux IA sont récompensées, sinon, les deux IA ont une punition. Problème : on leur permet de communiquer entre elles mais on ne leur a pas appris de langage pour le faire. Si les deux IA veulent être récompensées, elles doivent donc collaborer a trouver une manière de communiquer. Tentative après tentative, les deux IA commencent alors a créer un langage qui leur est propre et le taux de bonnes réponses augmente. On assiste ainsi a la création d’un langage. Le plus fort c’est que cette expérience a été fait dans de nombreux endroits différents (Paris, Bruxelles, Amsterdam, Londres,…) ou chaque paire d’IA a développé son langage. En changeant les IA de lieu, elles ont ensuite appris a modifier leur langage pour l’uniformiser afin qu’un maximum d’IA puissent communiquer entre elles. Je trouve cette expérience captivante car elle nous apprend beaucoup sur les IA, le langage et sur la façon dont des jeux simples peuvent contribuer a changer la facon dont nous comprenons les choses.

Pour Jean-Christophe Baillie, cette expérience a permis de comprendre trois éléments importants sur le développement du language et des symboles :

Premièrement, ils sont construits sur une base sociale. Les IA l’ont développé afin de pouvoir se comprendre entre elles. Ainsi c’est ce qui marche le mieux pour la communauté qui est conservé et développé. Comme chez les humains ou les bébés adoptent rapidement le langage établi les conventions sociales ou il se trouve. C’est logique car un langage est avant tout une manière de s’exprimer et de se faire comprendre et n’a donc de valeur que si les autres peuvent le déchiffrer.

Deuxièmement, ils sont construits a partir d’un environnement. Les IA se sont basées sur ce qu’elles voyaient pour communiquer entre elle. Leur langage est donc directement influencé par leur environnement et la perception qu’elles en ont.

Troisièmement, ils sont construits selon un but ou un contexte. Ici l’enjeu pour les IA étaient de reconnaître des formes et leur langage s’est donc développé dans ce but là.

Les IA sont passionnantes et leur apprendre à apprendre d’elles mêmes nous en apprend aussi beaucoup sur la manière dont nous aussi nous apprenons.

19 Mai

Outils pour développer un site

Dans ce post je vais présenter quelques outils que je trouve fort utiles quand on développe un site ou un application mobile et que j’utilise régulièrement…

  • Trouver les bonnes couleurs : le très complet Adobe color cc et le très simple mais parfois utile flat color permettent de trouver facilement des couleurs efficaces et des palettes de couleur.
  • Trouver des images libres de droit de qualité : Je n’ai a ce jour rien trouvé de mieux que pixabay.com pour cela. C’est simple et gratuit.
  • Trouver des icones : iconfinder.com et flaticon.com sont deux sites de références en la matière car ils sont simples a utiliser, complets et proposent de nombreuses icones gratuites souvent meme pour utilisation commerciale.
  • Créer et modifier ses images ou dessins : google drawings est suffisant dans la plus part des cas et entièrement gratuit. Pratique pour aller vite.

Si vous avez d’autres outils utiles, n’hésitez pas à me les partager…

18 Mai

Les salariés sont des entreprises avec un seul client et un seul produit… – Retour sur la conférence de Olivier Roland à 42

Le 29 avril dernier, Olivier Roland est venu à 42 pour nous présenter les 10.5 bonnes raisons d’oser entreprendre. Je connaissais déjà Olivier Roland à travers sa  chaine youtube pleine de vidéos courtes de conseils et de rencontres enrichissantes. Cette conférence était une liste de bonnes raisons argumentée par son expérience personnelle et ses rencontres.

Voici 3 choses que j’ai retenues : 

  • Etre salarié c’est au final  être une sorte d’ entrepreneur qui ne vend qu’un seul produit (son temps) à un seul client (son savoir faire). Vu sous cet angle cela pose deux problèmes. D’abord, notre valeur est notre temps et donc on ne construit pas de valeur durable, réutilisable, scalable pour le futur. On investit notre temps pour un salaire immédiat au détriment de valeur a long terme. Il faut quand meme relativiser cela par le fait que les expériences sur notre cv sont quand même de la valeur pour plus tard. Deuxièmement, avoir un seul client revient à nous rendre dépendant ce celui-ci et donc être salarié est une position qui devient paradoxalement plus risquée que l’entrepreneuriat sur le long terme. L’entreprenariat devient ainsi une manière efficace de dissocier temps de travail et revenu. Les business automatiques par exemple travaillent tout seul pour un travail humain assez faible au final. C’est le cas des laveries, des distributeurs de café ou meme des flippers d’occasion installés chez des barbiers par Warren Buffet qui lui ont permis d’accumuler le capital nécessaire pour construire son empire.

 

  • Tester son idée le plus vite possible permet d’éviter de se tromper et d’oser se lancer. Pour Olivier Roland, plus on attend pour entreprendre plus on se retrouve avec des « pantoufles de ciment » car plus on considère l’entrepreneuriat comme un risque pour ses revenus incertains. Tester son idée c’est aussi minimiser les risques une fois que l’on s’est lancé. Il nous a ainsi fait part de son expérience quand, plus jeune, il avait publié une annonce dans un journal pour des réparations informatiques alors qu’il était toujours étudiant pour tester le potentiel d’une entreprise de services informatiques.

 

  • L’entreprenariat permet de réaliser ses rêves. D’abord parce que les gens font plus confiance a un entrepreneur sur ses competences qu’a un employé. A cv equivalent il est donc possible de faire plus de choses comme entrepreneur que comme salarié car les conventions sociales font qu’on ne demande pas son cv ou ses diplômes a un entrepreneur. Cela permet aussi d’être moins sujet a du racisme ou a des préjugés négatifs. C’est donc un « hack de carrière et de possibilités » en quelque sorte. Mais surtout cela permet de faire passer ses passions au premier plan, de construire quelque chose que l’on désire vraiment au lieu d’aider quelqu’un d’autre a construire son rêve a lui. Que l’on réussisse ou pas, au final cela permet de se rapprocher de la vie idéale que l’on souhaite. Alors entrepreneuriat ou salariat ? L’important au final  est je pense de ne pas choisir un projet par opportunité de marché ou de carrière mais par compétences et passions personnelles. Et si ce projet permet de construire quelque chose de durable dans le temps c’est encore mieux…
17 Mai

Bienvenue

Bienvenue sur ce blog qui va servir a partager des opinions, des idées et des trouvailles dans de nombreux domaines qui m’intéressent.

Je suis Timothée Mohr, un étudiant de l’école 42 à Paris. Auparavant j’ai passé 6 années incroyables a imaginer les jeux télévisés et émissions de demain au sein d’une société de production ayant développé de nombreuses émissions originales. Vous pouvez d’ailleurs voir une de mes créations, « 8 chances de tout gagner » sur France3.

Ce blog parlera de sujets divers et variés qui ont pour seul point commun l’intérêt que je leur porte : programmation informatique, design, application mobiles, expérience utilisateur, startups, marketing, grande distribution, coulisses des parcs d’attraction, consommation responsable, jeux, medias… Je vois ce site comme un moyen de partager des infos que je trouve captivantes et de présenter des projets sur les quel moi ou des personnes que j’apprécie travaillent.