본문 바로가기
💻 CS/통계

[Python] 다중공선성(Multicollinearity) 의미, 변수 제거 이유

by Safetymo 2022. 12. 7.

데이터 분석을 하다보면, 회귀에서 나오는 개념 중 하나인 다중공선성

단순히 다중공선성을 없애야 된다고만 알고 있었는데, 사실 많은 의미를 담고 있는 '다중공선성'에 대해 알아보았다.

 

 

다중공선성

 

먼저 다중공선성이란, 회귀 분석에서 사용된 모델의 일부 변수가 다른 변수와 상관 정도가 높아, 데이터 분석에 부정적인 영향을 주는 것을 말한다.

 

그럼, 여기서 데이터 분석에 주는 부정적인 영향이란 무엇일까?

 

 

회귀분석

 

우선, 회귀분석이 무엇인지 알아야하는데

 

단순선형회귀 : Y = aX

다중선형회귀 : Y = aX1 + bX2 + cX3 + ... + zXn

 

회귀는 이처럼 하나의 독립변수 또는 여러 독립변수로 종속 변수를 예측하는 것을 말한다.

여기서 a, b, c 와 같은 알파벳은 추정량을 의미하며, X1, X2는 각 변수의 값을 의미한다.

 

즉, 선형회귀에서는 각 변수의 값을 -> 각 추정량과 곱하고 -> 모두 합친 결과가 -> Y로 나오는 것이다.

 

여기서 한가지 개념을 더 살펴보면,

 

 

완전공선성

 

완전공선성은 두 변수가 완전히 선형 관계를 이루는 변수를 의미하는데, 이 경우 최소자승추정치(최소제곱추정량)을 구할 수 없게된다. -> 최소자승추정치 = 오차가 최소가 되게하는 각 변수의 추정량

 

쉽게 말하면, 오차가 가장 적은 함수 식을 구할 수 없다는 말인데,

 

Y = aX1 + bX2

 

라는 다중선형회귀식이 존재할 경우, 만약 X1과 X2가 같다면

 

Y = 1/2 * aX1 + 2 * bX2 와 Y = 2 *aX1 + 1/2 bX2가 같은 결과를 보인다.

 

즉, X1과 X2가 같기 때문에, 각 변수의 추정량이 최소가 되는 값을 찾기 어려워진다는 말이다.

또, 이 말은 어떤 함수에서는 X1이 중요하다고 나오고, 어떤 함수에서는 X2가 중요하다고 나오는 경우가 생긴다.

 

다중공선성은 완전공선성처럼 완전히 선형관계를 이루는 것은 아니지만, 이처럼 영향을 주는 변수를 의미한다.

 

또, 해당 함수를 보면 알겠지만 예측 그 자체에 목적이 있다면, 다중공선성은 문제가 되지 않는다.

 

 

다중공선성 제거해야 하는 경우

 

그럼 어떤 경우에 다중공선성을 제거해야될까?

 

단순히 종속 변수를 예측하는 경우가 아닌, 독립 변수 간의 상관관계를 분석하고, 추정량을 분석하고자 할 때 제거해야함.

ex) 다중선형회귀 분석에서, 각 변수가 예측에 얼마나 많은 영향을 주는지

 

 

다중공선성 예시

 

다중공선성을 예시로 보여주면,

해당 자료는 암컷 게의 위성 수컷 수를 무게와 너비로 예측한 모델이다.

 

 

 

해당 모델을 살펴보면, 몸무게는 양의 가중치가 있지만, 너비는 음의 가중치를 주는 것으로 확인되는데,

 

 

각 변수의 상관관계를 살펴보면, 무게와 너비는 양의 상관관계가 있는 것을 알 수 있다.

즉, 둘의 무게와 너비는 강한 양의 상관관계가 있으나, 모델에서는 너비가 넓을 수록 위성 수가 적다는 잘못된 결과를 보이게 되었다.

 

 

따라서, 다중공선성을 보인 무게를 빼고 모델을 돌릴 경우, 너비는 오히려 양의 상관관계를 보이는 것을 알 수 있다.

하지만, 설명력은 소폭 감소한 것처럼 보이는데 이는 앞선 모델의 경우 다중공선성으로 인해 과적합 되었기 때문이다.

 

다음 글에서는 다중공선성을 vif를 통해 확인하는 방법과 테스트 데이터와 훈련 데이터를 변화시키며 가중치가 변화하는 것을 살펴보겠다.

댓글