Tag :Machine Learning

Rencontre USI: Deep Learning avec Yann Le Cun, chercheur et directeur de recherche IA de Facebook

Peut-être avez-vous déjà entendu parler de machine learning, puisque c’est l’un des buzzword ces derniers temps. Et bien dans l’intelligence artificielle il y a aussi le domaine du deep learning, ou apprentissage profond en français. D’ailleurs un groupe meetup existe sur le sujet à Paris.

« Wherever there is data, there is Machine Learning »

 

yannLeCun

 

Yann Le Cun justement est un chercheur de renommée internationale dans le domaine de l’intelligence artificielle, et en deep learning. Ses travaux de recherches ont notamment portés sur les réseaux de neurones à convolution, théorie qui est utilisée par exemple dans la reconnaissance d’image, d’objets. Enfin Yann est le directeur de la recherche en intelligence artificielle de Facebook.

 

C’est lors de la conférence USI les 2 & 3 juillet derniers où Yann Le Cun animait une session sur le “deep learning” que nous l’avons rencontré et interviewé.

Rencontre avec Yann Le Cun pour parler de deep learning et d’autres choses encore !

 


Télécharger l’interview en ogg ou mp3

Interview réalisée par Amira Lakhal et Ludwine Probst

La trame de l’interview

00’0 – Le deep learning c’est quoi ?

1’29 – Où retrouve t’on le deep learning dans notre quotidien ?

2’31 – Pourquoi un tel engouement pour le deep learning ?

5’32 – Aujourd’hui existe-t’il des limites pour aller encore plus loin et si oui quelles sont-elles ?

6’50 – Et concernant les vidéos, y’a t-il des recherches faites sur le domaine ?

8’58 – Pouvez-vous nous en dire plus sur le laboratoire de recherche en IA de Facebook qui vient de s’ouvrir à Paris ? Est-ce que vous recrutez et quels profils ?

 

Merci à Yann Le Cun pour cette interview. Vous pouvez le suivre via son twitter.

Analyze accelerometer data with Apache Spark and MLlib

The past months I grew some interest in Apache Spark, Machine Learning and Time Series, and I thought of playing around with it.

In this post I will explain how to predict user’s physical activity (like walking, jogging, sitting…) using Spark, the Spark-Cassandra connector and MLlib.

The entire code and data sets are available on my github account.

This post is inspired from the WISDM Lab’s study and data (not cleaned) come from here.

 

Spark-accelerometer

A FEW WORD ABOUT APACHE SPARK & CASSANDRA

Apache Spark started as a research project at the University of California, Berkeley in 2009 and it is an open source project written mostly in Scala. In a nutshell, Apache Spark is a fast and general engine for large-scale data processing.
Spark’s main property is in-memory processing, but you can also process data on disk and it can be fully integrated with Hadoop to process data from HDFS. Spark provides three main API, in  Java, Scala and Python. In this post I chose the Java API.
Spark offers an abstraction called resilient distributed datasets (RDDs),  which are  immutable and lazy data collections partitioned across the nodes of a cluster.

MLlib is a standard component of Spark providing machine learning primitives on top of Spark which contains common algorithms (regression, classification, recommendation, optimization, clustering..), and also basic statistics and feature extraction functions.

If you want to get a better look at Apache Spark and its ecosystem, just check out the web site Apache Spark and its documentation.

Finally the Spark-Cassandra connector lets you expose Cassandra tables as Spark RDDs, and persist  Spark RDDs into Cassandra tables, and execute arbitrary CQL queries within your Spark applications.

AN EXAMPLE: USER’S PHYSICAL ACTIVITY RECOGNITION

The availability of acceleration sensors creates exciting new opportunities for data mining and predictive analytics applications. In this post, I will consider data from accelerometers to perform activity recognition.

The data in my github account are already cleaned.
Data come from 37 different users. Each user has recorded the activity he was performing. That is why something the data are not relevant and need to be cleaned. Some rows are empty in the original file, and some other are misrecorded.

DATA DESCRIPTION

I have used labeled accelerometer data from users thanks to a device in their pocket during different activities (walking, sitting, jogging, ascending stairs, descending stairs, and standing).

The accelerometer measures acceleration in all three spatial dimensions as following:

  • Z-axis captures the forward movement of the leg
  • Y-axis captures the upward and downward movement of the leg
  • X-axis captures the horizontal movement of the leg

The plots below show characteristics for each activity. Because of the periodicity of such activities, a few seconds windows is sufficient to find specific characteristics for each activity.

walking_jogging_view

stairs_view

standing_sitting_view

We observe repeating waves and peaks for the following repetitive activities walking, jogging, ascending stairs and descending stairs. The activities Upstairs and Downstairs are very similar, and there is no periodic behavior for more static activities like standing or sitting, but different amplitudes.

 

DATA INTO CASSANDRA

I have pushed my data into Cassandra using the cql shell.

https://gist.github.com/nivdul/88d1dbb944f75c8bf612

Because I need to group my data by (user_id, activity) and then to sort them by timestamp, I decided to define the couple (user_id, activity) and timestamp, as a primary key.

Just below, an example of what my data looks like.

Capture d’écran 2015-04-15 à 20.25.19

And now how to retrive the data from Cassandra with the Spark-Cassandra connector:

 

https://gist.github.com/nivdul/b5a3654488886cd36dc5

 

PREPARE MY DATA

As you can imagine my data was not clean, and I needed to prepare them to extract my features from it. It is certainly the most time consuming part of the work, but also the more exciting for me.

My data is contained in a csv file,  and the data was acquired on different sequential days . So I needed to define the different recording intervals for each user and each activity. Thanks to these intervals, I have extracted windows on which I have computed my features.

Here is a diagram to explain what I did and the code.

 

IMG_7954

 

First retrieve the data for each (user, activity) and sorted by timestamp.

 

https://gist.github.com/nivdul/6424b9b21745d8718036

 

Then search for the jumps between the records in order to define my recording intervals and the number of windows per intervals.

https://gist.github.com/nivdul/84b324f883dc86991332

DETERMINE AND COMPUTE FEATURES FOR THE MODEL

Each of these activities demonstrate characteristics that we will use to define the features of the model. For example, the plot for walking shows a series of high peaks for the y-axis spaced out approximately 0.5 seconds intervals, while it is rather a 0.25 seconds interval for jogging. We also notice that the range of the y-axis acceleration for jogging is greater than for walking, and so on. This analysis step is essential and takes time (again) to determine the best features to use for our model.

After several tests with different features combination, the ones that I have chosen are described below (it is basic statistics):

  • Average acceleration (for each axis)
  • Variance (for each axis)
  • Average absolute difference (for each axis)
  • Average resultant acceleration (1/n * sum [√(x² + y² + z²)])
  • Average time between peaks (max) (Y-axis)

 

FEATURES COMPUTATION USING SPARK AND MLLIB

Now let’s compute the features to build the predictive model!

AVERAGE ACCELERATION AND VARIANCE

https://gist.github.com/nivdul/0ff01e13ba05135df09d

AVERAGE ABSOLUTE DIFFERENCE

https://gist.github.com/nivdul/1ee82f923991fea93bc6

AVERAGE RESULTANT ACCELERATION

https://gist.github.com/nivdul/666310c767cb6ef97503

AVERAGE TIME BETWEEN PEAKS

https://gist.github.com/nivdul/77225c0efee45a860d30

THE MODEL: DECISION TREES

Just to recap, we want to determine the user’s activity from data where the possible activities are: walking, jogging, sitting, standing, downstairs and upstairs. So it is a classification problem.

Here I have chosen the implementation of  the Decision Trees algorithms using MLlib, to create my model and then to predict the activity performing by users.

You could also use others algorithms such as Random Forest or Multinomial Logistic Regression (from Spark 1.3) available in MLlib.
Remark: with the chosen features, prediction for « up » and « down » activities are pretty bad. One trick would be to define more relevant features to have a better prediction model.

Below is the code that shows how to load our dataset, split it into training and testing datasets.

 

https://gist.github.com/nivdul/246dbe803a2345b7bf5b

 

Let’s use DecisionTree.trainClassifier to fit our model. After that the model is evaluated against the test dataset and an error is calculated to measure the algorithm accuracy.

https://gist.github.com/nivdul/f380586bfefc39b05f0c

RESULTS

classes number mean error (Random Forest) mean error (Decision Tree)
4 (4902 samples) 1,3% 1,5%
6 (6100 samples)  13,4% 13,2%

 

CONCLUSION

In this post we have first demonstrated how to use Apache Spark and Mllib to predict user’s physical activity.

The features extraction step is pretty long, because you need to test and experiment to find the best features as possible. We also have to prepare the data and the data processing is long too, but exciting.

If you find a better way/implementation to prepare the data or compute the features, do not hesitate to send a pull request or open an issue on github.

Rencontre avec Ludwine Probst, développeuse chez Cityzen Data et membre de Team Duchess France

Nous continuons notre série d’interview avec le portrait de Ludwine Probst, Data Engineer, speakeuse et membre très active de la team Duchess France.

DSC_0368

Devoxx Anvers 2014 – Photo Amira Lakhal

Est-ce que tu peux te présenter ?

Je suis Ludwine Probst, 30 ans, développeuse principalement en Java après avoir obtenu Master Recherche en Maths en 2010. Depuis Septembre, je travaille comme Data Engineer pour la start-up Cityzen Data à Brest. Dans la pratique, j’imagine des méthodes et outils d’analyse de données qui proviennent de capteurs / objets connectés. Cela inclut du Machine Learning et du traitement temps réel sur de gros volumes de données. Je suis très contente car je code mais dans une atmosphère de mathématiques, et avec l’équipe, nous construisons ce projet ensemble en apportant chacun notre touche personnelle et créativité. C’est pile ce que je recherchais.

Peux-tu nous expliquer ce qu’est le trophée Excellencia ?

Le Trophée Excellencia était organisé par les femmes du numérique et Epitha. J’ai proposé ma candidature dans la catégorie “Femme high-tech investie dans une association sociale ou humanitaire” en avril dernier pour mon investissement dans Duchess France. Lors de la remise du prix le 30 Septembre j’ai remporté le trophée, une vraie surprise. Et je suis très heureuse parce que ce prix va aider Duchess France a avoir plus de visibilité et donner de la portée à nos actions et messages en dehors de notre cercle actuel.

excellencia_lud

Trophée Excellencia – Photo Olivier Ezratty

Faire émerger des rôles modèles féminin dans l’IT est très important pour toi. D’ailleurs, tu n’hésites pas à présenter dans les communautés qu’elles soient techniques ou non. Pourquoi ? Quelle est ta plus grande réalisation cette année ?

Je pense que les rôles modèles sont importants pour moi parce qu’ils m’ont aidé et m’aide encore aujourd’hui à avancer. Mon premier rôle modèle fût ma prof de maths de prépa : c’est en partie grâce à elle si j’ai continué dans les Maths. Et ensuite dans l’informatique, il y a 2 ans et demi j’ai rencontré Mathilde, véritable souffle d’inspiration et prise de risque pour moi. C’est elle qui m’a encouragée à faire des talks et m’a fait confiance pour m’investir dans Duchess France. Aujourd’hui je continue à m’impliquer dans l’association pour donner plus de portée à nos actions, et essayer d’avoir un véritable impact. Il me semble important d’avoir une représentation de femmes développeuses épanouies dans leur métier, et c’est ce que je veux mettre en avant avec Duchess France.

Pour ma part, je ne sais pas si je suis un rôle modèle. Mais si mon énergie et ma motivation donne envie à d’autres de se lancer, j’en suis très contente ! Pour moi c’est l’un des but de Duchess France : montrer que c’est possible et créer une dynamique autour des métiers techniques auprès des femmes.

Quant à ma plus grande réalisation cette année, beaucoup de choses se sont passés pour moi : un super voyage à New York, un nouveau job et enfin ma première présentation en anglais à Devoxx Anvers.

Tu as aussi fait des talks techniques sur Spark, avec en particularité d’avoir dessiné à la main la pluplart de tes slides. Peux-tu présenter rapidement de quoi tu parles ? Comment t’es tu préparée ? As-tu rencontré des difficultés ?

J’ai fait une introduction sur Spark en présentant les points fort de cet outil, son écosytème et en quoi il est pertinent sur des traitements itératifs (que l’on retrouve beaucoup dans le Machine Learning).

Pour la préparation j’y suis allée progressivement : première step 10min aux Human Talks, puis 20 min à Scala IO et FinistJUG et enfin 25 min à Devoxx Anvers en anglais. Ce n’est pas exceptionnel mais le plus dur pour moi a été de dépasser mon blocage en anglais. Pour cela j’ai commencé des cours en septembre et j’ai fait une répétition de mon talk avec ma prof d’anglais juste avant mon départ pour Devoxx. Et puis j’ai été particulièrement bien entourée par mes collègues de Cityzen Data et les Duchesses pour répéter mon talk et relire mes slides.

Concernant les dessins dans mes slides, j’ai pris beaucoup de plaisir à les faire et à réfléchir aux shémas qui pourraient au mieux représenter les idées que je voulais mettre en avant. J’ai une BD en cours sur une techno que j’espère finir prochainement.

Toutes mes présentations sont sur speakerdeck.

Tu as déménagé sur Brest, comment est l’écosystème là-bas ? A quel événement vas tu ?

Oui je vis principalement à Brest depuis fin août pour mon nouveau job et la communauté informatique y est bien présente ! Je les ai rejoint avec plaisir et j’espère pouvoir très prochainement organiser des events Duchess. J’ai rencontré une autre développeuse motivée, Stéphanie, et une rencontre est prévue avec des étudiantes d’écoles d’ingénieur. A suivre donc…

 FinistJUG

Côté communautés, il y a le FinistJUG qui organise un event chaque mois et ouvert à toutes les technos et un GDGFinist pour découvrir les technos Google. La prochaine soirée sera un barcamp le 10 décembre. Il y a aussi la cantine numérique de Brest qui nous accueille pour nos événements, et organise par exemple une seconde édition du Startup Weekend Brest fin janvier.

logoCantineBrestFondClair

Enfin le Fablab de Brest qui met notamment à disposition des imprimantes 3D ou découpeuses laser.

Merci Ludwine !

N’hésitez pas à la suivre sur le blog Duchess ou sur son twitter.

Scala.IO

scalaio_black

Scala.IO organise cette année sa deuxième édition autour de Scala. Le programme a été publié depuis début Septembre et est accessible autant aux débutants qu’aux confirmés. Cette année, parmi les orateurs se trouvent une Duchess, Ludwine Probst, qui va nous parler Machine Learning avec Spark.

Vous aussi, vous êtes intéressés pour y aller ? Alors voici quelques informations pratiques :

Quand ? Les 23 et 24 Octobre 2014

Où ? Aux salons du Tapis Rouge

Comment ? Tout est détaillé sur leur site.

Il reste encore des places également éligibles au DIF mais il ne faut pas traîner les inscriptions se terminent le 3 Octobre 2014.

Nous serons quelques unes à venir alors nous espérons vous retrouver là-bas.

USI 2014 – Rencontre avec Olivier Grisel – Predictive Analytics

usi

Les Duchess étaient présentes à l’édition 2014 de l’USI qui s’est tenu les 16 et 17 juin au Palais Brongniart à Paris.

 

IMG_20140617_150607

IMG_20140616_143523

 

 

 

 

 

 

 

 

 

Cette conférence a la particularité de s’adresser à un public très varié et se définit comme étant le rendez-vous des geeks & des boss.

Au programme cette année : du Big Data, des Objets Connectés, du Digital et du Lean Management.

 

IMG_20140617_150539IMG_20140617_150637

 

 

 

 

 

 

 

 

 

Nous avons eu la chance lors de cette conférence d’interviewer plusieurs speakers (interview audio).

 

Première rencontre avec Olivier Grisel, ingénieur logiciel à l’INRIA Saclay, qui a présenté la session Predictive Analytics.

olivier grisel

Olivier revient sur la définition du Big Data, utilisé trop souvent abusivement, puis nous parle de Machine Learning.

Pour finir il nous présente scikit-learn, projet open-source codé en python qui fournit des algorithmes de Machine Learning, sur lequel il est contributeur.


Vous pouvez télécharger l’interview soit en ogg ou mp3

Quelques liens

Les slides de la session Predictive Analytics

Projet open-source scikit-learn

En continuant à utiliser le site, vous acceptez l’utilisation des cookies. Plus d’informations

Les paramètres des cookies sur ce site sont définis sur « accepter les cookies » pour vous offrir la meilleure expérience de navigation possible. Si vous continuez à utiliser ce site sans changer vos paramètres de cookies ou si vous cliquez sur "Accepter" ci-dessous, vous consentez à cela.

Fermer