[데이터분석] 부분최소제곱법

박서현·2021년 8월 5일
0

데이터분석

목록 보기
4/4

부분최소제곱법이란

다중공선성 문제를 해결하기 위한 회귀 방법 중 하나로, 독립변수(X)의 선형결합과 종속변수(Y)의 공분산을 최대화하는 변수를 활용하여 회귀식을 찾아내는 방법이다.
독립변수(X)의 선형결합의 분산을 최대화하는 변수를 활용하는 주성분회귀와 차이가 있으나, 두 방법 모두 변수의 개수를 줄일 수 있고, 다중공산성 문제를 해결할 수 있다는 점에서 공통점이 있다.

부분최소제곱법의 수학적 원리

X를 독립변수, Y를 종속변수, t를 X의 선형조합, w를 선형조합의 가중치라 하자.

t=Xwt = Xw
cov(t,Y)=cov(t,Y)var(t)var(Y)var(t)var(Y)cov(t, Y) = {cov(t, Y)\over \sqrt{var(t)}\sqrt{var(Y)}}\sqrt{var(t)}\sqrt{var(Y)}
=corr(t,Y)var(t)var(Y)= corr(t, Y)\sqrt{var(t)}\sqrt{var(Y)}

따라서 t와 Y의 공분산을 최대화하려면, t와 Y의 상관계수와 t의 분산을 최대화 해야한다.

그렇다면, t와 Y의 공분산을 최대화하는 가중치 w는 어떻게 구할 수 있을까?

cov(t,Y)=cov(Xw,Y)cov(t, Y) = cov(Xw, Y)
=E[(XwE[Xw])(YE[Y])]=E[(Xw)(Y)]= E[(Xw - E[Xw])(Y - E[Y])] = E[(Xw)(Y)]

표준화된 데이터를 사용하기 때문에 E[Xw], E[Y]는 모두 0이 된다.

E[(Xw)(Y)]=1ni=1n(Xw)iYiE[(Xw)(Y)] = {1\over n}\sum_{i=1}^{n}(Xw)_iY_i
=1n(Xw)TY=1nwT(XTY)= {1\over n}(Xw)^TY = {1\over n}w^T(X^TY)
 cov(t,Y)=1nwT(XTY)∴ \space cov(t, Y) = {1\over n}w^T(X^TY)

여기서 wT(XTY)w^T(X^TY)는 w와 XTYX^TY의 내적으로 볼 수 있으므로, 아래 식이 성립한다.

wT(XTY)=w‖‖XTYcosθ w^T(X^TY) = ‖w‖‖X^TY‖cosθ\space

👉 θ가 0일 때 최대가 되며, 그 때 w와 XTYX^TY의 방향은 같다.

 w=XTY∴ \space w = X^TY

부분최소제곱법의 순서

  1. 데이터 표준화

  2. 첫번째 PLS 변수(t1t_1) 추출
    2-1. 첫번째 X, Y 설정
          X1=X, Y1=YX_1 = X,\space Y_1 = Y
    2-2. 공분산이 최대가 되도록하는 가중치 w1w_1 계산
          w1=X1TY1X1TY1 ( ‖w1=1)w_1 = {X_1^TY_1\over ‖X_1^TY_1‖}\space (∵\space ‖w_1‖ = 1)
    2-3. 가중치 w1w_1을 이용하여 첫번째 PLS 변수(t1t_1) 추출
          t1=X1w1t_1 = X_1w_1
    2-4. t1t_1의 회귀계수 b1b_1을 계산
          Y1=t1b1+F1Y_1 = t_1b_1 + F_1
          b1=(t1Tt1)1t1TY1b_1 = (t_1^Tt_1)^{-1}t_1^TY_1 (by 최소제곱법)

  3. 두번째 PLS 변수(t2t_2) 추출
    3-1. 두번째 X, Y 설정
    ⭐ 앞서 t1t_1이 설명한 부분은 제거하고, t1t_1이 설명하지 못한 부분(F1F_1)에 다시 최소제곱법을 적용한다.
          X1=t1p1T+E1 (p1T=(t1Tt1)1t1TX1)X_1 = t_1p_1^T + E_1\space (p_1^T = (t_1^Tt_1)^{-1}t_1^TX_1) (by 최소제곱법)
          ➡ X2=E1=X1t1p1TX_2 = E_1 = X_1 - t_1p_1^T
          Y1=t1b1+F1Y_1 = t_1b_1 + F_1
          ➡ Y2=F1=Y1t1b1Y_2 = F_1 = Y_1 - t_1b_1
    3-2. 공분산이 최대가 되도록하는 가중치 w2w_2 계산
    3-3. 가중치 w2w_2을 이용하여 두번째 PLS 변수(t2t_2) 추출
    3-4. t2t_2의 회귀계수 b2b_2을 계산

  4. 같은 방식으로 k번째 PLS 변수(tkt_k) 추출
    4-1. k번째 X, Y 설정
          Xk1=tk1pk1T+Ek1 (pk1T=(tk1Ttk1)1tk1TXk1)X_{k-1} = t_{k-1}p_{k-1}^T + E_{k-1}\space (p_{k-1}^T = (t_{k-1}^Tt_{k-1})^{-1}t_{k-1}^TX_{k-1})
          ➡ Xk=Ek1=Xk1tk1pk1TX_k = E_{k-1} = X_{k-1} - t_{k-1}p_{k-1}^T
          Yk1=tk1bk1+Fk1Y_{k-1} = t_{k-1}b_{k-1} + F_{k-1}
          ➡ Yk=Fk1=Yk1tk1bk1Y_k = F_{k-1} = Y_{k-1} - t_{k-1}b_{k-1}
    4-2. 공분산이 최대가 되도록하는 가중치 wkw_k 계산
          wk=XkTYkXkTYk ( ‖wk=1)w_k = {X_k^TY_k\over ‖X_k^TY_k‖}\space (∵\space ‖w_k‖ = 1)
    4-3. 가중치 wkw_k을 이용하여 두번째 PLS 변수(tkt_k) 추출
          tk=Xkwkt_k = X_kw_k
    4-4. tkt_k의 회귀계수 bkb_k을 계산
          Yk=tkbk+FkY_k = t_kb_k + F_k
          bk=(tkTtk)1tkTYkb_k = (t_k^Tt_k)^{-1}t_k^TY_k (by 최소제곱법)

  5. 충분한 PLS 변수 추출 후, 예측 값을 계산

    y=i=1ktibi=t1b1+t2b2++tkbky = \sum_{i=1}^{k}t_ib_i = t_1b_1 + t_2b_2 + \cdots + t_kb_k
profile
차곡차곡 쌓아가기

0개의 댓글