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

