====== Projet Modélisation ====== [[:members:jchiquet:welcome|retour à l'accueil de ma page]] ===== Le sujet et les données ===== Choisir librement un jeu de données adapté à la régression linéaire multivarié et qui contienne au moins une dizaine de prédicteurs, par exemple * sur le [[http://archive.ics.uci.edu/ml/datasets.html format=&task=&att=&area=&numAtt=&numIns=&type=&sort=taskDown&view=table|dépôt Machine-Learning UCI]] parmi les données multivariées ('Data type : Multivariate') destinées à un problème de régression ('Default Task : Regression'), * parmi des données du package 'faraway' de 'R', * à la page [[http://www-stat.stanford.edu/~tibs/ElemStatLearn/]], * etc. Traiter le jeu de données choisi à l'aide d'un modèle linéaire multivarié. Utiliser diverses méthodes de sélection de variable (stepwise, forward/backward selection) et de régression biaisées (ridge/Lasso/etc) pour proposer un modèle qui vous semblera adéquate. Évaluer l'erreur de prédiction commise (avec validation croisée, ensemble test/apprentissage). Vous pourrez comparer vos modèles avec celui des moindres carrés quand cela est possible, pour lequel les techniques habituelles adaptées au modèle linéaire (bootstrap, régression robuste, analyse des résidus, etc.) peuvent être envisagées. Pour chacun des jeux de données, vous commencerez par une étude de statistiques descriptives : posez-vous des questions sur les données, en trouvez des pistes à l'aide d'histogrammes, de nuages de points, boîtes à moustaches, moyennes, variances, etc. Si vous choisissez d'ôter des données, recomposer l'échantillon, cela peut être une bonne idée, mais justifiez-le ! ===== Étude des données prostate ===== Vous pourrez vous faire les dents sur les données prostates afin de tester la validité des scripts ''R'' implémentés. Nous allons retrouver les résultats du livre //The Elements of Statistical Learning - 2nd Edition// en testant les modèles sur les données de cancer de la prostate. * {{:members:jchiquet:teachings:prostate.rda|Le fichier de données}} contient 3 variables : une matrice de prédicteurs ''x'', une matrice de réponses ''y'' et un vecteur ''set'' indiquant l'appartenance à l'ensemble de d'apprentissage. * {{:members:jchiquet:teachings:functions_mpr.r|Mon fichier de fonctions ''R''}} pourrait vous être utile * {{:members:jchiquet:teachings:functions_cv_mpr.r|Mon fichier de fonctions ''R''}} pour la validation croisée (à compléter par vous pour d'autres méthodes que le Lasso et la ridge). ==== Les moindres carrés ordinaires ==== {{:members:jchiquet:teachings:ols.pdf|Résolution commentée}} Nous dérivons l'estimateur des moindres carrés, son biais, sa variance et mettons en place le test d'hypothèse fondé sur le Z-score pour décider de la nullité d'un paramètre. Un script ''R'' complet et commenté implémente ces résultats. ==== La régression ridge ==== * {{:members:jchiquet:teachings:ridge.pdf|La régression ridge en théorie}} Nous dérivons l'estimateur de la régression //ridge//, qui pénalise la taille des coefficients à estimer, réduisant donc la variance mais augmentant le biais par rapport au moindres carrés. ==== Les méthodes de régularisation en norme 1 ==== * {{:members:jchiquet:teachings:l1_reg.pdf|Présentation du Lasso et de ses dérivées}} Nous présentons les critères du Lasso, de l'elastic-net, du group-lasso et de l'adaptive Lasso. Nous montrons comment les calculer en pratique sous ''R''. On étudie le problème des données ''prostate''. Sous ''R'', ces problèmes peuvent être résolus à l'aide des packages ''lars'', ''glmnet'' et ''grplasso''. ==== Validation croisée et choix de paramètres ==== * {{:members:jchiquet:teachings:cv_l1.pdf|Présentation de la validation croisée pour le choix de lambda}} Nous présentons la validation croisée comme estimation de l'erreur de prédiction. Nous montrons comment l'appliquer au choix du paramètre de pénalisation dans les méthodes ridge et Lasso. Ceci se généralise facilement aux autres méthodes étudiées. ===== Bibliographie ===== ** Modèle linéaire avec R ** Un [[http://cran.r-project.org/doc/contrib/Faraway-PRA.pdf|livre dévolu à la pratique de la régression sous R]]. ** Apprentisssage Statistique ** Un [[http://www-stat.stanford.edu/~tibs/ElemStatLearn/index.html|livre de référence]] disponible //gratuitement// au format PDF (à voir en particulier: les chapitres 3 et 7 pour la régression linéaire pénalisée et la validation croisée) \\ ** L'article fondateur du Lasso ** Tibshirani, R. (1996), Regression shrinkage an selection via the Lasso, //Journal of the Royal Statistical Society//, vol. 58, pp 267--288, [[http://www-stat.stanford.edu/~tibs/lasso/lasso.pdf/|preprint]], ** Algorithme de résolution ** Un article répertoriant les méthodes de type Lasso, group-Lasso, Elastic-Net, etc. pouvant être résolu via un algorithme très simple de descente de coordonnées (le lecture des premières pages est suffisante pour vous). Friedman, J. and Hastie, T. and Hoefling, H. and Tibshirani, R. (2007), Pathwise coordinate optimization, vol. 1, pp 302--332, //Annals of Applied Statistics//, [[http://www-stat.stanford.edu/~hastie/Papers/pathwise.pdf|preprint]]. ===== Documentation R ===== * [[http://stat.genopole.cnrs.fr/dw/~jchiquet/fr/softwares|L'introduction officielle]] * [[http://cran.r-project.org/doc/contrib/Paradis-rdebuts_fr.pdf|Une bonne introduction pour commencer pratiquement]] * [[http://www.hds.utc.fr/sy09/documents/Brostaux-Introduction-au-R.pdf|Une doc courte et efficace]] * [[http://www.hds.utc.fr/sy09/documents/Verzani-SimpleR.pdf|Un document plus conséquent, traitant des exemples]] * [[http://www.hds.utc.fr/sy09/documents/aide_memoire_R.pdf|Un aide mémoire]] ==== Quelques packages R utiles ==== * Le paquet [[http://cran.r-project.org/web/packages/faraway/|faraway]] avec les données du livre de Faraway. * Le paquet [[http://cran.r-project.org/web/packages/lars/|lars]] permet de calculer efficacement la solution du Lasso pour toutes les valeurs du paramètre de pénalisation lambda. * Le paquet [[http://cran.r-project.org/web/packages/glmnet/|glmnet]], permet de calculer la solution du Lasso et de l'elastic Net pour une grille de valeurs de lambda * Le paquet [[http://cran.r-project.org/web/packages/grplasso/|grplasso]] permet de calculer la solution du group-Lasso pour une grille de valeurs de lambda. * Le paquet [[http://stat.genopole.cnrs.fr/dw/~jchiquet/fr/softwares|SIMoNe]] permet d'inférence des réseaux biologiques avec diverse méthodes en particulier avec la sélection de voisinage Lasso. * Le paquet [[http://cran.r-project.org/web/packages/bootstrap/index.html|bootstrap]] implémente diverses méthodes de validation croisée (leave-one-out, jack-knife, bootstrap).