1. 역행렬
행렬을 곱했을 때 곱셈에 대한 항등원인 단위행렬이 나오게 하는 행렬을
역행렬이라고 합니다.
역행렬은 행과 열의 숫자가 동일하고 행렬식이 0이 아닌 경우에만 계산 가능합니다.
항등행렬은 곱했을 때 자기 자신이 나오게 하는 행렬을 말합니다.
역행렬을 계산하는 식 입니다.
$$\begin{bmatrix} a & b \\ c & d \end{bmatrix}^{-1}=\dfrac{1}{ad-bc}\begin{bmatrix} d & -b \\ -c & a \end{bmatrix}$$
여기서 ad - bc를 행렬식이라 부릅니다.
파이썬으로는 다음과 같이 구현할 수 있습니다.
import numpy as np
A = np.array([[1,2],
[3,4]])
np.linalg.inv(A)
np.linalg.inv는 행렬의 역행렬, 즉 인버스 행렬을 구하는 numpy 함수입니다.
원래 행렬과 역행렬을 곱하면 항등 행렬이 나오게 됩니다.
예를들어 위 코드와 같은 행렬과 구한 역행렬을 곱할 시
[[1, 0],[0,1]] 과 같은 항등 행렬이 나옵니다.
A @ np.linalg.inv(A)
사진과 같은 결과가 나오게 되는데 이는 지수 표현식으로써 1이나 0에 가장 유사한 값을 표현한 것 입니다.
2. 유사 역행렬
만약 역행렬 계산할 수 없다면, 유사역행렬 또는 무어-펜로즈 역행렬을 이용합니다.
유사 역행렬을 구할때는 많은 경우가 있습니다.
이번 포스팅에선 열보다 행이 크거나 같은 경우를 알아보겠습니다.
유사 역행렬을 구하는 식입니다.
$$\begin{aligned}\begin{bmatrix} 1 & 2 \\ 2 & 3 \\ 4 & 5 \end{bmatrix}^{-1}=\left( \begin{bmatrix} 1 & 2 & 4 \\ 2 & 3 & 5 \end{bmatrix}\begin{bmatrix} 1 & 2 \\ 2 & 3 \\ 4 & 5 \end{bmatrix}\right) ^{-1}\begin{bmatrix} 1 & 2 & 4 \\ 2 & 3 & 5 \end{bmatrix}\end{aligned}$$
전치 행렬과 행렬의 곱을 다시 역행렬을 취한 후 다시한번 전치 행렬을 곱해줍니다.
이를 파이썬으로 구현하면 다음과 같습니다.
import numpy as np
Y = np.array([[0,1],
[1,-1],
[2, 1]])
np.linalg.pinv(Y)
np.linalg.pinv는 유사역행렬을 구하는 numpy 함수입니다.
유사역행렬과 행렬을 곱하면 항등 행렬이 나옵니다.
np.linalg.pinv(Y) @ Y
마찬가지로 지수 표현식입니다.
1과 0의 근사치를 보여줍니다.
즉, [[1,0],[0,1]]의 항등 행렬이 됩니다.
'머신러닝' 카테고리의 다른 글
[인공지능 수학] 미분의 정의 (0) | 2023.05.10 |
---|---|
[파이썬] 의사결정 트리( DecisionTree ) (0) | 2023.05.03 |
[파이썬] 행렬의 내적과 연산 (0) | 2023.04.19 |
[파이썬] 행렬의 연산 (0) | 2023.04.12 |
[파이썬] 행렬과 행렬의 이미지 표현 (0) | 2023.04.11 |