👩‍💻LEARN : ML&Data/Book Study

[머신러닝을 위한 수학 with 파이썬, R] #2. 머신 러닝을 위한 선형 대수 part1. 벡터, 내적외적, 역행렬

쟈니유 2023. 1. 24. 22:51
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) #행렬식 확인하기
  • 응용 기본 : 일차 방정식의 해 구하기 

 

  • 응용 : 마르코프 체인 

  • 개념 : 연쇄적으로 나타나는 상태를 확률 모형화 한 것 
  • 오늘 > 내일 > 내일 모레 > ... 로 이어졌을 때 확률이 반복 되는 것을 전이 행렬 간의 곱, 더 나아가 제곱으로 나타내는 것 
  • 계속 거듭제곱하다보면 더 이상 계산 결과가 변하지 않게 됨. 

 

[행렬의 분해 : 고윳값과 고유 벡터, 대각화] 

🐍👣아 선생님 너무 어려워요