Machine Learning

[부캠AI] AI Math - 행렬이 뭐예요?

욜스터 2022. 5. 12. 03:14
728x90

AI Math 2강: 행렬이 뭐예요?

행렬의 개념과 연산, 벡터공간에서 가지는 의미, 연립방정식 풀기와 선형회귀분석에 응용 방법

 

📌 행렬이란?

벡터를 원소로 가지는 2차원 배열

 

 

특징

  • 행(row)과 열(column)이라는 인덱스(index)를 가진다.
  • 행렬은 대문자 X, 벡터는 소문자 x로 표현한다.
벡터가 공간에서 한 점을 의미한다면 행렬여러 점들을 나타낸다.

 

 

행렬의 $x_{ij}$는 $i$번째 데이터의 $j$번째 변수의 값을 말한다.

  • 행렬끼리 같은 모양을 가지면 덧셈, 뺄셈을 계산할 수 있다.
  • 성분곱과 스칼라곱도 벡터와 차이가 없다.

 

행렬의 곱셈(matrix multiplication)

$i$번째 행벡터와 $j$번째 열벡터 사이의 내적을 성분으로 가지는 행렬 계산

 

 

 

 

$X$의 열의 개수와 $Y$의 행의 개수가 같아야 한다.

 

❓행렬도 내적이 있을까?
numpy의 np.innner는 i번째 행벡터와 j번째 행벡터 사이의 내적으로,
수학에서 말하는 내적과는 다르다!

 

 

 

파이썬 코드

X = np.array([])
Y = np.array([])

# numpy에서 @ 연산을 사용한다
X @ Y

# 내적
np.inner(X,Y)

 

📌 행렬을 이해하기

벡터공간에서 사용되는 연산자(operator)로 이해

 

 

행렬곱을 통해 벡터를 다른 차원의 공간으로 보낼 수 있다 → 패턴 추출, 데이터 압축 가능!

 

역행렬

어떤 행렬의 연산을 거꾸로 되돌리는 행렬
  • 계산 조건
    1. 행과 열 숫자가 같다.
    2. 행렬식이 0이 아니다.

 

파이썬 코드

X = np.array([])

np.linalg.inv(X)

# 항등행렬이 나오는데 0은 아니지만 가까운 숫자로 나온다
X @ np.linalg.inv(X)

 

❓ 역행렬을 계산할 수 없다면?

유사역생렬(pseudo-inverse) 또는 무어-펜로즈(Moore-Penrose)역행렬을 이용!

 

행의 개수(n)가 많을 경우와 열의 개수(m)가 많을 경우 다르게 계산

 

 

※ $A^TA$는 역행렬이 계산이 되는 행렬!

Y = np.array([])

np.linalg.pinv(Y)

 

응용1: 연립방정식 풀기

 

응용2: 선형회귀분석

데이터를 선형모델(linear model)로 해석하는 선형회귀식을 찾을 수 있다

 

 

선형회귀분석은 연립방정식과 달리 행이 더 크므로 방정식으로 푸는건 불가능

 

$y$에 근접한 $\hat{y}$를 찾는다!

L2-노름을 최소화! → $min\vert\vert y-\hat{y} \vert\vert2$

  • sklearn의 LinearRegression을 사용
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X,y)
y_test = model.predict(x_test)

moore-penrose을 사용하려면 y절편항을 더해줘야된다.

 

728x90
반응형

'Machine Learning' 카테고리의 다른 글

[부캠AI] AI Math - 경사하강법- 순한맛  (0) 2022.05.12
[부캠AI] AI Math - 백터가 뭐예요?  (0) 2021.08.09
[인공지능] 개념!  (0) 2021.06.14