Qu’est-ce qu’un vecteur propre ?
Un vecteur propre est une direction qu’une matrice étire sans la tourner, et le facteur d’étirement est sa valeur propre. Vous saurez reconnaître un vecteur propre, en approcher un par itération et dire pourquoi l’apprentissage automatique s’en sert.
Un service de photos garde mille mesures par image, ce qui est lourd. Il cherche les quelques directions qui portent l’essentiel.
À la fin de cette leçon
Remarque
Je peux dire ce qu’est un vecteur propre et pourquoi l’apprentissage automatique s’en sert.
Mots clés
| Mot | Ce que ça veut dire |
|---|---|
| Vecteur propre | un vecteur que la matrice étire sans changer sa direction |
| Valeur propre | le facteur par lequel le vecteur propre est étiré |
| Itération de la puissance | multiplier un vecteur par la matrice, encore et encore |
| Direction dominante | celle de la plus grande valeur propre |
| Réduction de dimension | garder moins de nombres par exemple |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un vecteur propre garde sa direction
Prenons la matrice A = [[2, 1], [1, 2]]. Multipliée par le vecteur (1, 1), elle donne (3, 3), soit 3 fois (1, 1) : la direction est la même, la longueur est triplée.
Le vecteur (1, 1) est donc un vecteur propre de A, et 3 est sa valeur propre. Avec (1, −1), A donne (1, −1) : un autre vecteur propre, de valeur propre 1.
Exemple travaillé : trois vecteurs et la matrice A
| Vecteur | A fois le vecteur | Même direction ? |
|---|---|---|
| (1, 1) | (3, 3) | oui, valeur propre 3 |
| (1, −1) | (1, −1) | oui, valeur propre 1 |
| (1, 0) | (2, 1) | non, il a tourné |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Deux produits de A avec NumPy
docker exec jupyter python3 -c "import numpy as np; A = np.array([[2, 1], [1, 2]]); print(A @ np.array([1, 1]), A @ np.array([1, -1]))"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Les valeurs propres de A avec NumPy
docker exec jupyter python3 -c "import numpy as np; print(np.linalg.eigvalsh(np.array([[2, 1], [1, 2]])))"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Multiplier encore et encore révèle la direction dominante
Partons de (1, 0) et multiplions-le par A à plusieurs reprises. Le vecteur grandit, mais surtout il se rapproche de la direction (1, 1).
C’est l’itération de la puissance : la plus grande valeur propre l’emporte à chaque tour. Pour garder des nombres petits, on divise par la longueur après chaque produit.
Exemple travaillé : les premiers produits
| Tour | Vecteur | Rapport de la seconde à la première composante |
|---|---|---|
| 0 | (1, 0) | 0 |
| 1 | (2, 1) | 0,5 |
| 2 | (5, 4) | 0,8 |
| 3 | (14, 13) | 0,93 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
L’itération de la puissance en Python
# Matrice de départ et vecteur de départ.
a = [[2, 1], [1, 2]]
v = [1, 0]
for etape in range(10):
w = [a[0][0] * v[0] + a[0][1] * v[1], a[1][0] * v[0] + a[1][1] * v[1]]
longueur = (w[0] ** 2 + w[1] ** 2) ** 0.5
# On divise par la longueur pour que les nombres restent petits.
v = [w[0] / longueur, w[1] / longueur]
print("direction :", round(v[0], 3), round(v[1], 3))
# Remplacez 10 par 1, puis relancez.
# La direction est-elle déjà la même qu’avec 10 ?
A puissance 10 fois (1, 0) avec NumPy
docker exec jupyter python3 -c "import numpy as np; A = np.array([[2, 1], [1, 2]]); print(np.linalg.matrix_power(A, 10) @ np.array([1, 0]))"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une erreur fréquente
Attention
Beaucoup pensent qu’une matrice tourne tous les vecteurs. Elle change presque tous les vecteurs de direction. Seuls les vecteurs propres restent sur leur droite : ils sont étirés ou retournés, jamais tournés.
L’apprentissage automatique garde les directions utiles
Des mesures nombreuses se ressemblent souvent. On construit une matrice qui dit comment les mesures varient ensemble. Son vecteur propre de plus grande valeur propre est la direction où les données s’étalent le plus.
On garde cette direction et quelques autres, et on laisse le reste. C’est la réduction de dimension : moins de nombres par exemple, presque la même information.
Exemple travaillé : de mille nombres à deux
| Étape | Ce que fait l’ordinateur |
|---|---|
| 1 | Il mesure comment les mille valeurs varient ensemble |
| 2 | Il cherche les vecteurs propres de cette matrice |
| 3 | Il garde les deux de plus grandes valeurs propres |
| 4 | Chaque image est résumée par deux nombres |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Pour aller plus loin
Dans un carnet, appelez np.linalg.eig sur la matrice de votre choix. Il rend les valeurs propres et, en colonnes, les vecteurs propres.
Vérifiez qu’une colonne multipliée par la matrice donne la même colonne fois sa valeur propre.