Python/[코칭스터디 9기] 인공지능 AI 기초 다지기

[인공지능(AI) 기초 다지기] 3. 기초 수학 첫걸음 (3)

김초송 2023. 2. 7. 20:05

3) 행렬

 

- 행렬이 뭔가요?

  • 벡터를 원소로 가지는 2차원 배열 
    행(row)과 열(column)이라는 인덱스를 가짐
  • n x m (행 x 열)
  • 특정 행(열)을 고정하면 행(열)벡터라 부름
  • numpy에선 행(row)가 기본 단위 = 행벡터
  • 벡터가 공간에서 한 점을 의미한다면 행렬은 여러 점들을 나타냄
  • 행렬의 행벡터는 Xi i번째 데이터를 의미
    행렬의 원소는 Xij는 i번째 데이터의 j번째 변수의 값을 의미
  • 행렬끼리 같은 모양을 가지면 덧셈, 뺄셈을 계산할 수 있음
    성분곱은 각 인덱스 위치끼리의 곱
    스칼라곱은 각 배열의 원소에 똑같은 숫자를 곱함

 

- 전치 행렬(Transpose Matrix) X^T

  • 행과 열의 인덱스가 바뀐 행렬

 

- 행렬 곱셈

  • i번째 행벡터와 j번째 열벡터 사이의 내적을 성분으로 가지는 행렬
  •  X의 열 개수와 Y의 행 개수가 같아야 함
  • 행렬의 순서가 매우 중요함
  • numpy : @ 연산
  • np.inner는 i번째 행벡터와 j번째 행벡터 사이의 내적을 계산 -> 수학에서 말하는 내적과 다름!
    = X, Y^T의 내적과 같음

 

 

- 행렬의 이해

  • 행렬은 벡터공간에서 사용되는 연산자(operator)로 이해
    행렬을 통해 두 벡터를 연결
  • 행렬곱을 통해 벡터를 다른 차원의 공간으로 보낼 수 있음
    z와 x를 A라는 행렬을 통해 이어줌
  • 행렬곱을 통해 패턴을 추추로할 수 있고, 데이터를 압축할 수도 있음
  • 모든 선형변환(linear transform)은 행렬곱으로 계산할 수 있음

 

- 역행렬 (Inverse Matrix)  A-1

  • 어떤 행렬 A의 연산을 거꾸로 되돌리는 행렬
  • 행과 열 숫자가 같고 행렬식(determinant)가 0이 아닌 경우에만 계산할 수 있음
  • 역행렬 연산은 n=m일 때만 가능하고 행렬 A의 행렬식이 0이 되면 안 됨
  • 항등행렬 : 임의의 행렬과 곱했을 때 자기 자신이 나오는 행렬
  • 역행렬은 순서 상관 없음
  • np.linalg.inv(X)

  • 만일 역행렬을 계산할 수 없다면 유사역행렬(pseudo-inverse) 또는 무어-펜로즈(Moore-Penrose) 역행렬 A+ 를 이용함
  • 행과 열의 숫자가 달라도 계산할 수 있음 -> 행과 열의 갯수 중 뭐가 더 많은지에 따라 계산식이 달라짐 (순서가 중요)
  • np.linalg.pinv(Y)

 

- np.linalg.pinv 응용

  1. 연립방정식
  2. 선형회귀식 : 어떤 베타 벡터를 써야 빨간 점을 잘 표현하는 선형회귀식을 구할 수 있을까?
    찾은 선(y^)가 y와 차이가 가장 최소화 
    sklearn의 LinearRegression과 같은 결과 (단, y절편(intercept)항을 직접 추가해야 함)