Linear Regression

wyj·2023년 3월 31일
0

Machine Learning

목록 보기
1/1
post-thumbnail

분류와 회귀

머신러닝에는 크게 2가지 문제가 있습니다. 바로 분류(Classification)와 회귀(Regression)입니다.

분류는 종속 변수가 범주형 데이터(categorical data)일 때 각 샘플이 어떤 클래스에 해당하는지를 예측하는 문제입니다.

회귀는 종속 변수가 수치형 데이터(numerical data)일 때 각 샘플이 어떤 값인지를 예측하는 문제입니다.

독립 변수와 종속 변수

우리가 잘 아는 직선의 방정식은 다음과 같습니다.

y=wx+by=wx+b

변수 yy를 종속 변수(dependent variable)라고 하며, x를 독립 변수(independent variable)라고 합니다.

변수 xx는 값이 마음대로 변할 수 있습니다. 하지만 변수 yy는 변수 xx의 값에 의해서 결정됩니다.

변수 xx는 독립적으로 값이 변할 수 있기 때문에 독립 변수라고 하고, 변수 yy는 변수 xx의 값에 의해서 결정되기 때문에 종속 변수라고 합니다.

독립 변수는 원인, 종속 변수는 결과라고 볼 수도 있습니다.

즉, 결과가 범주형 데이터로 어떠한 클래스인지를 예측하는 문제를 분류 문제라고 하고, 결과가 수치형 데이터로 어떠한 값인지를 예측하는 문제를 회귀 문제라고 합니다.

단순 선형 회귀와 다중 선형 회귀

독립 변수의 개수에 따라서 단순 선형 회귀(Simple Linear Regression)와 다중 선형 회귀(Multiple Linear Regression)로 나눌 수 있습니다.

독립 변수가 1개이면 단순 선형 회귀, 2개 이상이면 다중 선형 회귀입니다.

1가지 원인에 의해 결과를 예측하는 문제는 단순 선형 회귀이고, 2가지 이상의 여러 가지 원인에 의해 결과를 예측하는 문제는 다중 선형 회귀입니다.

독립 변수의 개수는 각 샘플 데이터에 대한 특성(feature)의 개수와 같습니다.

특성이 1개인 단순 선형 회귀 식은 다음과 같습니다.

y=wx+by = wx + b

특성이 n개인 다중 선형 회귀 식은 다음과 같습니다.

y=w1x1+w2x2+w3x3+...+wnxn+by = w_{1}x_{1} + w_{2}x_{2} + w_{3}x_{3} + ... +w_{n}x_{n} + b

정리하자면, 종속 변수의 종류에 따라서 분류와 회귀가 결정되고, 독립 변수의 개수에 따라서 단순 선형 회귀와 다중 선형 회귀가 결정되는 것입니다.

가중치와 편향

선형 회귀 식에서 ww는 직선의 기울기, bb는 y절편입니다.

머신러닝에서는 기울기와 y절편을 각각 가중치(weight)와 편향(bias)라고 부르며, 둘 다 모델의 파라미터(parameter)입니다.

비용 함수, 손실 함수 : 평균 제곱 오차

우리에게는 훈련 데이터가 존재합니다.

선형 회귀의 목적은 결국 주어진 훈련 데이터를 가장 잘 설명하는 직선의 방정식을 구하는 것입니다.

직선의 방정식을 구하기 위해서는 기울기 ww와 y절편 bb를 찾아야합니다.

데이터를 가장 잘 설명하는 직선은 구체적으로 무엇을 의미하는 것일까요?

바로 실제 데이터의 값들과 회귀선이 예측한 값들 사이의 차이가 가장 작은 회귀선이 데이터를 가장 잘 설명하는 직선이 되는 것입니다.

이 차이를 잔차(residual)라고 부르며 잔차를 정량적으로 나타내기 위해서 비용 함수(cost function) 또는 손실 함수(loss function)을 정의해야 합니다.

선형 회귀의 비용 함수는 평균 제곱 오차(Mean Squared Error, MSE)를 사용합니다.

평균 제곱 오차를 구하는 식은 다음과 같습니다.

mse=cost(w,b)=1ni=1n(yiyi^)2mse = cost(w,b) = \frac{1}{n}\sum_{i=1}^n(y_{i}-\hat{y_{i}})^2

yiy_{i}는 데이터의 실제값이고 yi^\hat{y_{i}}는 선형 회귀 식으로 구한 예측값입니다.

yi^=wxi+b\hat{y_{i}} = wx_{i}+b

데이터를 가장 잘 설명하는 직선은 비용 함수인 평균 제곱 오차를 최소화하는 기울기 ww와 y절편 bb를 가지는 직선입니다.

옵티마이저: 경사 하강법

옵티마이저(Optimizer)는 이러한 기울기 ww와 y절편 bb를 찾기 위한 알고리즘입니다.

선형 회귀는 옵티마이저로 경사 하강법(Gradient Descent)를 사용합니다.

경사 하강법은 접선의 기울기를 사용해서 최소의 비용을 가지는 wwbb 값을 찾아가는 알고리즘입니다.

w:=wαwcost(w,b)w:=w-\alpha\frac{\partial}{\partial w}cost(w,b)

위의 식은 cost(w,b)cost(w,b) 비용 함수를 ww에 대해서 미분한 값에 학습률(learning rate) α\alpha를 곱해준 만큼 ww값을 갱신하는 식입니다.

반복적으로 갱신을 하면 비용 함수의 기울기가 감소하는 방향을 따라서 점진적으로 아래로 내려가고 결국은 값이 최소가 되게하는(기울기가 0이 되는) ww값을 찾을 수 있습니다.

다중 선형 회귀에서는 모든 wiw_{i}에 대해서 위의 과정을 수행하게 됩니다.

bb에 대해서도 마찬가지로 동일한 작업을 수행하게 됩니다.

학습률 α\alpha값을 적절하게 선택하는 것이 중요합니다.

학습률을 너무 크게 설정하면 ww의 값이 발산해 버리는 문제가 있고, 그렇다고 학습률을 너무 작게 설정하면 학습 속도가 너무 느려지는 문제가 발생합니다.

0개의 댓글