Voici quelques réflexions au sujet d’un système de prédiction/recommandation pour les vélos Toulouse et vélo’v de Lyon:
(Présentation du 29 Avril 2015 à Toulouse , réunion des ingénieurs statisticiens bike-data)
L’idée principale est de pouvoir faire une prévision ( avec un indice de confiance ) à 1 jour (maximum) du nombre de places disponibles / de vélos disponibles pour une station donnée, en fonction de quelques paramètres ( jour, heure, météo, ville )
Une idée complémentaire serait d’avoir la possibilité pour l’utilisateur cycliste de « noter » la station, d’ajouter des commentaires/avis : » Pas assez de vélos le samedi soir, après 22h » …
Quelles données?:
- Les données ouvertes des stations de vélos fournies par JCDecaux (par ville)
- https://developer.jcdecaux.com/#/home
- https://developer.jcdecaux.com/#/opendata/vls?page=getstarted
GET https://api.jcdecaux.com/vls/v1/stations?contract={contract_name}&apiKey={api_key}
Par exemple en utilisant curl+mongoimport:
curl -s 'https://api.jcdecaux.com/vls/v1/stations?contract=Toulouse&apiKey={xxxxxxxxxxxxxxxxxxxxxxxxxxxx}' -o $OUTPUT/all_stations_toulouse.json
/usr/bin/mongoimport --jsonArray -db velos -c stations --file $OUTPUT/all_stations_toulouse.json
Le résultat de la requête sera au format json:
[
{"number":55,
"name":"00055 - ST SERNIN G. ARNOULT","address":"2 RUE GATIEN ARNOULT",
"position":{"lat":43.608951960496405,"lng":1.441003598726198},
"banking":true,
"bonus":false,
"status":"OPEN",
"contract_name":"Toulouse",
"bike_stands":15,
"available_bike_stands":4,
"available_bikes":9,
"last_update":1430237243000},
...
...
]
Il suffira de faire un « cron » qui ira chercher les données chez jcdecaux toutes les 2 ou 5 minutes et les importer dans une base mongodb (orientée document)
david@mapdata:~$ mongo
MongoDB shell version: 2.4.9
connecting to: test
> show dbs
local 1.078125GB
velos 9.94921875GB
veloslyon 5.951171875GB
>use velos
> db.stations.distinct("position").length
281
> use veloslyon
switched to db veloslyon
> db.stations.distinct("name").length
347
Quelles stratégies ?:
- Time series
- Classification non supervisée (k-means)
- Régressions
- Autres
Quels outils ?:
- mongodb et json (geojson)
- R boite à outil du statisticien + modules ( Forecast …)
- bigml , dataiku
Quelques travaux de recherches et publications:
« Predicting Bikeshare System Usage Up to One Day Ahead »
Romain Giot [CNRS Labrit Univ Bordeaux 1] , Raphael Cherrier [Qucit.com]
https://hal.archives-ouvertes.fr/hal-01065983/document
« Cyclists Pedal Faster On Wednesdays, Reveals Smart Bike Data »
« Characterizing the speed and paths of shared bicycles in Lyon »
http://arxiv.org/pdf/1011.6266v1.pdf
Qucit.com: Startup Bordelaise et son appli IOS « la bonne station »
https://itunes.apple.com/fr/app/la-bonne-station/id703168451?mt=8
Challenges Kaggle :
https://www.kaggle.com/c/bike-sharing-demand
http://www.evanvanness.com/post/100217670076/neuralnet-r-package-neural-network-to-predict
Quelques stats sur les vélos en accès partagé: (source Statista)
You will find more statistics at Statista