supervised learning 중에서 target variable이 numerical variable일 때, 예측 기법 중 하나인 linear regression(선형회귀)에 대해 알아본다. 기본적인 선형회귀를 알아보고 이어서 단점을 보완한 기법들에 대해서도 알아본다.
우선 선형회귀는 말그대로 독립변수와 종속변수 간의 선형적인 관계를 가정한다. 그렇기 때문에 아래의 식처럼 $\beta$를 추정하여 선형결합으로 예측 값을 계산한다. 우항의 가장 오른쪽에 $\epsilon$은 오차를 나타낸다. 완벽히 선형회귀로 만들어진 직선에 모든 데이터가 일치할 수 없기 때문에 그 당연한 오차를 표현해 주는 것이다.
선형회귀의 가정은 4가지 정도가 있다.
첫번째 독립변수와 종속변수 간의 선형적인 관계를 가정한다.
두번째 오차항은 정규분포를 따른다는 가정이다. (Normality)
세번째 오차항은 등분산성을 가정한다.(Homoscedasticity)
네번째 공분산성이 없다는 가정이다. (no multicolinearity)
선형회귀에서 주로 사용하는 방법은 최소제곱법(Least squares)이다. 오차제곱의 합을 최소화 하게끔 추정식을 만든다. 오차 제곱의 합을 최소화하는 식은 아래와 같다.
간단한 1차식 y = x + 1을 통해 $\beta_{0}$와 $\beta_{1}$을 각기 다른 값을 주어 오차제곱합 SSE를 구해보는 시뮬레이션 결과를 보면 아래와 같다. 베타값들이 변함에 따라 SSE가 다양하게 분포하는데, 두 베타값이 1에 가까울수록 SSE도 최소화된다.
아래의 그림은 개별 샘플들을 매트릭스 형태로 표현하는 과정을 나타낸다. 샘플별로 추정된 베타들과의 선형결합에 오차항을 더한 식을 가정하고 이 모든 샘플들에 대해서 한번에 표현할 수 있게 매트릭스 형태로 나타낸다.
최종적으로 오른쪽 가장 밑에 있는 것처럼 우리가 최소화해야할 목적함수 $E$ 가 $||y-X \bar{\beta}||^{2}$ 라는 행렬식으로 표현된다는 것을 알 수 있다.
아래의 E 는 스칼라 값을 갖게 되고, 우항의 베타에 따라서 달라지게 된다.
E를 최소화하기 위한 솔루션은 최소화하고자 하는 E를 베타로 편미분하여 편미분 값이 0이 되는 지점을 찾는 방법으로 진행한다. 미분했을 때 0이 되는 지점(기울기가 0인 지점)이 최솟값이기 때문이다.
이 아래 두번째 식처럼 E를 베타로 편미분하는데, 이 스칼라를 벡터로 편미분 한다는 것은 각 스칼라에 대해 벡터 값 하나하나로 미분한다고 생각하면 된다.
바로 아래의 첫번째는 공식처럼 생각하면 된다. 이는 ref에서 확인 가능하다. 아무튼 이 첫번째 식에 해당하는 방식대로 우리가 원하는 E의 형태로 대입을 한다. $W$는 없으니 identity 행렬이라고 생각하면 된다. 앞에 2가 나오는 것도 위의 분자에 $s$가 2차식 형태로 되기 때문이다. 사실 이렇게 유도하는 것은 행렬 미분을 직접 안해도 되기 때문에 계산 과정이 복잡하지 않다. 공식을 활용해서 $-2X^{T}(y-X \beta)$ 가 나오는 것을 기억하면 이후에는 정리만 하면 된다.
독립변수가 p개 일때 상수항 $\beta_{0}$까지 하여 $X$ 행렬은 p+1 개의 차원을 가지게 되고, $X^{T}X$는 곧 (p+1)(p+1) 크기를 가지게 된다. 정사각행렬이고, 역행렬을 가질 수 있게 된다. 이제 베타에 대해서 정리를 해보자.
이렇게 얻어진 선형회귀식이 문제가 없는지를 알아보자.
모델자체가 유의한지, 회귀계수 베타 값도 유의 한지 검정해보자. 이를 위해 F-test를 진행한다.
그전에 SSE, SSR, SST에 대해 살펴보자.
먼저 SST는 식에서 알 수 있듯이, 관측값(observed)의 평균값과 관측값 사이의 오차 제곱의 합을 나타낸다. 종속변수가 가지고 있는 변동성을 나타낸다. 선형회귀 관점에서 이 error를 설명하고자 한다. 샘플마다 y들이 다 다른데 이 편차가 발생하는 이유에 대해서 알고 싶기 때문에 SSR과 SSE를 토대로 이 SST를 설명코자 한다.
SSR은 회귀식으로 추정된 값 $\hat{y}$와 관측값들의 평균값과의 오차 제곱의 합을 나타낸다. 이는 설명이 가능한 오차(Explained sum of squares)로 불린다. 이는 모델이 설명해주는 변동성의 크기를 말한다.
SSE는 회귀식으로 추정된 값 $\hat{y}$와 관측값과의 오차 제곱의 합을 나타낸다. 이는 설명이 불가능한 오차로 불린다. 왜냐하면 위의 최소제곱법으로 추정을 해서 만든 회귀식으로 예측한 것이기 때문에 오차에 대해 설명할 방법이 없는 것이다.
SST를 보면 SSE가 상대적으로 작을 수록 SSR이 커지니 설명해줄수 있는 변동이 많아지게 된다.
진행을 위해 ANOVA 테이블을 만든다. 설명변수의 개수는 여전히 p 개로 진행한다.
F-test의 가설은 아래와 같다. 귀무가설은 모든 회귀 계수들이 0 이다. 이말은 모든 회귀계수들이 가중치가 0이라는 말과 동시에 아무런 설명을 해주지 않는 값이다라고 해석할 수 있다. 대립가설은 회귀계수들 모두 0은 아니라는 가설이다. 모두 의미가 있는 회귀계수라고 할 수 있다.
이러한 가설을 검정하기 위한 F분포를 따르는 검정통계량 값 F는 아래와 같이 MSR을 MSE로 나눈 값을 사용한다. 이 값들은 ANOVA 테이블을 구성하면서 쉽게 얻을 수 있다. 식은 MSR과 MSE의 비인데 MSE에러가 적고 MSR이 높을 수록 F값이 높아져 모델이 통계적이로 더 유의미하다고 할 수 있다.
그리고 MSR/MSE에서 분자, 분모의 자유도를 가지고 F 값을 얻게 되면 신뢰계수 $\ahpha$를 기준으로 기각역에 속하는지 여부(기각역에 속할 만큼 큰지)를 통해 귀무가설을 기각할지 말지 여부를 선택하게 된다. 귀무가설을 기각해야 모델이 통계적으로 유의하다고 할 수 있게 된다.
모델의 설명력에 대한 검정을 하였고, 이제 회귀계수 베타 $\beta$에 대해 검정을 해보도록 하자.
가설은 아래와 같다. 회귀계수가 전부 설명력이 없다라는 귀무가설과, 그렇지 않다라는 대립가설로 나뉜다.
이전의 모델 검정과는 달리 t-test를 진행하며 검정통계량 값은 아래와 같이 추정된 회귀계수를 추정된 회귀계수의 se(standard error) 표준편차로 나눈 값을 사용한다.
그래서 베타j에 대한 se 가 뭐냐 간략하게 설명해보면, 선형회귀는 통계적인 방법이다. 그 이유는 오차항에 대한 것들이 정규분포를 따른다고 가정을 했었다. 오차항이 정규분포를 따르기 때문에 예를 들면, 같은 input에 대해 y를 관찰한 데이터셋이 존재한다 했을때, 이걸 여러번 측정했다고 하면, 각각 베타를 추정하게 되면, 오차항이 랜덤하게 매번 생성이 되서 다른 y들이 생성이 되고 베타들이 다르게 추정이 된다. 또 같은 x들에 대해서도 다른 노이즈가 더해지면 또 다른 베타들이 추정이되게 되고, 이러한 반복에 추정치 베타들이 분포도 알 수 있게 된다. 오차항이 정규분포를 따른다고 했기 때문에 추정치 베타들도 정규분포를 따르게 된다.
공분산행렬이 $MSE(X^{T}X)^{-1}$ 와 같이 정의되게 된다. 여기에 대각원소들은 개별 베타들에 대한 분산값을 포함하고 있다. 나머지 off diagonal 원소들은 각 베타들 사이의 공분산 값을 갖고 있게 된다.
F 검정을 할 때 처럼 t값을 아래의 신뢰계수와 자유도를 통해 얻고, 이 값을 토대로 기각 여부를 결정한다.
이 아래의 그림은 위의 공분산 행렬에서 대각원소들의 값이 개별 베타들에 대한 분산값이라는 것을 설명해주는 그림이다. 아래의 $(X^{T}X)^{-1}$의 대각원소에 MSE를 각각 곱해주어야 분산을 구할 수 있다.
앞에서 검정한 것은 유의성만 검정을 하게 된다. 좀 더 정량적으로 이 모델이 y를 잘 설명해주는지를 나타내주는 것이 $R^{2}$값이다. $R^{2}$은 아래의 식처럼 구하고, 0에서 1사이의 값을 가지게 된다. SSR이 모델이 설명해줄 수 있는 변동이니 SSR이 클 수록 전체적인 값이 높아지게 된다.
아래의 그림은 모두 동일한 R square 값을 가지는 회귀식이다. 선형적인 분포를 보이는 것이 있는 반면, 비선형적인 모습을 띄거나 한 점을 제외하고 강한 선형적인 관계를 보이는 모습이나, 전혀 선형적인 모습을 띄지 않는 모습을 보인 분포들도 있다. 이러한 문제를 해결하기 위해 다른 지표들도 활용을 할 필요가 있다.
선형회귀를 기반으로 해서 변형된 버전의 알고리즘을 알아보자.
최소제곱법으로 추정한 회귀식의 문제는 위의 동일한 R square 갖는 그래프를 보면 알 수 있다.
첫번째, 극단적인 이상치가 있으면 영향을 크게 받을 수 있다.
두번째, 선형회귀 가정 중 이상치는 등분산성을 가정하는데, 이것이 위배될 때가 있다.
이에 이상치들에 대해 대처할 수 있는 방법이라고 보면 된다.
Robust regression
Robust regression는 기본적인 OLS와는 조금 다른 목적함수를 셋팅한다. 아래에는 기존의 OLS를 어떤 함수로써 우선 표현하고 있다. 즉 가장 아래의 오차 $e$ 가 $p()$로 묶여 있는데, 만약 이 $p(x)$ = $x^{2}$ 이면 기존의 OLS가 되는 것이다.
Robust regression는 여기서 함수 $p$를 바꿔주게 된다. 그 때 쓰는 함수가 Huber라는 사람이 제안한 Huber function이다.
아래의 조건식 처럼 어떤 값의 기준을 가지고 1보다 작으면 $x^{2}$을 사용하고, 1보다 크면 $2|x| - 1$ 를 사용한다. 만약 여기서 $x$를 오차라고 대입을 해본다면, 오차가 작을 때는 오차항이 전체 목적함수에 기여하는 바가 제곱으로 증가하지만 오차항이 크면 선형적으로 증가하게 한다. 제곱이 선형에 비해 값이 증가할수록 금새 커지기 때문에, 오차가 클 때는 목적함수 계산에 기여하는 바를 선형적으로만 좀 적게 들어가게 한다는 의미이다. 쉽게 말해 오차가 크면 반영율을 기존의 제곱이 아닌 선형함수로 작게 반영을 하겠다는 것이다.
이제 Huber function 을 사용해서 만든 새로운 loss function(objective function)을 살펴보자.
기존의 오차 제곱 합 식인 $(y - \hat{y})^{2}$ 에서 $H_{M}(\frac{y-\hat{y}}{\sigma})$ 로 바뀐 것을 볼 수 있다. 그렇게 바뀐 것은 아래에서 $M$에 대해 설명하겠지만, 데이터의 스케일이 다 다르면 $M$을 지정하기가 번거로워지기 때문에 애초에 분산으로 나누는 작업을 통해 스케일을 정규화 시켜주는 것이다.
그리고 가장 아래에 조건을 보면 $M$이 등장하는데 이 $M$은 사용자가 직접 지정을 해주는 것이다. 그 $M$이라는 것은 제곱으로 증가하다가 선형으로 증가하는 그 경계라고 할 수 있다.
이 그림을 보면 좀 더 쉽게 이해할 수 있다.
$M$ 값에 따라 loss function의 값을 그래프로 나타낸 것이다. 파란색은 $x^{2}$그래프이고, $M$ 값이 커질 수록 $x$의 절댓값이 커짐에 따라 금방금방 선형적으로 증가하는 구간이 생기는 것을 알 수 있다.
이상치들이 존재하고 이것이 추정에 영향을 많이 미칠 것으로 보이면, 위의 Huber function 을 사용하여 이상치들로 인한 오차에 영향을 줄이는 방안을 생각해보면 좋을 듯 하다.
Ridge 와 Lasso regression은 다음 장에서 설명하도록 한다.
ref)
'머신러닝' 카테고리의 다른 글
Naive Bayes Classifier (0) | 2020.10.18 |
---|---|
Ridge and Lasso Regression (0) | 2020.10.17 |
Clustering (0) | 2020.10.17 |
Nonparametric Method (0) | 2020.10.15 |
회귀분석 with python (0) | 2020.03.21 |
댓글