Notations générales
Définitions
1. Vecteur
On note un vecteur à entrées, où est la entrée :
=
2. Matrice
On note une matrice à lignes et colonnes, où est l’entrée située à la ligne et colonne :
Remarque: le vecteur défini ci-dessus peut être vu comme une matrice de taille , aussi appelé vecteur colonne.
3. Matrices particulières
3.1 Matrice identité
La matrice est une matrice carrée n lignes et n colonnes. Tous les éléments de sa diagonale sont égaux à 1 et tous les autres éléments sont égaux à 0.
Remarquons pour toute matrice , on a = = . On peut le consider comme l’élément neutre de la multiplication.
3.2 Matrice diagonale
Une matrice diagonale est une matrice carrée dont les coefficients en dehors de la diagonale principale sont nuls.
3.3 Opérations matricielles
3.3.1 Multiplication
Multiplication vecteur vecteur
On distingue des types de multiplication vecteur-vecteur:
-
Produit scalaire: Le produit scalaire est différent de la multilication d’un vecteur par un scalaire puisque:
-le produit scalire de deux vecteurs est un nombre réel; les deux opérandes d’un produit scalaire sont des vecteurs;
-
les opérandes de la multiplication d’un vecteur par un scalaire sont un vecteur et un nombre réel; le résultat de la multiplication d’un vecteur par un scalaire est un vecteur.
-
L’expression « multiplication vectorielle », qui devrait référer à une opération interne dans l’ensemble des vecteurs et qui aurait pour résultat un vecteur, est inappropriée, car le produit scalaire de deux vecteurs est un nombre réel et non un vecteur, alors que la multiplication d’un vecteur par un scalaire est une opération externe.
-
Pour , on a :
- Produit dyadique : Le produit dyadique de deux vecteurs, dont chacun ayant la même dimension, est le produit tensoriel de ces vecteurs, lequel est un tenseur d’ordre deux et de rang un. Ce produit est souvent utilisé en mécanique des milieux continus Pour on a :
Matrice- vecteur
Le produit de la matrice et du vecteur est un vecteur de taille de , tel que:
où les sont les vecteurs-ligne et sont les vecteurs-colonne de sont les entrées de x.
Matrice-Matrice.
Le produit des matrices est une matrice de taille tel que :
Exemples:
Produit matriciel Sur python:
# On définit la fonction permettant de calculer le produit de deux matrices.
def produit(A, B):
return [[sum(L[k] * B[k][j] for k in range(len(L))) for j in range(len(B[0]))] for L in A]
# On définit les deux matrices A et B
A = [[1, 7], [2,4]]
B = [[3, 3], [5, 2]]
produit(A, B)
[[38, 17], [26, 14]]
produit(B, A)
[[9, 33], [9, 43]]
3.4 Autres opérations
Transposé
La transposée d’une matrice est notée et est dans tel que:
.
Remarque : pour des matrices on a .
Inverse:
L’inverse d’une matrice carrée inversible est notée et est l’unique matrice telle que:
.
Exemple
la matrice de départ
et la matrice transposée
import numpy as np
# On définit la matrice A
A = np.array([[1,2,3],[4,5,6],[7,8,9]])
# On affiche la matrice A
print(A)
# La transposer de la matrice de A
tranposer (A) = A.T
#Avec la fonction transpose de numpy
np.transpose(A)
Trace
La trace d’une matrice carrée , notée , est la somme de ses entrées diagonales:
.
Remarque: pour toutes matrices on a et .
4. Analyse matricielle
4.1 Gradient
Soit une fonction définie dans . Le gradient de à la matrice est une matrice de taille , notée tel que:
Remarque: Le gradient de f est seulement définit lorsque f est une fonction donnant un scalaire.
4.2 Hessienne
Soit une fonction définie dans et un vecteur. La hessienne de de par rapport à est une matrice de taille , notée , telle que:
Remarque La hessienne de f est seulement définie lorsque f est une fonction qui donne un scalaire.
PSW
4.3 Application: Gradient Descent in Python (la descente du grndient)
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use(['ggplot'])
Création de données
Soient
X = 2 * np.random.rand(100,1)
y = 4 +3 * X+np.random.randn(100,1)
Affichage des données
plt.plot(X,y,'b.')
plt.xlabel("$x$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
_ =plt.axis([0,2,0,15])
Faisons une première approche de regression linéaire
X_b = np.c_[np.ones((100,1)),X]
theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
print(theta_best)
[[3.8635763 ] [3.08973657]]
X_new = np.array([[0],[2]])
X_new_b = np.c_[np.ones((2,1)),X_new]
y_predict = X_new_b.dot(theta_best)
y_predict
array([[ 3.8635763 ], [10.04304945]])
affichage de la droite de regression
plt.plot(X_new,y_predict,'r-')
plt.plot(X,y,'b.')
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.axis([0,2,0,15])
Gardient Descent
Dans un nouveau poste ! On verra comment implémenter l’équation du gradient et de la fonction coût sur python.
coming soon
Sources: From my friend at Stanford Shervine Amidi thanks for this !