728x90
더보기
🐍👣
n년 전 다행히 좋은 수학쌤을 만나서 행렬 개념을 잘 잡았었기에
비록 문과생이지만 선형대수 기초 개념은 큰 무리 없이 받아들이기 대성공 ㅇㅅ< 아쟈쟛
인 줄 알았으나 행렬의 분해에서 완전 막혀버렸다
아무래도 현재 보고 있는 책은 기본 수학 개념을 빠르게 훑고 이를 코드로 어떻게 구현하는 지 보여주다보니
개념적인 설명은 초짜에게 아무래도 무리데스
우선 행렬 분해 전까지 이해한 것을 정리해놓고, 내일 휴가인 겸 오전에 선형대수 책 보면서 고유벡터 대각화 개념 좀 익혀놔야겠다
#2. 머신러닝을 위한 선형 대수
선형대수는 기본이면서 미적분학과 같이 많이 응용되는데, 다행히 쉽기도 하다
🐍👣 단원 초반에 이 말이 있길래 찰떡같이 믿었는데 찰떡같이 대각화에서 배신당함
[벡터]
- 개념
- 방향과 크기를 갖는 직선
- e.g. 키가 150, 몸무게가 50인 A와 키가 170, 몸무게가 50인 B를 몸무게 - x, 키 - y 축인 그래프에 얹고 원점과 이었다고 생각해보자
- 방향과 크기를 갖는 직선
- 표현 방식
- 벡터를 구성하는 각 값을 원소라고 표현
- 종벡터(열벡터), 횡벡터(행벡터)로 구분
#넘파이에서 벡터 표현하기
import numpy as np
list1 = [1,2,3,4,5]
a = np.array(list1)
- 벡터 간의 사칙연산
- 더하기, 빼기 : 그냥...같은 위치에 있는 애들끼리 해주면 됨
- 스칼라 : 벡터에 곱하는 숫자를 의미함
- e.g. 벡터에 -1(스칼라) 곱하면 각 원소에 -1이 곱해짐
[행렬-기본]
$ M = \begin{bmatrix} 50 & 50\\ 150 &170 \\ \end{bmatrix} $키가 150, 몸무게가 50인 A와 키가 170, 몸무게가 50인 B를 행렬로 표현해 봤따
# 넘파이로 행렬 나타내기
import numpy as np
x = np.matrix([[1,0,0],[0,1,0],[0,0,1]])
- 행렬의 종류
- 영행렬 : 원소의 값이 모두 0인 행렬
- 정방행렬 : 행과 열의 크기가 같은 행렬 (3*3, 4*4)
- 대각행렬 : 대각선에 해당하는 곳만 0이 아니고 나머지는 다 0인 경우
- 항등행렬 : 대각행렬에서 대각 값이 1로만 구성된 행렬
- 상삼각행렬 : 대각선 기준으로 위쪽에만 원소 값이 있는 경우
- 하삼각행렬 : 대각선 기준으로 아래쪽에만 원소값이 있는 경우
[행렬의 내적 외적]
- 행렬의 곱셈 : 고등학교때 배운 내용이니까 설명 잘 된 이미지로 대체
- 교환 법칙이 성립되지 않음 (AB =/ BA)
- 결합 법칙이 성립됨 A(BC) = (AB)C
- 분배 법칙이 성립됨 A(B+C) = AB+AC
- 내적(inner product)
- 횡벡터 x 종벡터 = 하나의 숫자 (Scala)가 나오게 되며 이를 내적이라고 부름
- 외적
- 종벡터 x 횡벡터 = 하나의 행렬
[행렬 연산의 의미와 활용]
- 행렬 연산의 의미 : 일종의 함수, 필터로서 작용
- 영행렬 : 어떤 벡터, 행렬도 영벡터 영행렬이 되어 값이 0으로 변환하여 뿌려주게 됨
- 항등행렬 : 항등행렬에 어떤 행렬을 곱해도 곱한 행렬이 나옴. 즉 항상 자기 자신이 나오게 함
- 일차방정식으로서의 역할 : x,y를 x1,y1로 변환해주는 필터 또는 함수
- 응용 : 유사도 행렬의 계산
- 협업필터링 추천 기법으로 평가 행렬 x 유사도 행렬간 곱을 바탕으로 아직 접하지 않은 품목에 대한 예상 선호도를 확인할 수 있음
📌여기서 유사도 행렬 도출 방법에 대해선 나오진 않았다. 유클리드, 코사인 유사도 등이 존재하는 것 같으니 추후 추천 시스템 관련 공부할 때 유사도 알고리즘 관련 추가 학습이 필요하다!
[행렬식과 역행렬 그리고 일차방정식]
- 역행렬
- 개념 : 행렬 A와 행렬 B를 곱했을 때 항등행렬이 나온다면 행렬 A의 역행렬은 행렬 B임
- 공식
- 행렬식
- 역행렬을 구할 때 ad-bc 의 값인 스칼라
- 단 행렬식을 먼저 확인했을 때 행렬식이 0이면 역행렬을 구할 수 없음
#역행렬 확인하기
import numpy as np
a = np.array ([[1,2], [3,4])
np.linalg.inv(a) #역행렬 프린트하기
np.linalg.det(a) #행렬식 확인하기
- 응용 기본 : 일차 방정식의 해 구하기
- 응용 : 마르코프 체인
- 개념 : 연쇄적으로 나타나는 상태를 확률 모형화 한 것
- 오늘 > 내일 > 내일 모레 > ... 로 이어졌을 때 확률이 반복 되는 것을 전이 행렬 간의 곱, 더 나아가 제곱으로 나타내는 것
- 계속 거듭제곱하다보면 더 이상 계산 결과가 변하지 않게 됨.
[행렬의 분해 : 고윳값과 고유 벡터, 대각화]
🐍👣아 선생님 너무 어려워요
'👩💻LEARN : ML&Data > Book Study' 카테고리의 다른 글
[머신러닝을 위한 수학 with 파이썬, R] #5. 확률분포와 통계적 추론 (0) | 2023.01.30 |
---|---|
[머신러닝을 위한 수학 with 파이썬, R] #4. 확률과 통계 (2) | 2023.01.29 |
[머신러닝을 위한 수학 with 파이썬, R] #3. 미분과 적분의 이해와 응용 (0) | 2023.01.28 |
[머신러닝을 위한 수학 with 파이썬, R] #2. 머신 러닝을 위한 선형 대수 part2. 고윳값, 고유벡터, 대각화 (1) | 2023.01.26 |
[머신러닝을 위한 수학 with 파이썬, R] #1. 데이터 과학과 파이썬 소개 (0) | 2023.01.24 |