Matrix

soominlee·2022년 8월 4일
0

📘 mathematics for AI

목록 보기
2/3

*해당 게시글은 <NAVER boostcourse> 에서 수강한 강의를 바탕으로 정리한 내용입니다.

Matrix

행렬은 벡터를 원소로 가지는 2차원 배열
행과 열이라는 index를 가짐
행렬의 특정 행(열)을 고정하면 행(열)벡터라 부름

  • Transpose matrix (전치행렬): 행과 열의 인덱스가 바뀐 행렬
  • matrix은 공간 상에서의 여러 점들을 나타냄 (벡터는 한 점을 나타냄)

Matrix 연산

  • Matrix는 같은 모양을 가지면 덧셈, 뺄셈, 성분곱 가능하며, 스칼라곱도 가능함

  • Matrix의 곱셈
    : i번째 행 벡터와 j번째 열벡터 사이의 내적성분으로 가지는 행렬을 계산하는 것
    - numpy에서는 @ 연산을 사용함

  • Matrix의 내적
    : i번째 행 벡터와 j번째 행 벡터 사이의 내적성분으로 가지는 행렬을 계산하는 것
    - 넘파이의 np.inner 함수를 사용
    *수학에서 말하는 내적과 다르므로 주의!

🐍 multiply and product of matrixs in python
X = np.array([[1,-2,3],
			  [7,5,0],
              [-2,-1,2]])
Y = np.array([[0,1,-1],
			  [1,-1,0]])

mul = X @ Y
  > array([[-8, 6],
           [5, 2],
           [-5, 1]])

prd = np.inner(X, Y)
  > array([[-5, 3],
           [5, 2],
           [-3, -1]])
  • ML,DL에서 행렬은 벡터 공간에서 사용되는 연산자로 이해할 수 있음
  • 행렬곱을 통해 벡터를 다른 차원의 공간으로 보낼 수 있음
  • 행렬곱을 통해 패턴을 추출할 수 있고 데이터를 압축할 수도 있음

inverse matrix

  • 역행렬이 존재하는 조건
    1. 행과 열 숫자가 같음
    2. 행렬 식(determinant)이 0이 아닌 경우

  • numpy.linalg.inv로 역행렬을 구할 수 있음

  • 만약 역행렬을 계산할 수 없다면, 유사역행렬(pseudo-inverse) 또는 무어-펜로즈(Moore-Penrose) 역행렬 A+A^+를 이용할 수 있음

    n≥m 인 경우 A+A=IA^+A = I 가 성립
    n≤m 인 경우 AA+=IAA^+ = I 만 성립

    • np.linalg.pinv 로 무어-펜로즈 역행렬을 구할 수 있음

    • np.linalg.pinv 를 이용하면 연립 방정식의 해를 구할 수 있음
      ** 식이 변수 개수보다 작거나 같아야 함

    • np.linalg.pinv 를 이용하면 선형모델의 회귀식을 찾을 수 있음
      ** 데이터가 특징 개수보다 같거나 많아야함

profile
Soominlee

0개의 댓글