본문 바로가기
KOOC/DataScience Programming

Linear Regression Advanced <6-2>

by dataart 2024. 5. 25.

<< 6주차 Lecture Note 2번째>>

  • Variable Selection
  • Inforamtion Criterion
  • Stepwise Feature Selection

Variable Selection

 

2024.05.25 - [KOOC/DataScience Programming] - Linear Regression Advanced <6-1>

 

Linear Regression Advanced <6-1>

>Multivariate Linear Regression Least Square Principle of MultipleEvaluate of Multiple (Cross Validation) Multivariate Linear Regression2024.05.22 - [KOOC/DataScience Programming] - Linear Regression Basic " data-og-description=">Deterministic RelationEs

statfinance.tistory.com

 

앞 글에서, 임의로 선택한 변수로 모델링 후 CV를 적용해 검증한 결과, train과 test 사이의 metric 갭이 매우 컸던 것을 확인했다.

 

어떤 데이터에 종속변수 Y와 독립변수 X가 존재할 때, 모든 XY에 동일한 영향을 주는 것은 아닐거다.

X마다 Y에 미치는 영향도, 중요도가 다를 것이므로, X에 대한 선택이 모델의 성능을 좌우하게 된다.

 

아래 그림은 선택한 변수마다 나온 metric 결과다.

 

변수의 갯수마다, 선택한 변수가 뭐냐에 따라 metric이 달라지는 것을 볼 수 있다.

 

현재 사용한 metirc은 R-square인데, 음수가 존재하는 것도 볼 수 있다.

우리는 Linear Regression 모델링을 했고, R-square가 음수인 경우는 실제 데이터가 Non-Linear일 수 있다는 점을 고려해야 한다.

R-Square < 0 인 경우 SSE > SST 이 되고, SST는 non-linear 패턴에서는 작을 수 있지만 SSE는 linear를 가정하고 계산되기때문이다.

 

 

우리가 n개의 변수 X 를 갖고 있을 때, 변수를 선택하는 모든 경우의 수는 2n1 개가 되며,

이것은 exponential 하게 증가하는 경향이 있어서 변수가 많을수록 연산해야 하는 수가 많아진다.

 

선택 가능한 변수의 총집함을 Power Set 이라고 부르는데, 주어진 데이터로부터 Power Set을 만드는 코드는 아래와 같다.

 

def getPowerSet(lstSet):
    
    x = len(lstSet)
    lstRet = []
    
    for i in range(1 << x):
        lstRet.append([lstSet[j]] for j in range(x) if (i & (1 << j)))
        
    return lstRet

 

모든 컬럼 리스트에서 모든 경우의 수대로 리스트 집합을 만드는 것이며, 비트 시프트 연산자를 이용해서 코드라인을 줄였다.

 

위 Power Set을 이용해서 모든 변수집합에 대해 CV 검증을 함으로써 성능을 가장 좋은 변수조합을 알 수 있다.

 

하지만 앞서 말한 것처럼, n이 커질수록 그 검증시간이 기하급수적으로 증가한다.

따라서 우리는 모든 경우의 수에 대해 확인하지 않고 효율적으로 성능 좋은 변수조합을 선택할 방법이 필요하다.

 


Inforamtion Criterion

 

'성능이 좋은 모델이다' 라는 것은, 그 모델이 복잡하지 않으면서도 데이터를 잘 설명할 수 있다는 것이다.

그래서 우리가 성능 좋은 모델을 위해 변수조합을 선택할 때에는 아래의 조건을 고려한다.

  • 모델의 복잡도가 낮아야 한다
  • 모델 test에서 검증 metric score가 우수해야한다.

 

모델의 복잡도가 높다, 낮다의 가장 기초적인 기준은 변수의 갯수다.

변수의 갯수가 많으면 복잡도(complexity)가 올라간다. 반대로 갯수가 적으면 복잡도는 내려간다.

 

이런 조건들을 고려한 변수선택의 기준이 Information  Criterion 이며,

통상 사용하는 것은 2가지 이다.

 

D는 Dimension을 나타낸다. 즉, 변수의 갯수다.

또한 Likelihood가 최댓값을 가질 때 파라미터가 최적화된다는 점을 이용한다.

 

식을 풀어서 해석하면, 차원은 낮을수록, Likelihoo는 높을수록 BIC, AIC 값은 낮아진다.

즉, BIC, AIC는 변수 조합을 찾는 기준점을 제시하는 것이다.


Stepwise Feature Selection

 

BIC, AIC라는 변수 선택 기준을 제시하더라도, 변수 조합을 찾아야하는 것은 똑같다.

가장 일반적인 방법론이 단계적으로 변수를 추가/제거 하는 Stepwise Feature Selection 방법이다.

 

Stepwise Feature Selection에는 두가지 방법이 있다.

  • Forward Selection
    • 아무런 변수도 선택하지 않은 지점부터, 하나씩 추가하며 R-square, AIC, BIC 등의 metric을 계산한다.
    • metric이 더이상 변동하지 않고 특정 값에 수렴할 때 까지 과정을 반복한다.
    • 이 떄에는 metric의 상승분을 관찰한다.
  • Backward Selection
    • 모든 변수를 추가한 상태부터, 하나씩 제거하며 R-square, AIC, BIC 등의 metric을 계산한다.
    • metirc이 더이상 변동하지 않고 특정 값에 수렴할 때 까지 과정을 반복한다.
    • 이 때에는 metric의 하락분을 관찰한다.

 

Feature Selection에서 metric은 우리가 임의로 판단한 어느 값을 임계값으로 지정하게 된다.

예를들어, Forward selection에서 R-square 임계값을 0.5로 정했으면 0.5를 넘길 때까지만 반복하면 된다는 것이다.

 

이런 임계값(threshold)를 지정하는 것은 모델링하는 도메인이나, 이해관계자의 판단에 따라 달라질 것이다.

반응형