Posts List

[Data Mining] 3. Regression - Simple Regression

Regression

회귀분석은 관심있는 하나의 변수(Y)를 설명하는데 있어 영향을 주는 다른 변수들(X)간의 통계적 인과관계를 분석하는 것이다.

여기서 원인 변수(X)를 independent variable(독립변수), 결과를 관측하는 변수(Y)를 dependent variable(종속변수)라 하며, 독립 변수가 두개 이상이면 Multiple Regression Analysis(다중회귀분석), 하나의 독립변수면 Simple Regression Analysis(단순회귀분석)이라 한다. 당연하게도 단순회귀분석이 훨씬 간단하고 쉽다. 먼저 단순회귀분석의 원리에 대해 알아보도록 하자.

Simple Regression Analysis

1. 단순회귀 모형

단순회귀모형에 대해 알아보기 전에 몇 가지 Notation부터 알아보자.

  • 관측치 : (X1, Y2), (X2, Y2) ... (Xn, Yn) (n : 관측수)
  • 모형 : Yi = β0 + β1Xi + εi,  (ε : 오차항, μ=0과 σ2을 갖는 정규분포를 가짐)

위와 같이 단순회귀 모형을 설계할 수 있는데, 추정이 필요한 파라미터는 아래와 같다.

  • β0 : 직선식의 절편
  • β1 : 직선식의 기울기
  • σ2 : 오차항의 분산

2. 모형의 추정

절편 β0와 기울기 β1의 추정은 Least squares method(최소자승법)을 사용한다. (CLS라 부르기도 한다. classical least squares method)

「최소」「자승」법이라는 것은 말 그대로, 어떤 값의 자승을 최소화 시키는 방법이며, 실제로 단순회귀 모형은 오차의 제곱승(Q)을 최소화 하는 β0와 β1를 구하는 것이다. (오차제곱승을 쓰는 이유는 오차의 부호가 다를 경우 상쇄되는 것을 방지하기 위함이며, 절대값을 쓰지 않는 것은 계산의 편의 때문이라고 한다.)

Q = Σ (Yi -β0 - β1Xi)2

즉, 2개의 변수(β0β1)를 가지는 방정식으로 볼 수 있으며, 미지수가 2개이기 때문에 각각 편미분하여 2개의 식을 만들면 연립방정식을 풀이로 절편 β0와 기울기 β1을 구할 수 있다. 

미분값을 0으로 두는 이유는 Q를 최소화하는 β0와 β1를 구하는 문제인데 그 방정식이 2차라면, 기울기가 0인 지점(최소지점)을 찾아야하기 때문이다. 

δQ/δβ0 = -2 Σ (Yi -β0 - β1Xi) = 0

δQ/δβ1 = -2 Σ (Yi -β0 - β1Xi)Xi = 0

이렇게 추정된 2개의 파라미터는 추정값이라는 표시로 hat(^)을 씌우며, 위 2개 식을 연립하여 풀면 아래와 같은 결과가 나온다. (굳이 기억할 필요는 없다. 대충 약분해보면 「X와 X추정평균의 차이 vs. Y와 Y추정평균의 차이관계로 기울기를 의미함을 알 수 있다.) 



3. 오차항(ε)의 분산(σ2) 추정

오차항은 관측될 수 없기 때문에 회귀모형이 추정되고 난 후 예측값()과 Y의 차, 즉 잔차(residual)의 분산으로 추정한다. 

ei = Yi - Yi0 - β1Xi

각 sample의 잔차를 모두 구한 다음 제곱하여 합하면 SSE(sum of square error/residual : 잔차(or 오차)제곱합)를 구할 수 있으며,

SSE = Σei2 = Σ (Yi - )2

σ= MSE = SSE/n-2

SSE를 자유도(n-2)로 나눈 값은 잔차의 표본 분산이 된다. (MSE : mean squared error, 잔차(or 오차)평균제곱 = 잔차2의 평균) 

※ 분산의 사전적 의미가 평균과의 편차 제곱합의 평균임

※ 데이터가 n개 인데 n-2를 사용한 이유는 자유도 2개를 잃었기 때문이다. 
    : 추정(~파라미터 확정)할 때마다 자유도를 잃는데, (β0, β1)를 추정했기 때문에 2개의 자유도를 잃은 것.

위 예제는 BMI와 GPT의 관계를 회귀모형으로 찾은 것이며, 추정 결과, 130.2의 분산이 있음을 추정한 것이다.


4. 모형의 검정

1) t-검정

지금까지 회귀모형을 추정했다면, 이제 가장 중요한 모형0, β1)에 대한 검정을 해 봐야한다.

앞서 다뤘던 기초통계 Review에서 가설검정(Hypothesis Testing) 과정을 그대로 따른다.
[ 기초 통계 Review 보러 가기 ]

  • 귀무 가설(null hypotheses)를 세운다. (H0)  
  • 검정 통계량(test statistic)을 정한다. (Θ) → 추론(estimation)
  • 귀무 가설을 기각시키는 영역(기각역, critical/rejection region)을 정의한다. 

  • 기각역으로 부터 대립가설 (H1)을 설정하고, 어떤 가설이 기각되는지 검정한다.

단순회귀모형의 검정 또한 위 과정을 똑같이 따른다.

Step 1. 귀무가설(H0)

회귀모형 검정의 귀무가설(H0)은 기울기가 0이라는 것이다. 기울기가 0이란 것은 독립변수(X)가 종속변수(Y)와 전혀관계가 없단 뜻이기 때문에 이 귀무가설을 기각시키면 검정이 완료된다. 
※ 추론한 기울기가 0이 아니기 때문 
   → 대립가설(H1) = X와 Y는 관계가 있음, 
      얼마만큼 관계가 있으면 허용되는지는 사용자가 정한 신뢰수준(α)이 결정함

Step 2. 검정통계량(Θ)

일단 가설검정을 위해 회귀계수(β0, β1 ,ε) 추정량의 분포를 먼저 알아낸 다음 well-known distribution(ex. 표준정규분포, t-분포, chi-square분포 등)으로 변형시키면서 검정통계량을 구해야한다. 먼저 가장 중요한 회귀계수인 기울기 β1의 검정통계량부터 살펴보자. 

일단 β1추정량이 왜 상수가 아니라 분포를 가지는지 의문을 가질 수 있는데, Y가 관측되기 전에는 random분포를 가지기 때문에(ε 때문) Y의 함수인 기울기 추정량도 자연스럽게 random 분포를 가진다. 그리고 Y의 random분포가 정규분포를 갖기 때문에 마찬가지로 기울기추정량도 아래와 같이 정규분포를 가진다. (절편 추정량도 유사한 성질을 가지지만 별로 안 중요함)

※ 위 식의 σ2SSE/(n-2)로 치환하여 대입하면 Σ (Yi)2/Σ (Xi)2 / (n-2) 이 되는데 Σ (Yi - )2/Σ (Xi - )21 - )2 과 의미가 같음으로 β1추정량의 분산으로 볼 수 있다.

그리고 σ2의 추정량은 아래와 같이 추정할 수 있는데, 기초 통계 단원에서 다루었듯, 분산의 분포를 구하고 싶을때 유용하게 사용되는 Chi-square 분포를 사용할 수 있다. (사실 이것도 딱히 중요하진 않다.)

결국 회귀 모형에서 가장 중요한 파라미터 기울기 β1에 대한 검정이 꼭 필요하고, β1는 정규분포를 가진다는 것을 알았다. 이제 정규분포를 표준정규분포를 가지도록 변경시켜야 하는데 σ를 모르기 때문에 추정량인 s를 사용하면서 t-분포를 따르게 된다. 따라서 t-검정을 수행해야하고, t-검정의 검정통계량(t-value, T)은 아래와 같다.

※ 표본을 표준정규분포로 만드는데 σ대신 추정치 s를 쓰면 t-분포를 가진다. 

Step 3. 기각역 설정

기각역은 유의수준 α에 대응해서 만들면 된다. 유의수준 α를 사용자가 정한뒤 p-값이 유의수준 α보다 작은지 확인하면 된다. (원래는 T값과 기각역과 비교하는데, T값에 해당하는 확률과 유의수준을 비교하는 방법이다. p-값이 유의수준보다 작으면 가설 기각)

여기서 p-값이 무엇인지 짚고 갈 필요가 있다. p-값은 t-분포 하에서 t-값이 계산되는데, 귀무가설이 맞다는 전제하에 t-값 혹은 그 이상의 값이 나올 확률(면적)이다. 한글로 풀면 p-값은 귀무가설이 맞다는 전제 하에, T값보다 큰 값이 나올 확률이며, p-value가 낮으면 귀무가설이 틀렸다고 판단하게 된다. (p-값에 대해서 너무 자세하게 다루면 또 끝도 없다. adnctum 블로그에 p-value에 대해서 자세히 서술하고 있으니 참고하자. 

※ 컴퓨터는 t-값을 보고 바로 p-값을 계산할 수 있어서 p-값을 쓰는 것이 더욱 직관적이고 편하다. 그래서 앞으로 나오는 모든 검정의 판정은 기각역은 이야기하지 않고 p-value로 판정한다.

결과적으로 단순회귀모형에서 회귀계수 추정결과와 t, p값을 정리하면 아래와 같다. 


Step 4. 판정

BMI와 GPT 예제를 해석해보자. 예제의 추론결과가 아래같다고 하자.


p-값이 0.006으로 계산되었는데, 만약 유의수준을 1%(0.01)로 고려하더라도 p-value가 충분히 작기 때문에(p-값 ~ 귀무가설이 유의할 확률) 귀무가설은 기각된다. (0.01보다 작기 떄문에)

2) 모형의 적합도와 결정계수 (R2)

위와 같이 t, p값으로 모형의 적합도를 판단하기에는 보다시피 너무 어렵다. 그래서 통상 R-square값을 쓰는데 이를 결정계수라 부르며, 1에 가까울수록 잘 적합했다고 할 수 있다. 그 원리를 한번 살펴보자.

먼저 R-square의 정의는 SST에 대한 SSR의 비율이며 아래와 같이 표현할 수 있다.

아직은 이해가 잘 안되지만 SSR과 SST, SSE에 대해 이해하면 R-square에 대해 보다 명확히 알 수 있다.

   

회귀모형의 적합도는 Y가 가지고 있는 변동을 회귀 모형이 얼마나 잘 설명하고 있느냐를 표현해야한다. 그러려면 먼저 Y자체가 가지고 있는 변동(평균에서 얼마나 벗어나는가)을 알아야하고 그것을 SST라 한다.(참고로 n-1로 나누면 분산이 됨) 그리고 Y와 Y의 평균사이에 회귀 모형의 예측값이 존재할텐데, 이 값은 실제Y와의 오차가 있을 것이고(SSE), Y의 평균값과도 차이가 날 것이다. (SSR)

결국 R-square Y자체의 변동(SST) 내에서 오차(SSE)가 차지하는 비율이 얼마나 낮은지 보는 것이고, 그 비율이 작을록(오차합이 적을수록) 1에 가까워 지도록 하는 함수라 할 수 있다. 

그리고 다르게 표현하면 Y자체의 변동(SST)과 예측값의 변동(SSR)이 얼마나 유사한지를 보는 척도라 할 수 있다.

이제 아래의 식을 다시 보면 이해가 좀 간다.

3) f-검정

그런데 R-square값이 얼마나 커야 잘 적합했다라고 말하기는 좀 어렵다. 누군가는 0.8 정도에 만족할 수도 있고 누군가는 0.9 수준으로 엄격하길 원할 수도 있다. 즉, 매우 주관적이다. 그래서 보다 객관적인 검정방법이 필요한데 그것이 바로 f-검정이다. R-square값이 "회귀 모형이 얼마나 잘 설명하고있는지"를 표현하는 계수라면, f-검정은 그 회귀모형이 유의한지 유의하지 않은지를 판단할 수 있다.

사실 f-검정은 다중회귀모형을 염두에 둔 검정방법이다. 예를 들면 "모든 독립변수의 기울기가 0인가?"라는 귀무가설을 검증하기 위한 방법이라 할 수 있다. 사실 t-검정은 독립변수가 하나인 f-검정이라 할 수 있다.

※ 실제로 t-분포는 chi-분포로부터 유래되었고, chi-분포를 가진 모집단이 2개 일때 f-분포를 가진다는 것을 기초통계 Review에서 잠깐 다루었다.

만약 t-검정시, 독립변수가 많다고 가정해보자. 그럼 각 독립변수(β1, β2...βn)의 추정량에 대한 모든 검정통계량(T, p-값)을 고려해야해서 여간 번거로운 것이 아니다. 그래서 f-검정은 모든 검정통계량을 구하는 것이 아니라 우회하는 방법을 사용한다.

f-검정의 핵심 아이디어는 분산(σ2)의 두 가지 추정량을 고려한다.

분산은 두 가지 방법으로 추정을 할 수 있는데,



(n : 표본의 수,   k : 회귀 계수의 수)

첫 번째는 우리가 가장 처음 배운 분산 추정의 개념이며, 오차제곱합(SSE)을 자유도로 나눈 것이다. (MSE :  mean of square error, 잔차제곱평균) 즉, 회귀모형이 얼마나 오차를 많이 가지는가(얼마나 잘 설명하지 못하는가)를 보여준다. (자유도 = 표본의 수 - 회귀계수의 수)

두 번째는 예측값과 표본 평균의 차(SSR)을 자유도로 나눈 것, 즉 회귀모형이 얼마나 잘 설명하고 있는지를 보여주는 MSR(mean of square regression, 회귀제곱평균)이 있다. (자유도 = 회귀계수의 수 -1)

※ 참고로 R-square = SSR / SST = SSR / SSR + SSE 

그런데 중요한 것은 MSE는 항상 추정이 가능한데 MSR은 모든 기울기가 0일때, 즉 귀무가설이 참일때만 분산으로써 유효하다. 왜냐하면 기울기가 있는 예측값과 상수인 평균값 사이의 유사도를 판단하는 것은 의미가 없기 때문이다.

그렇다면 MSE와 MSR의 비율을 따지면 어떤 의미를 갖게 될까? MSR은 항상 추정 가능한 반면, MSE는 모든 기울기가 0일때(귀무가설이 참일때)만 유효하다. 그런데 MSR과 MSE를 비교했더니 같다면?(MSR/MSE=1) 그 땐 모든 기울기가 0이란 뜻이며, 귀무가설이 참이란것을 의미한다.

기초 통계에서 언급했듯, 분포는 chi-square를 가진다. 그런데 위에서 언급한 바와 같이 chi-square를 가지는 2가지 인자를 각각 분자, 분모로 두면 f-분포를 가지기 때문에 f-검정을 수행할 수 있게 된다. 그리고 f-검정의 검정통계량인 f-값은 위와 같다. (위 식은 회귀계수의 수가 2인 경우의 f-값이다.)

이처럼 t-검정을 사용했다면 모든 기울기에 대해 검정통계량을 구해야했었는데, f-검정을 이용함으로써 기울기와 상관없이 SSE, SSR을 이용해 검정이 가능해졌다. 이런 특징 덕분에 기울기가 여러개인(회귀 계수가 2개 이상) 다중회귀에 대해서도 f-검정을 이용할 수 있는 것이다.

결과적으로, 단순회귀모형에 대한 분산분석(ANOVA : analysis of variance) 결과를 아래의 표와 같이 정리할 수 있다. (ANOVA table이라 부른다.)

앞의 BMI vs. GPT 예제를 그대로 대입하면

f-값으로부터 p-값을 도출하여 유의수준을 판단할 수 있고,
SSR, SSE를 활용하기 때문에 덤으로 R-square도 계산할 수 있다.
※ R-square = SSR / SST = SSR / (SSR+SSE) = 1235.5/3568.9 = 34.5%. 
   즉 GPT의 변동을 BMI가 34.% 설명한다고 볼 수 있다.


5. 회귀모형의 진단

지금까지의 절차를 정리해보자. 가장 먼저 ① 단순회귀 모형을 가정한뒤, ② 중요 파라미터인 절편(β0)과 기울기(β1)를 추정했고, ③ 모형이 가지게 될 오차항인 잔차(ε)의 분산 역시 추정을 완료 하였다. 다음으로는 ④ 절편(β0)과 기울기(β1)에 대해서 t-검정을 하는 법에 대해서 배웠다.

지금까지는 모형 그 자체(Y =β+ β1X)를 정확히 추론하고 검정하는데 집중했다면, 이번에는 ⑤ 모형의 외란이라 할 수 있는 잔차(ε)를 검정함으로써 모형을 진단해보자.

최초에 회귀모형의 잔차(ε)는 Nor(0, σ2)를 갖는 독립적인 정규분포를 가진다고 가정했었다. 회귀모형의 진단은 언급한 최최의 가정이 맞는지 진단하는 것이다. 잔차에 대해서는 정규분포를 과연 따르는지, 분산이 일정한지(등분산성), 독립적인지 확인해야 한다. 

모형의 진단은 주로 Graph를 통해서 시각적으로 확인는데, 주로 산점도 그래프나 정규확률분포도(normal probability plot)을 그려서 시각적으로 진단한다.


먼저 잔차의 등분산성을 확인하기 위해 산접도 그래프를 활용할 수 있다. 위 그래프의 세로축은 잔차이다. A case만이 잔차가 패턴없이 랜덤하게 나왔음으로 초기 가설이 성립하고, 나머지는 x축에 대해 선형/비선형 관계거나 점차 증가하는 관계를 가짐으로 등분산성 가설을 기각하게 된다.

그리고 잔차가 정규분포를 가지는지를 진단하기 위해 정규확률도표(normal probability plot)를 그려서 확인할 수 있다. 위 그래프의 x축이 잔차, y축은 잔차에 해당하는 누적확률값이다. 누적확률이 점진적(직선)으로 늘어나야 잔차가 정규분포를 가진다는 것을 뜻하는데, 위 그림처럼 S-곡선 혹은 하강곡선 등을 가지면 잔차가 어느 한쪾으로 치우쳤다는 뜻이며, 정규분포라는 가정을 기각하게 된다. 


6. 반응치의 예측과 예측 성능 평가

[반응치의 예측]

이제 회귀모형을 추론하고 검증까지 완료했으니 실제로 써먹고 성능을 확인 할 차례다.

먼저 새로운 X값에 대한 반응치를 예측해 볼텐데, 단순히 새로운 X=x0를 대입하여 1개의 예측값을 구하는 것이 아니라, x0에 대해 기대할 수 있는 반응치의 예측구간 혹은, x0라는 사건이 계속해서 일어났을 때 기대되는 반응치의 평균적 신뢰구간을 제공할 예정이다. 그래서 전자의 경우 미래반응치 예측구간, 후자의 경우 평균반응치 신뢰구간이라 한다.

방금 언급한 2개의 반응치에 대해서 조금 생각해보면, 전자(미래반응치 예측구간)의 경우 예측오차(Y - )의 분산을 고려해야하고 후자(평균반응치 예측구간)의 경우는 의 분산을 고려해야하는 느낌을 받는다. 아래 두 경우의 구간을 구하는 공식이 유도되어 있으나 공식을 외울필요는 없고, 각 case에 대한 느낌만 기억해 두면 좋을 것 같다.

미래반응치 예측구간 : 새로운 X에 대해 기대되는 Y값의 분포를 알아야 함으로 잔차의 분산을 확인해 봐야 한다.

평균반응치 신뢰구간 : 동일한 X가 여러번 입력되어도 서로 다른 Y추정값이 출력될 것이다. 그렇기 때문에 Y추정값()의 분산을 확인해 봐야 한다.

위 설명이 어렵다면 아래 예제를 살펴보면 보다 직관적으로 이해할 수 있다.

GPT = -25.28 + 1.8435BMI

예제의 결과를 해석하면, GPT 예측치는 BMI에 대입만하면 나오지만, 신뢰구간과 예측구간은 범위로 주어진다.

위 예제는 95%의 신뢰구간, 예측구간을 산출한 것이며, BMI = 30인 경우를 해석하면 아래와 같다.

  • BMI = 30인 어느 특정사람의 GPT는 4.54~55.51 로 95% 예측된다.

  • BMI = 30인 여러 사람들의 GPT 분포는 21.36~38.68 로 95% 신뢰할 수 있다.

보다시피 평균반응치 추정값과 미래반응치 예측값은 동일하다. 하지만 그 구간은 다른 것을 확인할 수 있다. 특히 예측구간의 경우 Y추정값에 잔차(Y - )까지 고려해야하기 때문에 그 구간이 넓고, 신뢰구간의 경우는 Y추정값()의 분포만 고려하기 때문에 그 범위가 좁다.

(Remember) 20명의 평균값이 얼마나 신뢰할 수 있는지는 평균반응치 신뢰구간, 새로운 사람에 대해 GPT를 예측하고 싶다면 미 반응치 예측 구간을 사용한다.

[모형의 예측 성능 평가]

이번에 소개할 예측 성능 평가는 비단 회귀문제 뿐만 아니라, 다른 통계모델이나 머신러닝 모델에서도 적용되는 것임으로 기억해 두는 것이 좋다. (R-square, RMSE와 같은 평가 기준의 설명은 생략하고 성능 평가 방법론에 대해 소개한다.)

성능 평가 방법들에 대해 소개하기전에 목적에 따라 데이터를 부르는 방법에 대해서만 간단히 정의하고 가자.

  • 학습표본(learning sample) : sampling한 전체 샘플

  • 훈련데이터(training sample 혹은 training set) : 모형의 파라미터를 추정하는데 쓰이는 샘플

  • 검증데이터(test sample 혹은 validation set) : 모델의 성능을 평가하는데 쓰이는 샘플

기술하는 서적이나 강의하는 사람마다 데이터를 부르는 용어가 상이 할 수 있지만 크게 연연해 하지말자. 파라미터를 추정할 때 쓰는 데이터, 모형이 형성된 후 모형의 성능을 파악하기 위한 데이터가 있다는 개념만 가지고 있으면 된다. 그럼 위 정의를 가지고 모형의 성능을 평가하는 대표적인 3가지 방법에 대해 알아보자.

  • 1. 대입법 : 가장 기초적인 방법이며 별로 권장되지 않지만, 데이터가 적은 경우에는 어쩔 수 없다. 가지고 있는 모든 데이터를 100% 훈련데이터(training set)로하여 파라미터를 추정하고, 성능평가를 할 때도 전체 데이터를 대입해 실제 Y값과 비교하는 방법이다. 그래서 다른 방법에 비해 상대적으로 성능이 높게 측정될 수 밖에 없다. 왜냐하면 파라미터에 기여한 데이터로 성능을 예측했기 때문이다. 전체 데이터가 현실 상황을 대표하면 상관없지만 그렇지 않은 경우 훈련데이터에만 너무 충실한 모형(overfitting)이 생성될 가능성이 높다.

  • 2. 테스트 표본 추정 : 전체 데이터를 학습데이터(training set)과 검증데이터(validation set)으로 나눠서 관리한다.(통상 7:3 혹은 8:2) 오로지 학습데이터로만 파라미터를 추정하고 파라미터 추정에 관려하지 않은 검증데이터로 모델 성능을 평가하는 방법이다. 학습데이터가 충분히 많아서 현실을 대표할 수 있는 경우 가장 기본적으로 시도할 수 있는 방법이다.

  • 3. 교차검증(cross validation) : 테스트표본추정방법에서 만약에 훈련데이터가 다양하지 않다면 마찬가지로 훈련데이터에 과적합 될 수 있는 위험이 있다. 그렇기 때문에 데이터가 적은 경우 테스트표본추정방법으로 나온 성능을 신뢰할 수 없다. 따라서 더욱 다양한 상황에 대해 테스트 되어야 하고 이를 위해 나온 방법이 교차검증이다. 교차검증은 데이터를 k개로 분할한 다음, k-1개의 분할셋으로 파라미터를 추정하고 1개의 분할셋으로 평가하는 방법을 반복한다. 그럼 각각 다른 성능이 도출될 텐데, 그 성능의 평균을 출력하는 것이 교차검증 방법이다. (k-fold cross validation) 앞서 언급한 방법에 비해 계산량이 k배 많지만, 다양한 샘플에 대한 평가 결과를 반영한 만큼 가장 신뢰할 수 있는 방법이라 할 수 있다.


 





댓글 쓰기

0 댓글