vendredi 10 février 2017

Un exemple de réussite sur un challenge de Machine Learning


INTRODUCTION


Ces derniers mois, j'ai choisi d'étoffer mes connaissances en Machine Learning et en langage Python en m'essayant à plusieurs challenges, principalement sur Kaggle. Je pense que c'est un excellent medium pour apprendre, principalement par le biais des forums et des kernels, où les meilleurs spécialistes mondiaux du domaine partagent leur savoir de manière très altruiste. Ainsi, généralement lorsqu'une compétition est terminée, plusieurs compétiteurs ayant fini au sommet viennent partager leurs méthodes sur le forum, et parfois même directement leur code source en postant un lien vers leur repo GitHub correspondant.

Toutefois, il est bien difficile aujourd'hui de finir parmi les meilleurs sur une compétition Kaggle, bien plus qu'il n'y a ne serait-ce que 2 ou 3 ans (au regard des articles que l'on peut lire sur les solutions gagnantes de cette époque). Il faut désormais un espace de stockage énorme car les datasets deviennent gigantesques, et une puissance de calcul rarement disponible sur des PCs standards pour pouvoir faire tourner des GridSearches pendant plusieurs jours, ou bien entraîner des réseaux de neurones (via Keras pas exemple) sur des GPUs dernier cri. Les meilleurs empilent bien souvent plusieurs dizaines de modèles sur du stacking à 3 niveaux, parfois plus. C'est pour ça que quand j'ai entendu parler du ChallengeData ENS (merci Laurae), ça m'a intéressé : des datasets qui ne nécessitent pas d'accès au cloud pour être étudiés, et des compétiteurs qui ne sont pas forcément l'élite de l'élite mondiale, mais (pour la plupart) “simplement” des étudiants des meilleurs écoles de France (Polytechnique, ENS Cachan etc), ainsi que certains passionnés dans mon genre.

Au moment où j'écris cet article, je suis 1er sur 71 sur le Challenge “Oze Energies” et 2e sur 20 sur le Challenge “PlumeLabs”. Ce sont les 2 seuls challenges sur lesquels j'ai travaillé. Les compétitions se terminent en Juin, et j'imagine sans peine que certains vont me dépasser d'ici là, vu que je ne compte plus vraiment continuer à travailler dessus. Accessoirement, peut-être certains tomberont-ils sur cet article et y trouveront quelques idées (si c'est votre cas, un petit merci dans les commentaires me ferait un grand plaisir). J'aurais bien posté l'article sur le site du Challenge pour un souci d'équité d'accès à l'information, mais il n'y a à l'heure actuelle aucun forum. Je vais me concentrer ici sur le Challenge “Oze Energies”.


mercredi 16 novembre 2016

A study on Linear Regression applied to the Ames dataset

Since around the start of the summer, I've been spending a lot of my time on Kaggle, reading or taking part in Machine Learning competitions. While I've yet to achieve a big score, I've learned a ton of stuff about preprocessing, models, parameter tuning, ensembling models etc. I've also used this as a way to learn to code in Python, since all of my previous Data Science projects were implemented in R.

About 2 months ago, I published a script detailing how I used standard linear regression and regularization methods to achieve a top 10% (at the time at least) public leaderboard score in the House Prices competition. I've taken a look at it again this week, and realized it received more than 10 upvotes (Kaggle's equivalent of Facebook Likes). There's quite a few things I would do differently now, but I still take great pride in having helped some fellow data scientists with this script, and thought I should post the link on my blog before I forget about it :

A study on Linear Regression applied to the Ames dataset

mardi 6 septembre 2016

Poker, bots et statistiques

Introduction


J'ai récemment pris part à une discussion sur la possibilité d'identifier des bots jouant sur les sites de poker en ligne, simplement en étudiant les statistiques de jeu proposées par tous les trackers tels que Holdem Manager ou Poker Tracker. Etant moi-même en train de quitter le milieu du poker, j'ai décidé de regrouper dans un article mon expérience sur la question, en espérant que cela puisse éventuellement sensibiliser les joueurs sur ce sujet, et donner des pistes pour démarrer à ceux que ça peut intéresser.

Le concept de base


La première idée d'un botter est d'automatiser complètement le processus de jouer au poker en ligne. Avoir un bot permet potentiellement de le laisser jouer seul, pendant que l'on fait soi-même tout autre chose. L'idée est tentante. Et une fois que l'automatisation est fonctionnelle, une deuxième idée fait souvent son apparition : la montée en échelle. Puisqu'un bot est totalement fonctionnel seul, pourquoi ne pas en lancer un deuxième qui ferait lui aussi sa vie de son côté? Et pourquoi s'arrêter à deux, quand on peut en lancer 5, 10 ou 50 et mutiplier ses gains potentiels par le même facteur? Bien sûr, les sites ont mis en place des garde-fous pour éviter ce genre de phénomène, mais ceux-ci sont contournables. Ainsi, les botters embauchent souvent leurs amis, leurs conjoints, les collègues, frères et soeurs, cousins etc. en leur proposant une petite part du gâteau en échange de la possibilité de jouer officiellement sous leur identité. Les comptes sont donc ouverts aux noms de ces connaissances, et les botters prévoyants se débrouillent pour que tous ces comptes jouent avec des adresses IP clairement différentes.

lundi 18 avril 2016

Smart word predictor

Completed my Johns Hopkins Data Science Specialization by submitting my final Capstone Project : a data product aiming to highlight the word prediction algorithm it is based on, and to provide an interface to it that can be accessed by anyone with a computer or a phone with an internet connection.

Around the world, people are spending an increasing amount of time on their mobile devices for email, social networking, banking and a whole range of other activities. But typing on mobile devices can be a serious pain. Smart keyboards make it easier for people to type on their mobile devices. One cornerstone of these smart keyboards is predictive text models. When someone types I went to the , the keyboard presents three options for what the next word might be. For example, the three words might be gym, store, restaurant. For this product, I built a predictive text model like those used by smart keyboards. 

Slide deck can be read on RPubs HERE (please note RPubs might not show correctly on some browsers).

The app is hosted on a Shiny server HERE

dimanche 6 mars 2016

NBA Player Stats Explorer

The NBA Player Stats Explorer aims to allow users to visually explore statistics related to the play during the 2015/2016 season of the National Basketball Association (or NBA).

NBA statistics are available in a number of places, but custom plotting of one statistic against another is nowhere to be found (to my admittedly limited knowledge). It will allow all NBA fans to get new insight on the abilities of their favorite players, and compare players against one another on various “profiles”. For a basic example, you could ask “Who are the best inside-out players in the league?”, and get a reasonable answer by plotting Rebounds against 3 point shots made.

The application is available at this address :

NBA Player Stats Explorer

mardi 26 janvier 2016

Les Expressos par les chiffres


Introduction

Winamax fournit sur son site Web les résultats du Challenge hebdomadaire Expresso, comme ici par exemple pour les résultats de la semaine courante sur les Expressos à 100€. Chaque nom de joueur présent dans le classement renvoie vers une page individuelle contenant ses propres résultats sur la semaine. A partir des données fournies sur ces pages, il est possible de calculer un certain nombre de statistiques.

L’objet de cet article est d’utiliser ces statistiques pour essayer de répondre à un certain nombre de questions concernant les Expressos.

Est-il possible de gagner de l’argent aux Expressos sur le long terme?

Ici l’idée est de se mettre dans la perspective du grinder qui joue régulièrement des Expressos dans l’objectif d’en retirer un revenu substantiel sur le long terme. C’est dans cette optique que pour cette étude, on regarde l’échantillon de joueurs suivant :
  • un minimum de 100 Expressos (pour les buyins à 25 ou 50€), ou 50 Expressos (pour les buyins à 100€) joués par semaine en moyenne depuis le 1er septembre 2015, soit 40 semaines.
  • seuls les expressos à 25€, 50€, et 100€ sont comptabilisés, les limites inférieures offrant des perspectives de gains trop faibles pour parler de revenu substantiel
Cet échantillon n’est pas exhaustif, il sert juste de support à cette étude. La première étape consiste à regarder les gains bruts aux tables sur cet échantillon :