Coding Diary.

(Machine Learning) 다중 선형 회귀 구현하기 본문

Coding/Machine Learning

(Machine Learning) 다중 선형 회귀 구현하기

life-of-nomad 2023. 8. 22. 13:35
728x90
반응형

1. 입력 변수와 파라미터 표현

입력 변수를 표현하는 방법을 알아보겠습니다. 속성이 하나일 때는 모든 데이터를 하나의 벡터로 아래와 같이 표현했습니다.

다중 선형 회귀에서는 기본적으로 한 열에 하나의 데이터를 표현하는 건 똑같습니다.

오른쪽 위에 있는 숫자는 몇 번째 데이터 인지를, 그리고 오른쪽 아래에 있는 숫자는 몇 번째 속성인지를 나타냅니다. 1행에는 첫 번째 데이터가, 2행에는 두 번째 데이터가 이렇게 저장돼있습니다.

 

첫 번째 행에는 0번째 속성, 1이 저장됩니다. 보통 선형 회귀의 가설 함수를 아래와 같이 표현합니다.

0번째 속성이 없긴 하지만 행렬로 표현할 때는 표현을 좀 더 통일성 있게 하기 위해 가상의 0번째 속성 x_0을 만들고 값을 항상 1로 설정해줍니다. 즉,

그리고 두 번째 행에 첫 번째 속성이, 세 번째 행에 두 번째 속성이 들어갑니다. 그럼 모든 데이터를 하나의 행렬 X에 묶어서 표현할 수 있습니다. 이렇게 입력 변수 데이터를 행렬로 묶어서 표현한 것을 설계행렬, 영어로는 Design Matrix라고 합니다.

 

theta값들도 두 개에서 그 이상으로 넘어갈 때 1부터 n까지의 모든 theta값들을 묶어서 아래와 같이 하나의 벡터로 표현합니다.

2. 모든 데이터 예측 값

이제 가설 함수를 행렬 연산에서 어떻게 표현할 수 있는지 알아봅시다. 위에서 한 것처럼 입력 변수와 파라미터를 아래와 같이 표현할 수 있습니다.

이렇게 표현하면 모든 데이터에 대한 예측 값은 두 행렬의 곱으로 나타낼 수 있습니다. 

각 열에 각 데이터에 대한 예측값이 계산된 걸 확인할 수 있습니다.

 

3. 예측 오차

각 데이터의 목표 변수는 값이 하나이기 때문에 단일 변수 선형 회귀와 마찬가지로 아래와 같이 표현할 수 있습니다.

Xtheta에서 y를 빼면 아래와 같이 표현할 수 있습니다.

모든 예측 값들과 목표 변수의 차이를 간단히 행렬 연산으로 구할 수 있게 됩니다. 이 값을 error 라고 부릅시다.

4. 경사 하강법

다중 선형 회귀도 일반 선형 회귀와 마찬가지로 0부터 n까지의 theta 값들을 아래와 같이 업데이트 하면 됩니다. (알파는 학습률, m은 데이터 개수)

 

이 부분도 행렬 연산을 사용하면 훨씬 더 짧고 간결하게 표현할 수 있습니다. 입력 변수, 파라미터, 예측값 오차를

위와 같이 표현할 때, 경사 하강법 공식을 간단한 행렬 연산으로 아래와 같이 나타낼 수 있습니다.

따라서 복잡해 보였던 경사 하강법 공식을 아래와 같이 간단한 행렬 식으로 표현할 수 있게 됩니다.

행렬식으로 표현할 수 있기만 하면 numpy를 이용해서 수학식을 쉽게 구현할 수 있게 됩니다.

728x90
반응형