Notes sur l'apprentissage automatique - Déterminant

I. Aperçu

        Une matrice peut être considérée comme une transformation linéaire de l'espace. Le déterminant de la matrice A est un nombre correspondant au changement multiplicatif obtenu lors de la transformation de l'espace à l'aide de cette matrice. Un déterminant négatif signifie que l'orientation a changé (plutôt qu'un simple redimensionnement et/ou une rotation). Un changement d'orientation signifie, par exemple, dans un plan 2D, une mise en miroir.

        Voici un exemple qui différencie les déterminants positifs et négatifs :

Le déterminant d'une matrice décrit les informations sur la transformation associée à la matrice

        On voit que la transformation correspondant au déterminant négatif ne peut pas être obtenue par rotation et mise à l'échelle.

        En outre, le déterminant vous donne la quantité de transformation. Si vous prenez un cube unitaire à n dimensions et que vous lui appliquez la matrice A, la valeur absolue du déterminant correspond à l'aire du graphe transformé.

Deux, exemple 1

        Pour calculer l'aire d'une forme, on va utiliser un simple carré en deux dimensions. La surface carrée unitaire peut être calculée en prenant deux vecteurs unitaires à l'aide du théorème de Pythagore.

         Les longueurs de i et j sont 1, donc l'aire du carré unité est 1.

        Commençons par créer une fonction plotVectors() pour tracer les vecteurs :

def plotVectors(vecs, cols, alpha=1):
    plt.figure()
    plt.axvline(x=0, color='#A9A9A9', zorder=0)
    plt.axhline(y=0, color='#A9A9A9', zorder=0)

    for i in range(len(vecs)):
        x = np.concatenate([[0,0],vecs[i]])
        plt.quiver([x[0]],
                   [x[1]],
                   [x[2]],
                   [x[3]],
                   angles='xy', scale_units='xy', scale=1, color=cols[i],
                   alpha=alpha)

        Commençons par créer un vecteur en Python :

orange = '#FF9A13'
blue = '#1190FF'

i = [0, 1]
j = [1, 0]

plotVectors([i, j], [[blue], [orange]])
plt.xlim(-0.5, 3)
plt.ylim(-0.5, 3)
plt.show()

         On applique à i et j. Il s'agit d'une matrice diagonale. Il va donc redimensionner notre espace, mais pas le faire pivoter. Plus précisément, il redimensionnera chaque dimension de la même manière, puisque les valeurs diagonales sont les mêmes. Créons la matrice A :

A = np.array([[2, 0], [0, 2]])

new_i = A.dot(i)
new_j = A.dot(j)
plotVectors([new_i, new_j], [['#1190FF'], ['#FF9A13']])
plt.xlim(-0.5, 3)
plt.ylim(-0.5, 3)
plt.show()

         Comme prévu, nous pouvons voir que les carrés correspondant à i et j ne sont pas tournés, mais les longueurs de i et j sont doublées.

         Nous allons maintenant calculer le déterminant de A (les détails sur le calcul du déterminant ne sont pas couverts ici) :

np.linalg.det(A)
#结果为4

        Comme vous pouvez le voir, la transformation multiplie l'aire du carré unitaire par 4. Le nouveau i et le nouveau j ont une longueur de 2 (donc 2⋅2=4).

Trois, exemple 2

        Examinons maintenant un exemple de déterminant négatif.

        Nous allons transformer le carré unité par une matrice : , dont le déterminant est -4 :

B = np.array([[-2, 0], [0, 2]])
np.linalg.det(B)
#结果为-4

         dessiner

new_i_1 = B.dot(i)
new_j_1 = B.dot(j)
plotVectors([new_i_1, new_j_1], [['#1190FF'], ['#FF9A13']])
plt.xlim(-3, 0.5)
plt.ylim(-0.5, 3)
plt.show()

         Nous pouvons voir que les matrices avec des déterminants de 2 et -2 modifient l'aire du carré unité de la même manière.

         La valeur absolue du déterminant montre que, comme dans le premier exemple, l'aire du nouveau carré est 4 fois l'aire du carré unité. Mais cette fois, ce n'est pas seulement un changement de taille, c'est une transformation en miroir.

        Il n'est pas évident d'utiliser uniquement des vecteurs unitaires, alors utilisons des points aléatoires.         

        nous utiliserons la matrice

points = np.array([[1, 3], [2, 2], [3, 1], [4, 7], [5, 4]])

C = np.array([[-1, 0], [0, 1]])
np.linalg.det(C)

         Puisque le déterminant est -1, l'aire de l'espace ne change pas. Cependant, comme elle est négative, on obtient une transformation qui ne peut pas être obtenue par rotation :

newPoints = points.dot(C)

plt.figure()
plt.plot(points[:, 0], points[:, 1])
plt.plot(newPoints[:, 0], newPoints[:, 1])
plt.show()
inversé l'image

         Nous avons vu que le déterminant d'une matrice est une valeur particulière qui exprime des propriétés sur la transformation correspondant à cette matrice.

Je suppose que tu aimes

Origine blog.csdn.net/bashendixie5/article/details/124302324
conseillé
Classement