Tag Archives: CV

Calculating an LOOCV MSE by hand

Last week, we had an “mid-term” exam, for our introduction to statistical learning course.  The question is simple: consider three points, (x_i,y_i), here \{(0,2),(2,2),(3,1)\}Consider here some linear models, estimated using least square techniques, what would be the leave-one-out cross-validation MSE ?

I like this exercise since we can compute everything easily, by hand. Since at each step we remove one single observation, only two observations remain in the sample. In with two points, fiting a linear model is straightforward (whatever the technique considered). Here, we’re simply considering the straight line that passes through the other two points. And since we have the straight line (without the minimal calculation of minimizing the sum of squared errors), we have the error committed on the omitted observation. This is exactly what we see in the drawing below

In other words, the LOOCV MSE is here{\displaystyle\operatorname{MSE}={\frac{1}{n}}\sum_{i=1}^{n}\left(Y_{i}-{\hat {Y_{i}}^{(-i)}}\right)^{2}}, where, intuitively, \hat {Y_{i}}^{(-i)} denotes the prediction associated with x_i with the model obtained on the other n-1 observations. Thus, here{\displaystyle\operatorname{MSE}=\frac{1}{3}\big(2^2+\frac{2^2}{3^2}+1^2\big)=\frac{1}{27}\big(36+4+9\big)=\frac{49}{27}}Note that we can also use R to compute that quantity,

> x = c(0,2,3)
> y = c(2,2,1)
> df = data.frame(x=x,y=y)
> yp = rep(NA,3)
> for(i in 1:3){
+ reg = lm(y~x, data=df[-i,])
+ yp[i] = predict(reg,newdata=df)[i]
+ }
> 1/3*sum((yp-y)^2)
[1] 1.814815

which is precisely what we obtained, by hand.

Variable Selection using Cross-Validation (and Other Techniques)

A natural technique to select variables in the context of generalized linear models is to use a stepŵise procedure. It is natural, but contreversial, as discussed by Frank Harrell  in a great post, clearly worth reading. Frank mentioned about 10 points against a stepwise procedure.

  • It yields R-squared values that are badly biased to be high.
  • The F and chi-squared tests quoted next to each variable on the printout do not have the claimed distribution.
  • The method yields confidence intervals for effects and predicted values that are falsely narrow (see Altman and Andersen (1989)).
  • It yields p-values that do not have the proper meaning, and the proper correction for them is a difficult problem.
  • It gives biased regression coefficients that need shrinkage (the coefficients for remaining variables are too large (see Tibshirani (1996)).
  • It has severe problems in the presence of collinearity.
  • It is based on methods (e.g., F tests for nested models) that were intended to be used to test prespecified hypotheses.
  • Increasing the sample size does not help very much (see Derksen and Keselman (1992)).
  • It allows us to not think about the problem.
  • It uses a lot of paper.

Continue reading Variable Selection using Cross-Validation (and Other Techniques)

Cross Validation for Kernel Density Estimation

In a post publihed in July, I mentioned the so called the Goldilocks principle, in the context of kermel density estimation, and bandwidth selection. The bandwith should not be too small (the variance would be too large) and it should not be too large (the bias would be too large). Another standard method to select the bandwith, as mentioned this afternoon in class is the cross-validation technique (described in Chiu (1991)). Here, we would like to minimize

https://latex.codecogs.com/gif.latex?\mathbb{E}\left[\int%20[\widehat{f}_h(x)-f(x)]^2dx\right]

The integral can be writen

https://latex.codecogs.com/gif.latex?\int%20\widehat{f}_h(x)^2dx-2\int%20\widehat{f}_h(x)f(x)dx+\int%20f(x)^2dx

Since the third component is constant, we have to minimize the expected value of the sum of the first two.

The idea is to approximate it as

https://latex.codecogs.com/gif.latex?J(h)=\int%20\widehat{f}_h(x)^2dx-\frac{2}{n}\sum_{i=1}^n%20\widehat{f}_{(-i)}(X_i)

which can easily be computed. Consider here some sample, with 50 observations, from a Gaussian distribution,

> set.seed(1)
> X=rnorm(50)

From Silverman’s rule of thumb (which should be appropriate here since the sample has a Gaussian sample) the optimal bandwidth is

> 1.06*sd(X)*length(X)^(-1/5)
[1] 0.4030127

Using the cross-validation technique mentioned above, compute

> J=function(h){
+ fhat=Vectorize(function(x) density(X,from=x,to=x,n=1,bw=h)$y)
+ fhati=Vectorize(function(i) density(X[-i],from=X[i],to=X[i],n=1,bw=h)$y)
+ F=fhati(1:length(X))
+ return(integrate(function(x) fhat(x)^2,-Inf,Inf)$value-2*mean(F))
+ }
> vx=seq(.1,1,by=.01)
> vy=Vectorize(J)(vx)
> df=data.frame(vx,vy)
> library(ggplot2)
> qplot(vx,vy,geom="line",data=df)

The function has the following shape

and the optimal value is

> optimize(J,interval=c(.1,1))
$minimum
[1] 0.4687553

$objective
[1] -0.3355477

Note that, indeed, it is close to Siverman’s optimal bandwidth.

Maudits Français…

S’il y a une tâche que je déteste par dessus tout dans ma vie d’enseignant-chercheur, à Montréal, c’est celle de traducteur de CV de Français. Assez (pour ne pas dire trop) régulièrement, on me demande de donner un coup de main pour décoder le CV d’un étudiant Français, à la recherche d’un “stage“. Sous prétexte que les Québécois parlent le français, beaucoup d’étudiants nous envoient des CV en français, malheureusement dans une langue qui ne parle qu’aux français (de France). On y entend parler de “CPGE” (souvent sans expliquer ce que cela signifie), de “Master” ou pire, de “Stage de Master 2”. Je me souviens de dialogues savoureux avec des collègues,

ça veut dire quoi ça M2 ?
– ça correspond à la deuxième année de maîtrise, en gros… [ndlr oui, LMD c’est un système qui n’existe pas en dehors de l’Europe, le reste du monde raisonne davantage en undergraduate et graduate studies je pense]
donc ils écrivent leur mémoire ?
euh, non, ils ont encore plein de cours, tu vois ça sur le relevé de notes…
ils suivent tant de cours que ça ?
en fait, un cours, je ne sais pas trop combien ça fait d’heures, mais c’est souvent une vingtaine… il n’y a pas marqué le nombre d’heures dans le relevé de notes ? [ndlr à Montréal, un cours c’est 45 heures, et quand on suit des études graduées, c’est rare d’en suivre beaucoup]
non… d’ailleurs, pourquoi il a suivi autant de cours de physiques ? il veut être ingénieur ou faire de la finance ? s’il veut faire de la finance, pourquoi il n’a pas fait une formation en finance, avec quelques cours d’économie plutôt ?
euh… c’est compliqué  c’est le principe des école d’ingénieurs en France… souvent les élèves regardent le “classement” des écoles et pas ce qui y est enseigné… donc tu peux rentrer dans une école d’électronique avant de te rendre compte que tu aimes la finance computationnelle [ndlr suit souvent une longue discussion sur les écoles, ou la variétés d’écoles, ce qui embrouille tout le monde, car toutes les écoles ont des noms proches, et qui fait que personne n’y comprend rien]
ah ? [ndlr je vais simplifier le message d’incompréhension qui suit mon long monologue]  et 14.23 c’est bien comme moyenne ?
ça dépend,  ne veut pas dire grand chose… tiens, regarde le classement
il n’y a pas de classement…
pfffff qu’est-ce que j’en sais moi….
s’il est bon, pourquoi il ne reste pas faire son mémoire en France ? si j’ai un bon étudiant en maîtrise, je le garde au moins jusqu’à la fin de son mémoire [ndlr oui, quand tout se passe bien, à Montréal, quand un étudiant est inscrit en maîtrise, il suit son directeur pendant les deux ans, ce dernier en contrepartie le finance]
– non, c’est pas un mémoire qu’il cherche, il veut un “stage”, c’est obligatoire… normalement tu le fais en entreprise, mais tu peux aussi le faire dans un labo universitaire
en entreprise? mais il a fini ses cours?
– ben oui, je pense
– pourquoi il travaille pas alors? il pourrait chercher un emploi, ça serait mieux payé
– en fait je crois qu’un stage, c’est une période d’essai pas cher, avant une embauche…. c’est un peu une arnaque, mais ça marche comme ça en France.
– c’est louche ton histoire. S’il veut travailler en entreprise ensuite, autant qu’il cherche un stage en entreprise, et s’il veut le faire dans un labo, c’est qu’il veut faire un doctorat par la suite ?
euh… effectivement, je sais pas trop….
bon, tu nous embrouilles avec tes français, on comprend rien, on va relire les CV reçus d’étudiants de Téhéran, au moins ils sont plus clairs !

Je pense que tous mes collègues qui sont passé par le système français, et qui sont maintenant à l’étranger (disons en dehors de l’Europe) ont tous vécu des histoires similaires. Les étudiants français sont souvent bons, mais ils sont incroyablement mauvais pour se vendre ! Je ne peux que conseiller aux étudiants de tenter de postuler pour faire des césures, des stages, des semestres à l’étranger ! Mais il fait comprendre que personne ne comprend rien à vos CV ! On reçoit des applications de toutes les régions du monde, et les CV de Français sont les plus durs à comprendre, car aucun effort n’est fait pour qu’un étranger le comprenne. Je ne dis pas que c’est simple. Sur http://fr.wikipedia.org/, il y a un schéma censé comparer le système d’éducation supérieur au Québec et en France (ou disons une version simplifiée de la France), qui éclaire un peu, mais il faudrait aller un peu plus loin. Peut-être faudrait-il traîner un peu en ligne pour voir des CV d’étudiants de maîtrise, voir des formats que l’on a l’habitude de recevoir. Les commentaires sont ouverts si quelqu’un a des suggestions… mais personnellement, j’en ai marre de faire le boulot et de ré-expliquer le fonctionnement d’un système que j’ai de plus en plus de mal à comprendre…

[ndlr to be continued….]

 

[mardi 26 novembre] Grâce à Emmanuel Davidenkoff, il est possible d’entendre ce billet ! on n’arrête pas le progrès ! (merci à Mathieu et @FrenchRedFrog qui me l’ont appris ce matin)