Teaching - PIAD/PING


PIAD/PING : Projet de M1/M2 dans la filière IAD

BCI

Sujet détaillé

Données:

  • Données des compétitions Berlin-BCI
  • Données sémantique

A télécharger lors de la première réunion.

Chargement des données

La plupart des données sont au format matlab/octave, il faut les charger puis les traiter. En effet, le format est assez différent des problèmes standards d'apprentissage statistique. A ce stade, il sera aussi utile de visualiser des signaux et des statistiques sur ces signaux pour mettre en évidence la difficulté du problème.

Expériences initiales

Dans un premier temps, on mettra en place un système classique:

  • Filtre passe-bas pour limiter la taille des données
  • Classification linéaire (perceptron ou LibSVM, à télécharger ici

Dès cette phase du projet, il faudra mettre au propre une architecture permettant de multiplier les expériences. Nous envisagerons les classifieurs suivants:

  • Linéaire (cf libSVM ou perceptron ou autres)
  • Non-linéaire (Réseaux de neurones -cf MQIA- ou libSVM)

Expériences avancées

  • Possibilité d'intervertir les étiquettes
    • prédire une classe (normal)
    • prédire une classe sémantique (groupe de lettre)
    • prédire un individu
      • De manière supervisée, ou non supervisée

Le but sera de faire mieux que l'aléatoire et de le démontrer avec des tests de signification.

Architecture générale

Réfléchir à l'architecture générale du logiciel pour pouvoir gérer différents types de filtrage et différentes machines de classification (linéaires ou non).

Début du projet

proposition détaillée pour les expériences à mener:

Article de description détaillée des données: dataBCI.pdf

Librairie de classification de données:

  • LibSVM Linéaire + non linaire, nombreuses options
  • LibLinear Linéaire uniquement, mais beaucoup plus rapide
  • NB: les formats de fichiers sont les mêmes

Proposition de script pour la mise en forme des données et le comptage des expériences réelles pour chaque couple (utilisateur/lettres): mainEEG.m

Classification de personnes

  • [OPT] filtrage (quasi-obligatoire à mon avis)
  • Concaténation des 64 canaux de l'EEG pour chaque exemple. Mise en vrac de tous les signaux des différentes lettres pour chaque utilisateur.
  • Mise au format LibSVM des données
  • Classification en 4 classes: u1, u2, u3, u4 pour tous les signaux, en validation croisée
  • Analyse des modèles: en regardant les poids des modèles, trouver ce qui est caractéristique d'une personne. Est-ce des caractères temporels ou spatiaux?

Classification de lettres

  • Analyse des données: en moyennant les signaux, est-il possible d'extraire des caractéristiques discriminantes pour ce problème?
  • [OPT 1] filtrage
  • [OPT 2] construction de caractéristiques delta par rapport aux différents profiles utilisateurs (à faire dans un second temps)
  • Concaténation des 64 canaux de l'EEG pour chaque exemple. Mise en vrac de tous les signaux des différents utilisateurs.
  • Mise au format LibSVM des données
  • Classification en 26 classes: pour tous les signaux, en validation croisée
  • Résultats probablement peu concluants, besoin de nouvelles caractéristiques (cf OPT2)
  • Analyse des modèles: en regardant les poids des modèles, trouver ce qui est caractéristique d'une lettre. Est-ce des caractères temporels et/ou spatiaux?

Mapping des electrodes

Nous disposons maintenant du mapping des electrodes qui ont été utilisées dans les expériences EEG: coordonneesEEG.txt

J'ai réalisé un script octave pour visualiser un eeg (en utilisant une diffusion gaussienne) à l'instant t: visuEEG.zip

Il suffit de lancer dans une console octave:

  >> draweeg

Filtrage des signaux

Un fichier de démonstration:

mainFiltrage.m

Attention, il faut la toolbox signal de octave, récupérable avec la commande pkg dans octave

Sélection d'électrodes

le fichier BCISelCapteur.mat donne les jeux d'électrodes optimales que j'ai obtenues pour chaque couple (lettre1, lettre2)

 % usage avec la syntaxe cell {}:
 bestSubSet{1,2}
  ans =

    5    9   11   16   22   24   26   29   33   35   37   47   53   57   64
 % liste des électrodes que j'ai retenues dans la classification A contre B

Attention (1), tous les résultats sont à prendre avec des pincettes étant donné le filtrage que j'ai réalisé initialement.

Attention (2), seul le triangle supérieur de la matrice est renseigné

Références bibliographiques utiles