회귀분석(Regression Analysis)이란 통계학에서 전통적으로 많이 사용되던 분석 방법으로, 관찰된 여러 데이터를 기반으로 각 변수간의 관계를 모델링하고 이에 대한 적합도를 측정하는 방법입니다. 그 중 선형 회귀(Linear Regression)와 로지스틱 회귀(Logistic Regression)는 비슷한 이름을 가지고 있지만, 사용되는 상황과 목적이 매우 다르다는 것을 본 글을 통해 전달하고자 합니다.
회귀분석에서 사용되는 변수는 다음과 같습니다.
- 독립 변수(예측/설명 변수): 영향을 미칠 것으로 예상되는 변수
- 종속 변수(기준/반응 변수): 영향을 받을 것으로 예상되는 변수
먼저, 다음의 회귀분석 사례(source: https://aws.amazon.com/ko/compare/the-difference-between-linear-regression-and-logistic-regression/)를 살펴봅시다.
- 어머니와 아버지의 키를 기준으로 자의 키 예측
- 가격, 시기, 매장 위치를 기반으로 수박 판매량 예측
- 출발지, 목적지, 연중 시기 및 항공사를 기준으로 항공권 가격 예측
- 포스터, 팔로워 수, 게시물 내용, 게시 시간을 기반으로 소셜 미디어의 좋아요 수 예측
- BMI, 흡연 여부, 유전적 요인을 기반으로 심장병 발생 여부 예측
- 색상, 크기, 유형 및 가격을 기준으로 가장 인기가 있을 의류 제품 예측
- 급여, 근무 일 수, 회의 수, 이메일 발송 획수, 팀, 재직 기간을 기준으로 해당 연도에 직원의 퇴사 여부 예측
- 전년도 매출액, 재직 기간 및 수수료율을 기준으로 연간 100만 USD 이상의 계약을 체결하게 될 영업 팀원 예측
우리는 위 사례를 통해 파악해야할 중요한 포인트가 있습니다. 바로 예측하려는 종속 변수의 유형입니다. 선형 회귀는 연속적인 값을 예측하는 반면, 로지스틱 회귀는 이진 분류 문제에 사용됩니다. 우리는 지난 글에서 지도 학습(Supervised Learning)에는 회귀(Regression)와 분류(Classification)가 있음을 이야기했습니다. 관측된 데이터에는 독립 변수에 따른 종속 변수의 값이 모두 존재하기에 지도 학습에 해당하지만, 예측하려는 종속 변수의 유형에 따라 선형 회귀를 선택하거나 로지스틱 회귀를 선택해야합니다.
선형 회귀분석(Linear Regression)
선형 회귀는 이름에서 알 수 있듯이, 종속변수 Y와 한 개 이상의 독립변수 X와의 '선형적' 관계를 분석하는 방법입니다. 중요한 점은 '연속적인 값'을 예측하는 데 사용된다는 점입니다. 여기서 독립변수의 개수가 한 개의 독립변수를 가지고 있는 방식은 단순 선형회귀, 둘 이상의 독립변수를 가지고 있는 경우에는 다중 선형회귀라고 합니다.
선형 회귀 모델링
다음의 간단한 데이터를 바탕으로 선형 회귀분석을 설명해보겠습니다.
선형 회귀는 주어진 데이터를 나타내는 최적의 직선을 찾아냄으로써 input (x)와 output (y) 사이의 관계를 도출해내는 과정이라고 할 수 있습니다.
X | Y |
1 | 1 |
2 | 2 |
3 | 3 |
우리는 이차원 좌표 평면 위에 관측된 데이터를 표시하고, 이들을 가장 잘 설명해줄 수 있는 함수를 찾게됩니다. 이 때 무수히 많은 직선(엄밀히 말하면 직선이라는 표현이 적합하지 않을 수 있습니다)을 그릴 수 있으며, 머신러닝에서는 이를 'hypothesis (가설)'이라고 부릅니다. 그림으로 표현하면 다음과 같습니다.
Hypothesis Function이란, input (feature)과 output (target)의 관계를 나타내는 함수입니다. Output 값이 나오게 하는 '진짜' 변수들과 그 변수와 output 사이의 관계식을 정의하는 '진짜' 관계식을 찾아내는 것은 사실상 불가능합니다. 관측된 현상(observation)에는 종속 변수에 영향을 미치는 직간접적인 영향이 무수히 많기 때문입니다. 따라서 어머어마하게 많은 변수들을 모두 고려하여 그 변수들 간의 복잡한 방정식을 찾는 것이 아니라, "이러한 주요 변수들이 output에 영향을 미칠 것이야"라고 추정하고 그 관계를 나타내는 일종의 가설을 세우기 때문에 hypothesis라고 부르기 시작했습니다.
이러한 가설 함수를 선형 회귀에서는 다음과 같이 표현합니다.
$$ H= Wx + b $$
- H: 가설(Hypothesis)
- W: 가중치(Weight)
- b: 편향(bias)
즉, 주어진 데이터를 이용하여 W(가중치)와 b(편향)을 구하는 것이 목표라 할 수 있습니다.
최소제곱법과 비용함수
그렇다면, 우리가 만들 수 있는 수많은 Hypothesis Function에 대하여 어떠한 가설이 가장 데이터를 잘 설명하는지 확인하는 과정이 필요합니다. 위 그림의 예시에서 노란색, 파란색, 주황색 직선 중 파란색 직선이 가장 데이터를 잘 설명한다는 것에 동의할 것입니다. 왜 그럴까요? - 우리는 정답과 예측값 사이에 잔차(Residuals)를 가지고 설명할 수 있습니다.
다시 한 번, 다음의 그림을 통해 최적의 가설을 찾기 위한 비용 함수(Cost function)를 정의해봅시다. 이 과정을 수학적으로 나타내기 위해 notation을 정리해보겠습니다.
- \(m\) : # training examples
- \(x's\) : "input" variable, or features
- \(y's\) : "output" variable, or "target" variable
- \((x, y)\) : one training example
- \(x^{(i)},y^{(i)}\) : i-th training example
잔차(Residuals): 회귀모델을 이용해 추정한 값과 실제 데이터의 차이를 의미
최소제곱법(method of least squares): 잔차를 이용하여 주어진 점 데이터들을 가장 잘 설명하는 회귀모델을 찾는 가장 대표적인 방법 중 하나이며, 근사적으로 구하려는 해와 실제 해의 오차의 제곱의 합이 최소가 되는 해를 구하는 방법
error = \(H(x)-y\) 가 최소값을 갖는 것이 좋겠지만 이는 양수값일 수도 있고 음수값일 수도 있기 때문에 error값의 단순합을 바로 구하는 것은 적합하지 않습니다. 대신 이들의 제곱값의 합을 구하는 최소제곱법을 통해 비용 함수는 다음과 같이 계산될 수 있으며, 우리는 최종적으로 비용 함수를 최소화하는 Hypothesis Function을 찾아야 합니다.
그렇다면, 어떻게 비용함수를 최소화할 수 있을까요? 간소화된 비용함수로 다음과 같이 나타내봅시다.
$$ H(x)= Wx $$
$$ cost(W) = \frac{1}{m}\sum_{i=1}^{m}\left(Wx^{(i)}-y^{(i)}\right )^{2} $$
W= 0, 1, 2일 때 cost(W)의 변화를 살펴보기 위해 앞에서 살펴본 가장 간단한 데이터셋을 다시 적용해봅시다.
- \(W=0, cost(W) = 4.67\)
- \(W=1, cost(W) = 0\)
- \(W=2, cost(W) = 4.67\)
Gradient Descent (경사하강법)
Gradient Descent는 cost function을 최소화하기 위해 이용할 수 있는 방법 중 하나이며, 각종 최적화 문제에 활용되는 일반적인 방법으로 다음과 같은 전략을 취합니다.
- start with some \(W=0, b=0\)
- keep changing \(W, b\) to reduce \(cost(W, b)\) until we hopefully end up at minimum
Gradient Descent 알고리즘은 다음과 같이 진행됩니다.
주의해야할 점은 parameter들을 동시에 업데이트해야 한다는 점입니다. 만약 w를 먼저 업데이트하여 hypothesis function이 변경된 상태에서, 해당 hypothesis function에 숫자를 대입하여 b를 산출하게 되면 예상치 못한 문제가 발생할 수 있습니다.
상수 \(alpha\)는 learning rate라고 하는데, 이 크기가 클수록 한 번에 더 많이 움직이게 됩니다. 이 때 편미분항은 다음에 이동할 방향과 크기를 결정하게 되며, 기울기의 반대방향으로 움직이는데, 기울기가 클수록 더 많이 움직입니다.
만약, learning rate가 너무 작으면 수렴하는데에 오래걸리는 문제가 생기고, 반대로 너무 크면 최소값에 이르지 못해 수렴하지 못하거나 심지어 발산하는 문제가 발생할 수 있습니다. 그러므로 적절한 learning rate를 선택하는 것이 중요합니다. 대부분의 경우 최적값에 수렴할수록 편미분항의 크기가 작아져서 조금씩 업데이트되기 때문에 learning rate를 수동으로 조절할 필요는 없습니다.
다음 글에서는 로지스틱 회귀에 대해서 알아보도록 하겠습니다.
'Data Science Basic > Machine Learning' 카테고리의 다른 글
[ML] #1 Introduction to Machine Learning (4) | 2024.11.18 |
---|