- 회귀 분석 (Regression Analysis)
회귀분석이란 관찰된 여러 데이터를 기반으로 각 연속형 변수 간 관계를 모델링 하고 이에 대한 적합도를 측정하는 분석 방법으로 통계학에서 전통적으로 많이 사용되던 분석 방법이다.
- 선형 회귀분석(Linear Regression)
단순 선형 회귀분석(Linear Regression)은 독립변수 X(설명변수)에 대해 종속변수 Y(반응변수) 사이의 관계를 수학적 모형을 이용하여 규명된 함수 식을 사용해 설명 변수들의 변화로부터 종속 변수의 변화를 예측하는 분석이다.
아래 그림과 같이 두 변수 사이의 관계를 직선으로 가정하고 분석하는 것을 선형 회귀분석이라고 한다.
독립변수의 개수에 따라 한 개의 독립변수를 가지면 단순 선형회귀라고 하며, 두개 이상의 독립변수를 가지는 경우에는 다중 선형회귀라고 한다.
선형 회귀분석은 문제가 선형 회귀분석의 기본 가정에 해당한다면 회귀 분석을 시도해볼 만큼 문제를 해결할 때 많이 사용하는 방법이다.
선형 회귀분석의 기본가정에는 선형성, 독립성, 등분산성, 정규성 이 4가지 조건이 있다.
먼저 선형성은 예측하고자 하는 종속 변수 y와 독립변수 x간의 선형성을 만족하는 것을 의미한다.
독립성은 단숙 회귀분석에는 해당되지 않는 다중 회귀분석에서 중요한 기본 가정으로, 독립변수 x간에 상관관계 없이 독립성을 만족한다는 것을 의미한다.
등분산성은 분산이 같다는 것을 의미하며 특정 패턴 없이 고르게 분포하는 것을 의미한다.
정규성은 잔차가 정규성을 만족하는지, 정규분포를 띄는지 여부를 의미한다.
선형 회귀식은 $$y = \beta x + \epsilon$$ 으로 나타내며 $$\beta$$는 회귀계수, $$\epsilon$$는 종속 변수와 독립 변수 사이의 오차를 의미한다. 이 둘은 파라미터로 x와 y에 해당하는 데이터가 있으면 데이터로부터 하이퍼 파라미터를 추정 후 추정한 값들로 모델링을 수행하게 된다.
따라서 선형회귀 모델을 찾는다는 것은 주어진 데이터에 선형 식이 잘 맞도록 적절한 하이퍼 파라미터를 구하는 것을 의미한다.
머신러닝에서 선형회귀 모델을 표현할 땐 Hypothesis, Weight, bias를 사용하여 $$H=Wx+b$$로 나타낸다.
마찬가지로 주어진 데이터로 W(Weight)와 b(bias)를 구하기 위해 머신러닝 기법으로 회귀 모델을 구하게 된다.
W와 b는 위에서의 $$\beta , \epsilon$$와는 달리 고차원의 행렬 형태이며 이런 파라미터의 개수가 많을수록 모델의 크기도 커지며 학습하기도 어려워진다.
최소 제곱법은 잔차(Residuals)를 이용해 데이터를 가장 잘 설명하는 회귀 모델을 찾는 대표적인 방법으로 n개의 점 데이터에 대해 잔차의 제곱 합을 최소로 하는 W,b를 구하는 방법이다. 여기서 잔차란 회귀 모델을 이용해 추정한 값과 실제 값의 차이를 말한다.
최소 제곱법은 다음과 같이 표현된다.
$$\operatorname{argmin}_{W, b}\left(\sum_{i=1}^{n} \text { residuals }^{2}\right)$$
회귀 모델이 잘 결정되었는지 판단하는 지표에는 R-squared 또는 R2 score로 표기하는 결정계수가 있다. 이는 0~1 사이의 값으로 나타나며 1에 가까울 수록 회귀 모델이 데이터를 잘 표현한다고 볼 수 있다.
scikit-learn 라이브러리에서 기본으로 제공하는 Boston house prices dataset에 선형 회귀를 적용하면 아래와 같은 결과를 얻을 수 있다.
이 두 그림은 R2 score가 높은 편에 속하는 LSTAT(R2=0.544)와 RM(R2=0.484)을 이용하여 그린 결과로 전반적으로 회귀선을 따라 데이터가 잘 모여있는 것을 볼 수 있다.
머신러닝에서 최소제곱법과 같은 회귀계수를 구하는 과정에 쓰는 함수를 손실함수(Loss function)라고 하며,
주어진 데이터에 대해 손실함수를 최소화하는 W와 b를 구하는 것이 중요하기 때문에 적절한 회귀 모델의 회귀 계수를 찾기 위해선 손실함수를 잘 설정하는 것도 중요하다.
데이터의 분포를 매번 알 수는 없기에 손실함수를 최소로 하는 지점을 가중치의 그래디언트가 최소가 되는 지점으로 가정한다.
위의 그림에서 $$J(W)$$를 최소로하는 가중치 값을 가지려면 그래디언트 값이 중앙에 놓이는 것이 베스트이다.
해당 최소 지점에 가까워지기 위해 그래디언트 값을 아래 식으로 업데이트를 하여 최적의 가중치를 찾아낸다.
$$W:=W-\alpha \frac{\partial}{\partial W} J(W)$$
위의 식에서 $$\alpha$$는 learning rate로 값이 클수록 더 빠르게 최소 지점으로 수렴하게 된다. 하지만 learnig rate 가 너무 크면 최적의 W값을 건너뛰게 되어 수렴하지 못하는 경우도 생긴다. 때문에 적절한 learning rate를 선정하는 것이 중요하다.
- 로지스틱 회귀분석(Logistic Regression)
로지스틱 회귀분석은 선형회귀와 비슷하지만 Y 값이 확률로 되어있다는 차이가 있다.
데이터가 어떤 범주에 속할 확률을 0~1 사이의 값으로 예측하여 그 확률에 따라 가능성이 더 높은 범주에 속하도록 분류해주는 지도 학습 알고리즘으로 특정 threshold 값을 기준으로 예측된 확률 값을 분류한다.
때문에 1개 이상의 독립변수가 있을 때 사용하며 데이터가 2개 중 하나에 속하는 이진 분류 문제(binary classification)에 많이 사용한다.
로지스틱 회귀 식은 종속 변수가 0일 확률을 $$P(y=0 \mid x)$$로 두면 아래와 같이 나타낼 수 있다.
Odds는 사건이 발생할 확률을 발생하지 않을 확률로 나눈 값으로 다음과 같이 계산할 수 있다.
$$\text { Odds }(\text { Malignant })=\frac{P(Y=0 \mid x)}{P(Y=1 \mid x)}=\frac{P(Y=0 \mid x)}{1-P(Y=0 \mid x)}=\frac{0.2}{0.8}=0.25$$
위의 값에 log를 취한 값을 Log-odds라고 부르며 선형회귀분석의 종속변수처럼 구하면 된다.
$$\log \left(\frac{P(Y=0 \mid x)}{1-P(Y=0 \mid x)}\right)=\log (0.25)=\beta_{0}+\sum_{j=1}^{p} \beta_{j} x_{j}$$
위의 식에 데이터를 이용하면 회귀계수를 구할 수 있으며 이런 회귀모델은 수식적으로 Log-odds의 선형 회귀모델이라고 할 수 있다.
종속 변수가 0일 확률과 1일 확률을 구하기 위해서 log-odds로부터 특정 범주에 속할 확률을 얻기 위해 log-odds의 식을 $$P(y=0 \mid x)$$에 대해 다시 정리하면 아래와 같다.
$$
P(y=0 \mid x)=\frac{\exp \left(\beta_{0}+\sum_{j=1}^{p} \beta_{j} x_{j}\right)}{1+\exp \left(\beta_{0}+\sum_{j=1}^{p} \beta_{j} x_{j}\right)}
$$
이 때 $$
z=\beta_{0}+\sum_{j=1}^{p} \beta_{j} x_{j}
$$라고 한다면 위의 식은 아래처럼 간결하게 표현된다.
$$
P(y=0 \mid x)=\frac{1}{1+\exp (-z)}
$$
이는 sigmoid funcion의 형태로 Log-odds 값을 구한 다음, 이를 sigmoid function에 넣어서 0에서 1 사이의 값으로 변환해 주는 것이다.
이 함수는 z = 0인 지점을 중심으로 경계가 불명확해지는 x의 구간을 최소화시키기 때문에 분류모델의 성능을 매우 향상시켜준다.
로지스틱 회귀는 모델이 반환하는 값이 연속적인 변수이기 때문에 회귀 모델의 정의에 부합한다. 반환되는 값이 데이터 x가 어떤 범주에 속할지에 대한 확률이지만 확률 변수도 연속적인 변수이기에 회귀 모델에 해당한다.
로지스틱 회귀에서 데이터가 특정 범주에 속할 확률을 예측하기 위한 단계를 정리하면 아래와 같다.
1. 데이터를 대입하여 Odds 및 회귀계수를 구한다.
2. Log-odds를 계산한 후, 이를 sigmoid function의 입력으로 넣어서 특정 범주에 속할 확률 값을 계산한다.
3. 설정한 threshold에 맞추어 이진 분류를 수행한다.