코딩하는 오리

[ML] 머신 러닝 기본기 - 2. 선형대수학 필요한 만큼만 배우기 본문

AI/ML

[ML] 머신 러닝 기본기 - 2. 선형대수학 필요한 만큼만 배우기

jooeun 2024. 7. 21. 16:08

01. 일차식과 일차 함수

 

선형 대수학

일차식 : 가장 높은 차수가 1인 다항식 (ax+b)

일차 함수 :  y = ax+b

 

02. 일차 함수 표기법

일차 함수의 예시

f(x,y) = 3x+6y+4

f(x0,x1,,,xn) = a0x0+a1x1 + ... + anxn + b

 

03. 행렬과 벡터

행렬 : Matrix, 수를 직사각형의 형태로 나열한 것

3(i)행, 4(j)열 => 3x4 행렬 => A34(Aij)

 

벡터 : Vector, 행 또는 열이 1인 행렬

열벡터(1열만 존재하는 행렬) = 벡터

행벡터(1행만 존재하는 행렬)

 

벡터의 차원 = 굳이 몇 X 몇 하지 않고 원소의 갯수를 표현. ex) 열 5개 : 5차원의 벡터

 

행렬은 주로 대문자 알파벳, 벡터는 주로 소문자 알파벳으로 표현

 

05. numpy로 행렬 사용하기

 

2차원 배열 : list 안에 list 형태

A = np.array([2차원행렬])

B = np.random.rand(3,5) : 3x5 행렬 생성(0~1 사이의 랜덤 값)

C = np.zeros((2,4)) : 2x4 행렬 생성(값은 0)

값 조회 : A [행값][열값]

 

 

07. 행렬 연산 (덧셈, 스칼라곱)

 

행렬 덧셈과 곱셈

행렬 덧셈 : 두 행렬의 차원(행 수, 열 수)가 같아야 가능

행렬 곱셈

1) 스칼라 곱 : 행렬 x 수 

2) 두 행렬의 곱 

 - 내적곱 : [2x3] 행렬 , [3x2] 행렬 => 결과 [2x2 행렬]

    mxn 행렬 A, nxp 행렬 B => mxp 행렬 AB 생성

    AB는 BA와 다름

 

 - 외적곱

 

 - 요소별 곱하기 : A∘B (두 행렬 차원이 같아야 가능)

   A @ B, np.dot(A,B)

 

 

15. 전치 행렬, 단위 행렬, 역행렬

특수 행렬들

1) 전치 행렬(transposed matrix) : A의 전치는 B (B는 A의 행과 열을 뒤바꾼 것)

    전치 행렬 사용 이유 : 행렬의 모양을 맞춰야 할 때 사용 가능

    np.transpose(A)

    A.T

2) 단위 행렬(identity matrix) : 왼쪽 위로부터 아래 대각선으로 값이 1, 나머지는 0인 행렬. 항상 정사각형 모양

    단위 행렬 사용 이유 : 어떤 수에 1을 곱할 때 그 수 그대로, 어떤 행열이든 단위행렬을 곱하면 기존 행렬이 그대로 유지

    np.identity(3) : 3x3 단위행렬

3) 역행렬(inverse matrix) : 행렬 A에 곱했을 때 단위 행렬이 나오도록 하는 행렬

    역수 : 곱했을 때 1이 되도록 하는 수

    모든 행렬에 역행렬이 있는 것은 아님 ! 역행렬은 반드시 정사각형

    np.linalg.pinv(A) : 역행렬이 없어도, 최대한 비슷한 효과를 낼 수 있는 값을 리턴해

 

 

19. 선형대수학과 행렬/벡터

 

아무리 복잡한 선형 시스템도 행렬과 벡터로 쉽게 표현할 수 있음 !

Ax=y

 

 

20. 선형대수학이 머신 러닝에 필요한 이유

아파트 가격 예측

집 값 = 크기 X a1 + 지하철 역 거리 X a2 + 층수 X a3

 

머신 러닝을 할 때는 데이터를 일차식에 사용하는 경우가 많다

행렬을 이용하면 정돈된 형태로 효율적이게 계산을 할 수 있다

선형 대수학은 일차식, 일차 함수, 행렬, 벡터를 다루는 학문이기 때문에 필수