다중공선성 기초개념

2019-05-07

.

그림, 실습코드 등 학습자료 출처 : https://datascienceschool.net

1. 다중공선성 개요

1

  • 독립변수끼리 상관관계가 강하게 나타나는 경우를 말한다. 독립변수 간에 상관관계가 높아지면 독립변수의 공분산 condition number가 매우 커지게 된다. 이는 오버피팅으로 이어질 가능성이 농후해진다는 말이다.

  • 이런 다중공선성을 줄이는 방법으로는 다양한 방법이 있다.

1) 독립변수가 스케일링이 되어 있지 않아도 증가하므로 일단 스케일링을 통해 condition number를 줄이는 방법

2) 변수 선택법으로 의존적인 변수 삭제. 쉽게 말해서 변수를 몇개 빼는 것이다. 그런데 변수를 빼는 것은 변수가 들어가 있느냐 안들어가있느냐에 따른 가중치에 bias가 생기게 된다. prediction을 정확하게 하겠다는 것이 최우선 목적이라면 상관이 없는데 x와 y간에 관계를 알아내겠다는 것이 궁금하다면 이 방법은 좋은 방법은 아니다. 왜냐하면 변수를 빼므로써 w값이 변하기 때문이다.

3) 그나마 위와 같은 문제를 줄 일 수 있는 것이 PCA 방법으로 데이터를 회전시켜서 의존적인 성분삭제한다. 예를들어서 x1과 x2가 상관관계가 매우 강하다고 가정하면 변수 선택법은 x1이나 x2 둘중하나를 버리는 방법이라고 하면, 반면에 PCA를 적용하면 데이터를 회전시켜서 새로운 x1 프라임, x2 프라임으로 만든다음에 움직임이 더 컸던 x2를 버리는 것이다. 이렇게하면 그냥 통째로 변수를 버리는 것 보다는 가중치의 bais가 적게 생긴다.

4) 정규화 방법 적용. 이 방법은 독립변수가 너무 많아서 어느세월에 어떤 변수를 버릴지 힘들때 변수선택법을 사실상 쓸 수가 없다. 정규화 방법을 적용하면 변수 개수를 그대로 두고 오버피팅이 발생하지 않도록 할 수 있다. 단 바이어스가 생기는 건 막을수 없다.

2. Variance Inflation Factor(VIF)

2

  • 변수 선택법에서 힌트가 될 수 있는 지표가 VIF라는 것이 있다. Variance Inflation Factor로 VIF는 독립변수를 다른 독립변수로 선형회귀한 성능을 나타낸 것이다. i 번째 변수의 VIF는 다음과 같이 계산한다. \(\ \text{VIF}_i = \frac{\sigma^2}{(n-1)\text{Var}[X_i]}\cdot \frac{1}{1-R_i^2}\)

위의 식에서 핵심은 R 스케어인데 i번째 데이터를 다른 독립변수로 선형회귀를 했을때 나오는 퍼포먼스를 말한다. 다른 변수에 의존적일 수록 VIF가 커진다. 그말은 그 변수는 필요 없다는 것이다. 이런식으로 불필요한 변수를 제거한다면 모델에서 insight를 얻기 쉬워지고 클라이언트를 설득하는데도 원활해질 것이다.

  • StatsModels에서는 variance_inflation_factor 명령으로 VIF를 계산한다.