linear regression analysis

2023. 10. 21. 20:37R, 빅데이터 분석 실험

시카고 공항 결항 문제.

날씨가 너무 자주 바뀐다. 날씨에 관한 데이터를 받아 날씨를 예측하려 한다.

하지만 데이터가 너무 많아서 1년치씩 받아야했다. sample size가 매우 클때 어떻게 해야하는가?

이 문제를 해결하기전에  linear regression anlysis에 대해 알아보자.

linear regression anlysis

종속 변수와 독립 변수가 선형적인 관계를 가진다고 가정하여 종속변수를 예측하거나 각 독립변수가 얼마나 영향을 주는지

β를 구할 수 있다.

 

2차원에서 이를 생각해보자

yi =β0 +β1xi1 +εi

xi와 yi 에 대해 선형 방정식을 세울 수 있다.

xi가 2개일 때 3차원 상에서 이렇게 최적의 1차 다항식을 구할 수 있다.

 

OLS(ordinary least squares)

데이터들을 가장 대표 한다고 할 수 있는 1차 방정식은 무엇일까?

바로 오차의 합이 가장 작은 1차 방정식이라고 할 수 있다.

εi = β0 +β1x1  - y1 로 식을 표현할 수 있고 해당 오차의 합이 최소가 되는 1차 방정식을 구하는 것이 우리의 문제이다.

오차는 양수일수도 있고 음수일 수도 있으니 εi 를 무작정 합하면 오차들의 합이 제대로 구해지지 않는다. 따라서 제곱하고

미분하여 εi를 구한다. 

함수 찾기

이식에서 우리가 모르는 변수는 β밖에 없으니 Q(β0,.. ,βp) 나타낼 있다.

그리고 Q(β0,.. ,βp)를 미분해야 εi 를 구할 수 있다.

 

β 들은 미지수니 편미분을 해야한다.

모든 편미분 값의 합은 0이 되어야한다. 2차원 함수의 극소값은 미분했을때 0이 되는 곳이기 때문이다.

 

이과정을 방금처럼 각각 방정식을 두고 풀수도 있겠지만 효율성을 위해 행렬식으로 식을 변형한다.

y은 N*1 행렬 , X는 N*P 행렬 , β는 P*1 행렬, ε은 N*1 행렬이다.

 

Xβ 로 β0 +β1x1 + .. + βnxn을 표현할 수 있고 N*1 행렬이 된다.  y행렬을 빼면 그대로 N*1 행렬이다.

||Xβ - y||^2을 수행한다. 행렬의 제곱은 ||a||^2 = a^ta 로 표현할 수 있고 (a가 열벡터일 때) 이를 수행하면 1*1 행렬이 된다.

여기서 Q(β0, β1,β2 ,... βn) 이 구해진 것이고 이를 각각 편미분한다.

 

결과로 P*1의 행렬을 얻을 수 있다.

미분에 대해 생각해보면 (a0 + a1x11 + a2x12 - y1)^2 + (a0 + a1x21' + a2x22' - y2)^2 + .. 를 미분하는건데

먼저 a0에 대해 편미분하는 경우를 생각해보자.

첫번째 부분을 보면 a0 + a1x11 + a2x12 - y1는 그대로 남고 a0의 계수인 1과 차수2가 곱해진다. 그리고 2번째  (a0 + a1x21' + a2x22' - y2)^2를 보면 똑같이 1과 차수 2가 곱해진다.

앞의 예시는 Xb-y 로 뒀지만 이를 y-Xb로 생각한다면 -만 붙는다는걸 확인 할 수있다.

따라서 a0 편미분은 -2(y1-X1ib1i) -2(y2-X2ib2i) + ... -2(yn-Xnibni) 가 된다. 

또 a1 편미분은 -2*x11(y1-X1ib1i) -  2*x21(y2-X2ib2i) - ...  - 2*xn1(yn-Xnibni) 가 된다. 

 

[1 ,  x11  ; 1 , x12] : 2(n)*2(p) 행렬 A

[y1 - b0+b1x11 ; y2 - b0+b1x21] 2(p)*1 행렬 B

 

A^tB에서 각 요소에 -2를 곱해준것과 같다는것을 확인할 수 있다.

 

이를 통해 일반항을 이끌어내자

-2X^t (y-Xβ) = 0

X^t (y-Xβ) = 0

X^ty - X^tXβ = 0

X^tXβ = X^ty 

β  = (X^tX)^tX^ty  임을 보일 수 있다.

 

 

적용

 

β0 + β1xi , yi

이렇게 행렬이 주어질 때 β 를 구해보자.

(b1 + b2 -2)^2 +(b1 + b2 -1)^2+(b1 + 2b2 -3)^2 +(b1 + 2b2 -4)^2 을 미분한 값이 최소가 되어야한다 

 

Q(b0) = 2(b1 + b2 -2) + 2(b1 + b2 -1) + 2(b1 + 2b2 -3) + 2(b1 + 2b2 -4) = 8b1 + 10b2 -18

Q(b1) =  2(b1 + b2 -2) + 2(b1 + b2 -1) + 4(b1 + 2b2 -3) + 4(b1 + 2b2 -4) = 10b1 + 20b2 - 32

 

이를 Ab = 0 꼴로 세워 상수 이항하고 A-1Ab 로 만들면 b를 구할 수 있다.

사실 이렇게 하지않더라도 Ab = y , A^tAb = A^ty, b = (A^tA)^-1A^tb 로 구할 수 있다.

 

이를 lm , (A^tA)^-1A^tb 로 구하면 아래와 같은 결과를 얻을 수 있다.