À chaque inversion de matrice, donnez suffisamment d'étapes pour prouver que vous avez effectué le calcul sans assistance.
On considère la matrice $A_n = \begin{pmatrix} 1 & 1 & ... & 1\\ 0 & 1 & ... & 1\\ 0 & 0 & ... & 1 \end{pmatrix}$ dont tous les termes sous-diagonaux sont nuls, tous les autres valant 1.
Par exemple, $A_3 = \begin{pmatrix} 1 & 1 & 1\\ 0 & 1 & 1\\ 0 & 0 & 1 \end{pmatrix}$ et $A_4 = \begin{pmatrix} 1 & 1 & 1 & 1\\ 0 & 1 & 1 & 1\\ 0 & 0 & 1 & 1\\0 & 0 & 0 & 1 \end{pmatrix}$
Un joueur d'échecs occasionnel installe sur son téléphone un programme pour jouer dans les transports. Ce programme dispose de 4 niveaux (numérotés de 1 à 4). On suppose que si le niveau réel du joueur est $n \in [1, 4]$, la probabilité qu'il gagne contre le niveau $m$ vaut $\frac{n}{n + m}$. On s'intéresse au nombre de parties jouées en moyenne avant d'atteindre le niveau 4, sachant que le joueur passe au niveau supérieur quand il gagne et revient au précédent quand il perd (pas de parties nulles).
Rappel : ce temps moyen s'écrit $t = N c$ où $N = (I - Q)^{-1}$ avec $Q$ la matrice des états transients, et $c$ vecteur colonne ne contenant que des $1$.
Rappel : une chaîne est homogène si les probabilités de transition ne dépendent pas du temps.
Un joggeur décide chaque midi s'il va courir en fonction de quatre critères : la météo, la température, la vitesse du vent et son retard au boulot.
Construire un arbre de décision binaire selon la méthode vue en cours en utilisant l'indice de Gini :
$I_G = 1 - \sum_{k=1}^{K} p_k^2$, avec $p_k$ proportion de la classe $k$ dans les données du noeud courant.
Détaillez les étapes [calculatrice], et dessinez l'arbre. (7 points)
Température | Vitesse (du vent) | Météo | Retard (au boulot) | Courir ? |
---|---|---|---|---|
15.2 | 10 | soleil | non | oui |
12.0 | 15 | nuages | non | oui |
10.0 | 10 | pluie | oui | non |
5.5 | 35 | nuages | non | non |
30.0 | 15 | soleil | oui | non |
7.0 | 25 | pluie | non | non |
18.0 | 12 | pluie | non | oui |
18.0 | 13 | nuages | oui | oui |
20.5 | 30 | soleil | non | oui |
20.0 | 20 | pluie | oui | non |
(#BonSensRequired) Vous paraît-il judicieux d'élaguer cet arbre ? Pourquoi ? (1 point).
Dans cet exercice on utilise un jeu de données indiquant la qualité de divers vins (blancs) en fonction de leurs caractéristiques physico-chimiques. La qualité (dernière colonne) est une note de 0 à 10. Autres variables :
Les variables 6, 7 et 10 correspondent à des additifs (conservateurs), a priori sans bonnes propriétés gustatives.
library(FactoMineR); library(factoextra); library(gridExtra); library(corrplot)
options(repr.plot.width=15, repr.plot.height=9)
data <- read.csv("~/winequality-white.csv", sep=";"); head(data); dim(data)
fixed.acidity | volatile.acidity | citric.acid | residual.sugar | chlorides | free.sulfur.dioxide | total.sulfur.dioxide | density | pH | sulphates | alcohol | quality | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
<dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <int> | |
1 | 7.0 | 0.27 | 0.36 | 20.7 | 0.045 | 45 | 170 | 1.0010 | 3.00 | 0.45 | 8.8 | 6 |
2 | 6.3 | 0.30 | 0.34 | 1.6 | 0.049 | 14 | 132 | 0.9940 | 3.30 | 0.49 | 9.5 | 6 |
3 | 8.1 | 0.28 | 0.40 | 6.9 | 0.050 | 30 | 97 | 0.9951 | 3.26 | 0.44 | 10.1 | 6 |
4 | 7.2 | 0.23 | 0.32 | 8.5 | 0.058 | 47 | 186 | 0.9956 | 3.19 | 0.40 | 9.9 | 6 |
5 | 7.2 | 0.23 | 0.32 | 8.5 | 0.058 | 47 | 186 | 0.9956 | 3.19 | 0.40 | 9.9 | 6 |
6 | 8.1 | 0.28 | 0.40 | 6.9 | 0.050 | 30 | 97 | 0.9951 | 3.26 | 0.44 | 10.1 | 6 |
1] Décrivez ce que fait la ligne de code ci-dessous. (1 points)
res.pca <- PCA(data, quanti.sup=12, ncp=6, graph=FALSE)
2] Qu'est-ce qui est affiché par le code ci-dessous ?
Combien d'axes doit-on garder (au minimum) pour conserver 80% d'inertie ? (1.5 points)
res.pca$eig
eigenvalue | percentage of variance | cumulative percentage of variance | |
---|---|---|---|
comp 1 | 3.22225389 | 29.293217 | 29.29322 |
comp 2 | 1.57523993 | 14.320363 | 43.61358 |
comp 3 | 1.22167134 | 11.106103 | 54.71968 |
comp 4 | 1.01852235 | 9.259294 | 63.97898 |
comp 5 | 0.97333458 | 8.848496 | 72.82747 |
comp 6 | 0.93874151 | 8.534014 | 81.36149 |
comp 7 | 0.72659802 | 6.605437 | 87.96692 |
comp 8 | 0.59935848 | 5.448713 | 93.41564 |
comp 9 | 0.41414367 | 3.764942 | 97.18058 |
comp 10 | 0.28948714 | 2.631701 | 99.81228 |
comp 11 | 0.02064909 | 0.187719 | 100.00000 |
3] Commentez le résultat du code ci-dessous. (2 points)
grid.arrange(
plot(res.pca, choix="ind", invisible="quali", select="cos2 500", unselect=1, cex.axis=1.5),
plot(res.pca, choix="ind", invisible="quali", cex.axis=1.5), ncol=2)
s <- sort(rowSums(res.pca$ind$cos2[,1:2]), decreasing=TRUE)
plot(s, cex.axis=1.5, cex.lab=1.5, xlab="Individus classés par cos2 décroissant", ylab="cos2")
4] Commentez les graphes ci-dessous. (3.5 points)
grid.arrange(
plot(res.pca, choix="var", axes=c(1,2), cex.axis=1.5, cex=1.2),
plot(res.pca, choix="var", axes=c(3,4), cex.axis=1.5, cex=1.2), ncol=2)
corrplot(cor(data), tl.cex=1.2)
On reprend le jeu de données de l'exercice précédent, en se focalisant sur les variables "quality" et "free.sulfur.dioxide".
quality \ free.sulfur.dioxide | high | low | medium |
---|---|---|---|
average | 695.5 | 1471.5 | 1488 |
excellent | 34.2 | 72.5 | 73.3 |
good | 167.5 | 354.3 | 358.2 |
poor | 34.8 | 73.7 | 74.5 |
q <- data[["quality"]]
q[q == 3 | q == 4] = "poor" ; q[q == 5 | q == 6 ] = "average"
q[q == 7] = "good" ; q[q == 8 | q == 9] = "excellent"
f <- data[["free.sulfur.dioxide"]]
ind1 <- f < 30 ; ind2 <- (f >= 30 & f < 50) ; ind3 <- f >= 50
f[ind1] = "low" ; f[ind2] = "medium" ; f[ind3] = "high"
df <- data.frame("quality"=q, "free.sulfur.dioxide"=f)
t <- table(df); t
free.sulfur.dioxide quality high low medium average 789 1430 1436 excellent 27 60 93 good 94 353 433 poor 22 129 32
res.CA <- CA(t, graph=FALSE); plot(res.CA, cex.axis=1.5, cex=1.2)
res.CA$eig
eigenvalue | percentage of variance | cumulative percentage of variance | |
---|---|---|---|
dim 1 | 0.01639384 | 56.2013 | 56.2013 |
dim 2 | 0.01277602 | 43.7987 | 100.0000 |