TP Data-Mining Contest

Contents

But du TP

Ce TP est prévu pour 4h. Votre objectif est de déterminer le meilleur modèle possible pour le jeu de données proposé (disponible . Vous pouvez, pour évaluer vos modèles, utiliser les outils du TP précédent ou bien ceux fournis avec les toolbox utilisées (netlab et libsvm).

Les deux méthodes d'apprentissage que vous utiliserez sont le SVM binaire et le Perceptron Multi Couche. La toolbox utilisée est disponible .

Le code fourni ci-dessous peut vous servir de base et illustre l'utilisation des toolbox et le type de réglage que l'on peut effectuer pour chaque.

Ajout des répertoires utiles
addpath('../toolbox/libsvm-mat-2.88-1/');
addpath('../toolbox/netlab3.3/');

Choix des données

Il vous revient de choisir la façon dont vous allez diviser votre base de données, de manière à pouvoir évaluer le mieux possible vos modèles. Ici nous procédons à un simple découpage en 2 parties, la première pour tester le modèle, la seconde pour entrainer le modèle.

[etiquettes, donnees] = read_sparse('../data/splice_scale');
xt = donnees(1:500,:);
yt = etiquettes(1:500);
x = donnees(501:end,:);
y = etiquettes(501:end);

Le perceptron multi couche

Le perceptron multi couche est le réseau de neurone le plus simple dans le sens où tous les neurones de deux couches consécutives sont interconnectés.

Nombre de neurones en entrée

nin = size(donnees,2);

Nombre de neurones de la couche cachée

nhidden=5;

Nombre de neurones de la couche de sortie Ce nombre est nécessairement 1 pour des données binaires

nout=1;

Taux d'apprentissage

alpha = 0.1;

Type de fonction d'activation

type = 'linear';

Création du réseau

net = mlp(nin, nhidden, nout, type, alpha);

Options d'apprentissage

options = zeros(1,18);

Réglage des commentaires (verbose)

options(1) = 1;

Nombre max de cycles

options(14) = 10;

Choix de la méthode

methode = 'quasinew';

Optimisation des poids

[net] = netopt(net, options, x, y, methode);

Test du réseau

ypred = mlpfwd(net, xt);
ypred = round(ypred);
ypred(find(ypred==0)) = -1;

Calcul du taux d'erreur

ErrorRate = 100*sum(abs(yt-ypred))/(2*length(yt));
disp(['Le taux d''erreur est de ' ,num2str(ErrorRate), '%']);

Matrice de confusion pour un seuil à 0.5, 0.05 et 0.9

Le code se trouve ici

ypred = mlpfwd(net, xt);
C=confmat2(ypred,yt,0.5)
C005=confmat2(ypred,yt,0.05)
C09=confmat2(ypred,yt,0.9)

Le SVM binaire

La liste des paramètres possibles est visible en entrant 'svmtrain' dans la ligne de commande matlab. Vous pouvez jouer sur le type de noyau (option '-t'), le degree ('-d' dans le cas d'un noyau polynomial), la largeur de bande ('-g' dans le cas d'un noyau à base radiale), le biais ('-r' pour les noyaux polynomiax et sigmoïd) ainsi que sur la tolérance aux erreurs (option '-c') Il est recommandé de conserver les options '-s 0 -b 1'.

param = ['-s 0 -b 1 -c 100 -g 0.2'];
model = svmtrain(y, x, param);
[predict_label, accuracy, ypred] = svmpredict(yt, xt, model, '-b 1');
disp(['Le taux d''erreur est de ' ,num2str(100-accuracy(1)), '%']);
C=confmat2(ypred(:,1),yt,0.5)
C025=confmat2(ypred(:,1),yt,0.25)
C075=confmat2(ypred(:,1),yt,0.75)

Compte Rendu

Le compte rendu doit contenir une description des essais réalisés, et la motivation du choix final. Les méthodes d'évaluations à utliser sont la validation croisée et la courbe ROC. Les illustrations, résultats numériques, choix de découpage de la base d'apprentissage, interprétations etc. doivent figurer dans le rapport.

Il doit enfin clairement mentionner quelle méthode a été retenue et avec quels paramètres.

Le compte rendu (format pdf) doit être envoyé par mail à gaelle@loosli.fr à la fin de la dernière heure de TP. L'heure du mail fera foi, tout retard sera sanctionné sur la note. Il est accepté un compte-rendu par binôme ou par personne. Vous avez la possibilité de joindre du code si cela vous semble justifié.