본문 바로가기

머신러닝

[파이썬] 행렬의 내적과 연산

728x90

1. 전치 행렬

 
전치 행렬이란 행과 열을 교환여 얻는 행렬을 말합니다.
예를 들어 3행 2열의 행렬이 있다면 이 행렬의 전치 행렬은
2행 3열의 행렬이 됩니다.
 
$$X=\left( x_{nk}\right) \rightarrow \left( x_{kn}\right)$$
 
예를 들어 A = [[1,2],[3,4],[5,6]] 이란 행렬이 있다면 A의 전치 행렬은 다음과 같습니다.
 
$$A=\begin{pmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{pmatrix}\rightarrow A^{T}=\begin{pmatrix} 1 & 3 & 5 \\ 2 & 4 & 6 \end{pmatrix}$$
 

2. 행렬의 내적

 
행렬의 내적은 수학에는 없는 개념입니다.
 
주로 파이썬에서 사용하는 개념이며 numpy의 np.inner를 사용해
i번째 행벡터와 j번째 행벡터 사이의 내적을 성분으로 가지는 행렬을 계산합니다.
이때 두 행렬이 행이 같아야 계산할 수 있습니다.
 
예시입니다.
 
$$\begin{aligned}\langle \begin{bmatrix} 1 & 2 & 3 \\ 2 & 4 & 3 \end{bmatrix}\begin{bmatrix} 3 & 2 & 1 \\ 1 & 2 & 2 \end{bmatrix}\rangle =\begin{bmatrix} 1\times 3+2\times 2+3\times 1 & 1\times 1+2\times 2+3\times 2 \\ 2\times 3+4\times 2+3\times 1 & 2\times 1+4\times 2+3\times 2 \end{bmatrix}\end{aligned}$$
 
여기서 행렬의 내적 결과의 1행 1열은 각 행렬의 1행끼리의 곱이고
1행 2열은 1행과 2행, 2행 1열은 2행과 1행, 2행2열은 2행과 2행을 곱한 것입니다.
 
행렬의 내적을 파이썬으로 구현 시 다음과 같습니다.
 

import numpy as np

a = np.array([[1,2,3],
              [2,4,3]])
b = np.array([[3,2,1],
              [1,2,2]])

np.inner(a,b)

 
단순히 np.inner를 써주면 행렬의 내적이 계산됩니다.
 

728x90

3. 연산자로서의 행렬

 
행렬은 벡터공간에서 사용할 수 있는 연산자로 이해 할 수 있습니다.
행렬 끼리의 곱을 활용해 벡터를 다른 차원으로 이동 가능하며, 
 
예를 들어 4행 3열의 행렬과 3행 2열의 행렬을 곱하면
4행 2열의 행렬로 계산됩니다.
 
행렬의 곱은 패턴 추출이나 데이터 압축에 사용이 가능합니다.
만약 [[1],[2],[3]]이라는 행렬에서 1과 2만을 추출하고 싶다면
 
$$\begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix}X\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{bmatrix}=\begin{bmatrix} 1 \\ 2 \\ 0 \end{bmatrix}$$
 
위와 같은 방식으로 추출이 가능합니다.
 
 

728x90
반응형