samedi 19 septembre 2015

Facebook : Find the robots



Each year, Facebook using Kaggle platform to find their future data scientist.


The best competitor participants could pass a job interview. The interest of this contest is the members of kaggle couldn't exchange trick and models, its imply that your rating is the real rating and not a copy/paste program, method process.


We must find if a bidder is a human or a robot with bidding data provided by Facebook.
The score is an area under the ROC curve which quantifies the overall ability of the test to discriminate between human and robot.

At the end of the competition, my score is a 0.92, near to the best score of 0.94. My rank is 198 of 989, not bad.

lundi 18 mai 2015

Using python to build a CART algorithm

In this article, I described a method how we can code CART algorithm in python language. I think it is a good exercise to build your own algorithm to increase your coding skills and tree knowledge. It's not the fastest algorithm implementation but it's enough to understand CART and object oriented programming.


Cart algorithm

In 1983, Breiman et al first described CART algorithm like classified and Regression Tree. It could be used for regression and classification of binary target.
It's a recursive algorithm, at each iteration it finds the best splitting of data which could increase the probability of predicting the target values.


Tree definition

A tree is composed of nodes. Each node could have one, two children or could be a leaf node, a node with no children.

In a list, I stored each object Node.
Tree=[node1, node2, node3, node4….]


jeudi 10 avril 2014

Récupérer les flux Twitter

Aujourd'hui pour disposer de l'information la plus fraîche il est nécessaire d'utiliser Twitter. Les grandes entreprises, les décideurs, les experts, les journalistes utilisent ce média pour communiquer, il n'est plus nécessaire d'attendre la parution de la presse pour avoir à un instant t une idée des tendances sur divers sujets.

Le fait que Bloomberg, entreprise sérieuse, propose depuis un peu plus d'une année un outil d'analyse des sentiments des tweets à destination des traders souligne le fait que l'utilisation de ces outils va se généraliser dans d'autres domaines. (Détail de la plateforme de Bloomberg)

Dans cet article, je présenterai les deux façons de récupérer les flux provenant de twitter en utilisant la librairie tweepy sous Python.
J'utiliserai pour illustrer les derniers jours de la campagne municipale parisienne opposant Nathalie Kosciusko-Morizet et Anne Hidalgo.

mercredi 15 janvier 2014

Facebook Recruiting III - Keyword Extraction

http://www.kaggle.com/c/facebook-recruiting-iii-keyword-extraction

Plusieurs fois par an Facebook propose sur Kaggle un concours pour dénicher leur futur data scientist. Pour cette troisième édition, l'accent a été mis sur le textmining, au-delà de l'aspect statistique ou du machine learning, le défi principal est la capacité à manipuler de larges bases de données en ayant de fortes contraintes en mémoire vive.
À partir de 6 millions de questions issues de Stack Overflow (un site de discussion au sujet de la programmation) avec les variables suivantes : le titre, le détail de la question et les tags de la question il faut réussir à prédire pour 2 autres millions de questions les tags correspondants.

Le but est de maximiser la moyenne du score F1 :

F1 = 2[ p*r / (p+r) ]

Soit p, la précision c'est le rapport du nombre de vrais positifs sur l'ensemble des positifs prédits (vrais et faux positifs).

Soit r, le rappel c'est le rapport du nombre de vrais positifs sur l'ensemble des positifs réels non prédits (vrai positif et faux négatifs)

Résultat : le meilleur modèle a un score de 0.81350, mon modèle arrive à un score de 0.68622. En classement final, j'obtiens la 130e place sur un total de 367 participants. Mes contraintes en mémoire ont fait que j'ai du simplifier mon modèle initial. La modélisation a été réalisée entièrement sous Python.

dimanche 22 décembre 2013

Personalize Expedia Hotel Searches - ICDM 2013


Expedia est une agence de voyages en ligne. Lorsque vous effectuez une recherche le site vous affiche une liste d’hôtels susceptible de vous intéresser, le résultat qui en résulte est calculé en amont par Expédia. Ce calcul provient d'un algorithme de classement (ranking) qui vise à augmenter la probabilité que le client procède à une réservation. Cet algorithme est fonction de la caractéristique des hôtels, du pays de destination, de l'historique d'achat ainsi que des prix proposés par la concurrence. L'objectif est de réussir à créer un modèle qui a de meilleurs résultats que celui déjà existant.

Critère de classement
5 - Si l'utilisateur a pris une chambre à cet hôtel
1 - L'utilisateur a cliqué pour avoir plus d'information sur l’hôtel
0 - L'utilisateur n'a ni cliqué ni pris une chambre à cet hôtel 

Il faut donc pour chaque recherche proposer le meilleur classement soit pour les trois premiers résultats : 5,1,0

Résultat : 
Le critère d'évaluation est le NDCG. Il fallait battre le NDCG d'Expedia qui est de 0.49748.
En conclusion, le meilleur modèle a un de NDCG de 0.54075, mon modèle obtient un NDCG de 0.47527.
En classement final, j'obtiens la 132e place sur un total de 337 équipes participantes. La taille de la mémoire nécessaire à l'apprentissage et à la prédiction, la lenteur de divers traitement sous R ont rendu plus ardue la recherche du meilleur modèle.

lundi 18 novembre 2013

Manipuler de gros fichiers en ayant peu de mémoire vive

SAS a une gestion très poussée de la mémoire, cet outil propriétaire permet de manipuler des bases de données de très grande taille et utilise la mémoire vive ainsi que le disque dur comme espace de travail, or cet outil n'est pas toujours disponible dans les petites structures et présente un coût non négligeable en licence.

R est un outil puissant de modélisation, mais dans le domaine du datamanagement il a un certain nombre de faiblesses : la taille des tables est limitée par la taille de la mémoire vive, les modules complémentaires de R qui facilitent le chargement de grosses tables ne permettent pas d'accéder à l'ensemble des librairies de modélisation.
Pour la partie modélisation, il semble difficile de s'astreindre des contraintes en mémoire vive, on utilisera volontiers des technologies cloud telles qu' Amazon EC2. Pour le datamanagement, il est possible de réaliser la plupart des manipulations de fichier avec des ressources très faibles avec PostgreSQL ou le langage de programmation PYTHON.

samedi 11 mai 2013

Calcul matriciel

À la suite du concours Heritage Health Prize j'ai constaté que sous R le moteur de calcul matriciel n'était pas rapide (je ne fais pas référence aux calculs des librairies spécialisées) ce qui n'est pas vraiment compatible avec une utilisation professionnelle. 
Il existe pourtant des solutions qui permettent de faire du calcul matriciel avec un rapport coût/performance intéressant. J'en ai testé quelques-unes.