행렬

JH_CHOI·2022년 1월 19일
0
post-custom-banner

행렬

중요개념

  • 행렬의 개념
  • 행렬의 연산
  • 벡터 공간에서 가지는 의미
  • 연립방정식
  • 선형회귀분석

목표

벡터의 확장된 개념인 행렬은 행(row)벡터를 원소로 가지는 2차원 배열로 벡터와 다르게 계산되는 연산들에 주의하시며 공부합시다.

권고사항

행렬연산은 딥러닝에서 가장 핵심적인 연산이라고 볼 수 있을만큼 중요하고, 자주 사용되기 때문에 행렬 연산의 메커니즘,그리고 이 때 가지는 기하학적 의미와 머신러닝에서 어떻게 사용되는지를 충분히 이해하고 넘어갑시다.

행렬이란?

  • 행렬(matrix)은 벡터를 원소로 가지는 2차원 배열입니다.
    • numpy에선 행(row)이 기본 단위입니다.
  • 행렬은 행(row)과 열(column)이라는 인덱스(index)를 가집니다.
  • 행렬의 특정 행(열)을 고정하면 행(열)벡터라 부릅니다.
  • 전치행렬이란, 행과 열의 인덱스가 바뀐 행렬을 말합니다.
  • 벡터가 공간에서 한 점을 의미한다면, 행렬은 여러 점들을 나타냅니다.
  • 행렬의 행벡터 x(i)는 i번째 데이터를 의미합니다.
  • 행렬의 x(ij)는 i번째 데이터의 j번째 변수의 값을 말합니다.

행렬의 연산

  • 행렬끼리 같은 모양을 가지면 덧셈, 뺄셈을 할 수 있습니다.
  • 성분곱은 벡터와 똑같습니다. (성분곱은 각 인덱스 위치끼리 곱합니다.)
  • 스칼라곱도 벡터와 연산에서 차이가 없습니다.
  • 행렬 곱셈은 i번째 행벡터와 j번째 열벡터 사이의 내적을 성분으로 가지는 행렬을 계산합니다.
    • 행렬곱은 X의 열의 개수와 Y의 행의 개수가 같아야 합니다.
    • numpy에선 @연산을 사용합니다.

행렬의 내적

  • 넘파이의 np.inner는 i번째 행벡터와 j번째 행벡터 사이의 내적을 성분으로 가지는 행렬을 계산합니다.
  • 수학에서 말하는 내적과는 다릅니다.

행렬의 이해

  • 행렬은 벡터공간에서 사용되는 연산자(operator)로 이해한다.
  • 행렬곱을 통해 벡터를 다른 차원의 공간으로 보낼 수 있습니다.
  • 행렬곱을 통해 패턴을 추출할 수 있고 데이터를 압축할 수도 있습니다.
    • 모든 선형변환은 행렬곱으로 계산이 가능합니다.

역행렬

  • 어떤 행렬 A의 연산을 거꾸로 되돌리는 행렬을 역행렬이라 부르고 A^-1라 표기한다. 역행렬은 행과 열 숫자가 같고 행렬식(determinant)이 0이 아닌 경우에만 계산할 수 있다.
    • numpy.linalg.inv로 구할 수 있다.
  • 만일 역행렬을 계산할 수 없다면 유사역행렬(pseudo-inverse) 또는 무어-펜로즈(Moore-Penrose)역행렬 A^+을 이용한다.
    • numpy.linalg.pinv로 구할 수 있다.

연립방정식

  • numpy.linalg.pinv를 이용하면 연립방정식의 해를 구할 수 있다.

선형회귀분석

  • numpy.linalg.pinv를 이용하면 데이터를 선형모델(linear model)로 해석하는 선형회귀식을 찾을 수 있다.
    • 선형회귀분석은 연립방정식과 달리 행이 더 크므로 방정식을 푸는 것은 불가능하다.

  • sklearnLinearRegression과 같은 결과를 가져올 수 있다.
  • 직접 Moore-Penrose 역행렬을 구하는 경우 y절편항을 직접 추가해야 같은 결과를 얻을 수 있다.
profile
꿈이 큰 새싹 개발자입니다.
post-custom-banner

0개의 댓글