Teaching - RFIDEC


RFIDEC

Examen de milieu de semestre:

Voir la page de C. Gonzales:

http://webia.lip6.fr/~gonzales/teaching/rfidec/index.php

Examen de fin de semestre:

  • Droit aux notes de cours et aux slides
  • Le programme commence aux cours de P. Gallinari.
  • Les slides sont sur la page de P. Gallinari ainsi que l'exam corrigé de l'an dernier.

http://www-connex.lip6.fr/~gallinar/Enseignement/Enseignement.html

TME sur le maximum a posteriori. Etude d'une roulette de casino.

(cf wikipedia: http://fr.wikipedia.org/wiki/Roulette_%28jeu_de_hasard%29)

Q0: Peut-on gagner à la roulette à coup sur:

  1. en théorie?
  2. en pratique?

Nous souhaitons construire un système pour gagner à coup sur, en pratique! Pour cela, nous introduisons une hypothèse: le tirage obtenu dépend de trois facteurs.

  1. la vitesse de rotation de la table
  2. la vitesse de lancer de la bille par le croupier
  3. la position de la table au moment du lancé de la bille

Deux photos successives très rapides sont prises discrètement et permettent d'estimer ces trois caractéristiques. Plusieurs complices ont pratiqué des relevés et les résultats sont stockés dans le fichier suivant: tirageRoulette2010.dat.

Pour simplifier les traitements ultérieurs, les vitesses ont été discrétisées en 3 et 5 classes (la vitesse normale est au milieu et on retrouve moins fréquemment des vitesses plus lentes ou plus rapides). De même, le problème de prévision d'un nombre étant trop complexe, nous jouerons à Passe et Manque (on mise sur >18 ou <=18), on perd toujours si le 0 tombe.

Le fichier est constitué de 5000 tirages présentés par ligne X = [VRR, VL,CL, F].

  • VRR : vitesse de rotation de la roulette \sim \mathcal{B}(2,0.5) suit B(2, 0.5)
  • VL : vitesse de lancé de la bille \sim \mathcal{B}(4,0.5) B(4,0.5)
  • CL : chiffre en face de la bille au moment du lancé \sim \mathcal{U}(36) U(36)
  • F : tirage: 0=0, 1=manque, 2=passe

Q1: En se basant sur les 1000 premières observations, construire la table p(VRR, VL, CL | F).

  • Vous utiliserez au choix:
    • une matrice à 4 dimensions pour stocker les résultats
    • deux matrices 3D correspondant respectivement à passe et manque
  • Deux implémentations sont possibles: soit avec 4 boucles for imbriquées, soit en parcourant la liste des réalisations et en incrémentant la case correspondante... La seconde est évidemment beaucoup plus simple.

Q2: Modèles

  • Utiliser une stratégie de base de mise aléatoire (sur passe ou manque) et calculer le gain associé.
    • Retrouvez vous la valeur attendue? La roulette vous semble-t-elle fonctionner correctement?
  • Tenter maintenant de construire un modèle de décision basé sur la vraisemblance
    • Appliquer ce modèle sur les données proposées
    • Calculer le gain obtenu sur les 1000 échantillons d'apprentissage
    • Calculer le gain obtenu sur les données non-utilisées en apprentissage

Q3: La table construite précédemment est très grande... Que pensez vous du nombre de la taille de cette table en fonction du nombre de données dont vous disposez?

  • Pour réduire la taille de cette table, nous proposons de réduire la taille de CL en 6 classes.
    • Calculer le gain obtenu sur les 1000 échantillons d'apprentissage
    • Calculer le gain obtenu sur les données non-utilisées en apprentissage

Q4: Construction d'un modèle de roulette

On vous demande maintenant de construire un modèle de roulette dans la méthode tirage.m.

Q4.0 Pourquoi avoir choisi la loi binomiale pour modéliser les vitesses de rotation et de lancer de la bille?

Q4.1 Génération des données selon plusieurs lois

  • géréner N données VRR \sim \mathcal{B}(2,0.5) en utilisant binornd
  • géréner N données VL \sim \mathcal{B}(4,0.5) en utilisant binornd
  • générer N données CL

Utiliser le code suivant pour calculer la sortie

  vitesseRotation = [10:0.2:10+(nVRR)*1]'; % vitesse VRR
  nbTour = (2:0.2:2+(nVL))'; % nb tour de la bille suite
                             % a la vitesse de lancé

  precisionMesureVRR = 0.01;
  precisionVitesseVL = 0.005;
  precisionCL= 1;

  nbTours = (vitesseRotation(VRR)+randn(n,1)*precisionMesureVRR*3) .* ...
  (nbTour(VL)+randn(n,1)*precisionVitesseVL*3);
  chiffre = (nbTours-floor(nbTours))*36;
  F = round(CL+randn(n,1)*precisionCL*3 + chiffre);

  F = mod(F, 37);

Q4.2: vérifier que les tirages sont bien uniformes à l'aide d'un test du \chi^2 (avec une signification de 5%)

NB1: la fonction [yy,xx]=hist(t, categories) permet pour une variable discrète unidimensionnelle t de compter les occurences de toutes les categories. Le nombre d'occurences est stocké dans yy

NB2: la fonction chi2inv(population,DL) remplace votre table du \chi^2. Pour connaitre la valeur limite à un niveau de signification 0.05 dans un problème à DL degrés de liberté, il faut utiliser: chi2inv(0.95,DL)