본문 바로가기
통계학 | 수학/Math for ML

[행렬] 행렬 연산 , 행렬의 곱 , 행렬의 의미 , 역행렬 , 유사역행렬 ( 무어-펜로즈 )

by 채채씨 2021. 8. 9.
728x90
반응형

벡터에 대한 포스팅에 이어 행렬에 대해 다룰 예정이다.

  • 벡터는 숫자들을 원소로 가지는 1차원 배열이라면, 행렬은 벡터를 원소로 가지는 2차원 배열이다.
  • 벡터가 공간에서의 한 점이라면, 행렬은 여러개의 점을 나타낸다.
  • 오늘은 행렬의 연산, 행렬의 곱, 행렬의 의미, 역행렬, 유사역행렬에 대해 알아볼 것이다.

 

1. 행렬 연산


두 행렬의 size가 같으면 덧셈, 뺄셈, 성분곱이 가능하며 같은 위치에 있는 성분끼리 연산된다.

 


 

2. 행렬의 곱


행렬곱은 성분곱과 달리 벡터간 내적을 통해 연산하는 것을 말한다.


※ numpy의 np.inner은 i번째 행벡터와 j번째 행벡터의 내적을 계산하기 때문에 np.inner함수로 행렬곱을 연산하기 위해서는 아래와 같이 Y에 transpose를 취하여 구해야 한다. 참고로 numpy에서 행렬곱 연산자로 @를 사용한다.

 


 

  3. 행렬의 의미  

 


위의 행렬 A와 벡터 B의 곱셈을 보면 행렬의 두 가지 의미를 알 수 있다.

■ 행렬곱의 첫번째 의미

행렬을 벡터 공간에서 사용되는 연산자로 이해할 수 있다. 즉 어떤 벡터를 다른 벡터로 변환해주며 이를 선형변환(Linear Transform)이라 한다. 모든 선형변환은 행렬곱으로 계산이 가능하다.

※ 선형변환이란?
: 선형변환이란 다음 두 식을 만족할 때의 함수를 의미한다.

 

선형변환의 첫번째 조건
선형변환의 두번째 조건



■ 행렬곱의 두번째 의미

행렬곱을 통해 다른 차원의 공간으로 보낸다는 의미를 가진다.

행렬곱을 통한 다른 차원의 공간으로 이동


이처럼 m차원 공간에 있는 X데이터에 A행렬을 곱함으로써 n차원 공간으로 이동시킬 수 있다. 이를 통해 데이터를 압축하거나 데이터로부터 패턴을 추출할 수 있다.


 

  4. 역행렬(inverse matrix)  


역행렬(inverse matrix)란 어떤 행렬 A의 연산을 다시 되돌리는 행렬을 의미하며 수식은 아래와 같다. A와 A의 역행렬을 순서에 상관없이 곱하면 항등행렬 I가 된다.

 


중요한 것은 역행렬은 1) 행과 열의 수가 같고(n=m), 2) 행렬식(Determinant)이 0이 아닐 때만 계산 가능하다는 것이다. 원래 행렬은 넓이가 1인 정사각형을 넓이가 ad-bc인 평행사변형으로 변환하는 것이라면, 역행렬은 그것을 다시 한 변의 길이가 1인 정사각형으로 돌려주는 것이다. 이것이 역행렬식에 1/ad-bc가 들어가는 이유이다.

 

n=m 역행렬


역행렬은 numpy에 내장된 다음 함수를 이용하여 계산할 수 있다.

 

np.linalg.inv(x)

 


 

  5. 유사역행렬(pseudo-inverse) / 무어-펜로즈(Moor-Penrose)역행렬  

 

n≠m 유사역행렬


유사역행렬이란 행과 열이 달라도 행렬의 연산을 되돌릴 수 있는 행렬을 말한다. 무어-펜로즈라고도 하는 이 유사역행렬은 행과 열 사이의 대소관계에 따라 구하는 계산식이 달라진다. 행의 개수를 n, 열의 개수를 m이라 하면 다음과 같다. 여기서 가장 중요한 것은 순서이다.

■ n ≥ m

 

 

행의 개수가 더 큰 경우, 유사역행렬 A+는 원래 행렬의 왼쪽에 위치해야 하며, 이때 A+의 계산식은 아래와 같다.

 

 

[활용] n ≥ m일때, 무어-펜로즈 역행렬을 통해 회귀계수를 구할 수 있다. x축과 y축 위에있는 빨간 데이터들을 X행렬로 볼때, 변수보다 식이 더 많으므로 XB = y를 만족하는 X를 찾는 것은 불가능하다. 따라서 XB = y를 만족하는 선형회귀계수 B를 찾아서 XB(=yhat)가 y와 최대한 유사하도록 해야한다.

 

 

 

※ sklearn을 사용할 때와 linalg를 사용할 때 선형회귀식에 차이가 있다. 그 이유는 sklearn은 자동으로 y절편을 추정해주지만, linalg는 회귀계수만 추정하기 때문이다. 따라서 linalg를 사용할 때는 y절편을 직접 추가해야 한다. 

 


■ n ≤ m

 

열의 개수가 더 큰 경우, 유사역행렬 A+는 원래 행렬의 오른쪽에 위치해야 하며, 이때 A+의 계산식은 아래와 같다.

 

 

 

[활용] n (식의 개수) ≤ m (변수의 개수)일때, 무어-펜로즈 역행렬을 통해 해를 하나 구할 수 있다.

 

 



유사역행렬도 numpy에 내장된 아래의 함수를 이용하여 계산할 수 있다.

 

np.linalg.pinv(x)

 

 

728x90
반응형

댓글