Matrix¶
행렬(matrix)¶
- 행렬(matrix)은 벡터를 원소로 가지는 2차원 배열이다.
In [1]:
import numpy as np
X= np.array([[1,-2,3],[7,-5,0],[-2,-1,2]])
X
Out[1]:
- 행렬은 행(row)과 열(column)이라는 인덱스(index)를 가진다.
- 행렬의 특정 행(열)을 고정하면 행(열)벡터라 부른다.
전치행렬¶
행렬 이해하기 #1¶
- 행렬의 행벡터 Xi는 i번쨰 데이터를 의미한다.
- 행렬의 xij는 i번째 데이터의 j번째 변수의 값을 말한다.
행렬 곱셈¶
- 행렬 곱셈(matrix multiplication)은 i번째 행벡터와 j번째 열벡터 사이의 내적을 성분으로 가지는 행렬을 계산한다.
- 행렬곱은 X의 열의 개수와 Y의 행의 개수가 같아야 한다.
코드로 확인해 보기¶
In [2]:
X= np.array([[1,-2,3],
[7,-5,0],
[-2,-1,2]])
Y=np.array([[0,1],
[1,-1],
[-2,1]])
In [3]:
X@Y
Out[3]:
numpy
에서는@
연산이 행렬의 곱셈이다.
행렬의 내적¶
- 넘파이의
np.inner
는 i번째 행벡터와 j번째 행벡터 사이의 내적을 성분으로 가지는 행렬을 계산한다. - 수학에서는 보통 tr(XYT)
코드에서 확인해 보기¶
In [4]:
X= np.array([[1,-2,3],
[7,-5,0],
[-2,-1,2]])
Y=np.array([[0,1,-1],
[1,-1,0]])
In [5]:
np.inner(X,Y)
Out[5]:
- X의 열의 개수와 Y의 열의 개수가 같아야 한다.
행렬 이해하기 #2¶
- 행렬은 벡터공간에서 사용되는 연산자(operator)로 이해한다
- 행렬곱을 통해 벡터를 다른 차원의 공간으로 보낼 수 있다.
- 행렬곱을 통해 패턴을 추출할 수 있고 데이터를 압축할 수도 있다.
역행렬¶
- 어떤 행렬 A의 연산을 거꾸로 되돌리는 행렬을 역행렬(inverse matrix)이라 부르고 A-1라 표기한다.
- 역행렬은 행과 열 숫자가 같고 행렬식(determinant)이 0이 아닌 경우에만 계산할 수 있다.
- 역행렬 연산은 n=m 일때만 가능하고 행렬A의 행렬식이 0이 되면 안된다.
코드로 확인해 보기¶
In [6]:
X= np.array([[1,-2,3],
[7,-5,0],
[-2,-1,2]])
In [7]:
np.linalg.inv(X)
Out[7]:
- 역행렬 구하기
In [8]:
X @ np.linalg.inv(X)
Out[8]:
- 결과는 항등행렬이어야 하지만 0인 부분은 완전히 0값이 나오지 않고 0에 근접한 값이 나오게 된다.
코드로 확인해 보기¶
In [9]:
Y=np.array([[0,1],
[1,-1],
[2,1]])
In [10]:
np.linalg.pinv(Y)
Out[10]:
- 유사 역행렬
In [11]:
np.linalg.pinv(Y) @Y
Out[11]:
- 항등 행렬
In [12]:
X=np.array([[1,0,1],
[0,1,0]])
In [13]:
np.linalg.pinv(X)
Out[13]:
'AI > 이론' 카테고리의 다른 글
Pandas II (0) | 2021.01.27 |
---|---|
Pandas I (0) | 2021.01.27 |
경사하강법 II (0) | 2021.01.26 |
경사하강법 I (0) | 2021.01.26 |
벡터 (0) | 2021.01.25 |
Numpy part III (0) | 2021.01.25 |
Numpy part II (0) | 2021.01.25 |
Numpy part I (0) | 2021.01.25 |