본문 바로가기

Machine Learning/회귀(Regression)

Regression - 다중공선성 문제

반응형

회귀분석의 4가지 가정이 있다.

 

 

 

(1) 선형성

 

종속변수 y와 독립변수 x간의 선형성이 있어야 한다.

 

 

(2) 독립성

 

다중 회귀 분석에서 필요한 개념으로 독립 변수 x간의 상관관계가 없어야한다.

 

 

 

(3) 등분산성

 

데이터가 분산이 같게, 특정한 패턴 없이 고루 분포되어 있다.

 

 

(4) 정규성

 

잔차가 정규성을 띄어야 한다.

 

 

 

 

이번 포스팅에선 2번 독립성에서 자주 언급되는 다중공선성을 다뤄본다.

(변수간 상관관계를 가질 때 다중공선성 문제가 생긴다.)

 

 

https://steadiness-193.tistory.com/270

 

Regression - Linear Regression

Linear Regression (선형 회귀) 데이터를 가장 잘 설명해내는 직선을 찾아내는 것. 데이터가 분포되어 있는 공간에서 데이터를 가장 잘 표현하는 선을 긋는 것. 가장 적합간 기울기(가중치, 계수)와 y��

steadiness-193.tistory.com

 

지난 포스팅에선 독립성을 고려하지 않고 모든 특성들을 이용하여 회귀분석을 실시했다.

 

 

이번엔 분석 전 컬럼간 관계를 먼저 살펴보자

 

 

 

pairplot

 

https://steadiness-193.tistory.com/198

 

Seaborn - 관계 그래프 : pairplot

이변수 데이터의 분포 인자로 전달되는 데이터프레임의 열(변수)을 두 개씩 짝 지을 수 있는 모든 조합에 대해서 표현 * 열은 정수/실수형이어야 함 3개의 열이라면 3행 x 3열의 크기로 모두 9개의

steadiness-193.tistory.com

 

그래프를 보니 stat_overall가 stat_potential이 강한 상관관계를 띄고 있다.

 

stat_potential과 reputation도 그러해 보인다.

 

 

 

 

 

 

corr

 

https://steadiness-193.tistory.com/97

 

판다스 - 컬럼(열 or 변수)간 상관계수 : corr

corr함수를 통해 상관계수 연산 (-1, 1 사이의 결과) ㅇ 변수와 상관관계 : 변수간 흐름이 얼마나 비슷한가를 나타내는 척도 - a가 증가하면 b도 증가하냐/감소하냐 - 증가의 성향이 얼마나 비슷한가

steadiness-193.tistory.com

 

pairplot에서 봤던 대로

 

stat_overall, stat_potential, reputation의 상관관계가 0.67, 0.52로 낮지 않은 값을 보이고 있다.

 

 

 

 

 

 

OLS 회귀 결과

 

 

stat_potential과 stat_skill_moves 컬럼이 라벨값과 음의 상관관계를 가지고 있다.

 

 

그러나 실제로는

 

 

 

음의 상관관계를 가지고 있다고 보기 어렵다.

 

다중공선성 문제로 인해 회귀 결과가 잘못 나온 가능성이 높다.

 

 

 

 

 

VIF (분산팽창인자)

 

 

VIF는 독립변수를 다른 독립변수로 선형회귀한 성능을 나타낸 것

 

다른 변수에 의존적일 수록 VIF 값이 커진다.

 

 

variance_inflation_factor의 결과 값이 10 이상이라면 서로 강한 상관관계를 가진다고 볼 수 있다. 

 

 

가장 의존적인 변수로 보이는 stat_overall과 stat_potential 컬럼을 제거하는 방향을 생각해 볼 수 있다.

 

* 다른 변수와 관계가 없다면 VIF는 1값을 가진다.

 

 

 

 

 

stat_overall, stat_potential 컬럼 제거

 

 

VIF 값이 확연히 줄어든 것을 볼 수 있다.

 

 

물론 age는 10 이상의 값을 보이지만 변수가 너무 적어지면 안되기에 그대로 진행한다.

 

 

 

OLS 회귀 결과도 납득할 수 있게 나왔다.

 

 

 

 

 

 

컬럼 제거 전 Linear Regression 결과

 

 

모든 컬럼으로 진행했을 땐 R2 값은 약 0.96을 나타냈다.

 

 

 

 

 

컬럼 제거 후 Linear Regression 결과

 

 

 

컬럼을 제거했는데 기대와 달리 R2값이 약 0.45로 하락했다.

 

 

qastack.kr/stats/168622/why-is-multicollinearity-not-checked-in-modern-statistics-machine-learning

 

최신 통계 / 기계 학습에서 다중 공선 성이 검사되지 않는 이유

 

qastack.kr

그 이유는 위 글에서 찾을 수 있다.

 

 

머신러닝은 계수를 찾는 것 보단 라벨 값을 예측하는 쪽에 포커스가 맞춰져 있습니다.

머신러닝 모델은 수많은 피처(features)가 있을 때 어떤 결과(target)가 있는지 예측하는 것이 목표이므로
각 피처의 계수가 무엇인지는 머신러닝 모델에서 중요하지 않습니다.

머신러닝 모델은 어떤 피처를 전달하면 어떤 결과를 주는가에 관심이 있습니다.

 

 

전통적인 회귀 방식이 아니라 머신러닝의 성능에 초점을 맞춘다면

 

변수 중요도를 기계한테 맡기는 편이 낫다.

 

트리계열의 feature_importances나 permutation importance를 이용하는 방법이 그 예다.

 

위 방법은 추후 포스팅 예정.

 

 

 

참조

datascienceschool.net/view-notebook/36176e580d124612a376cf29872cd2f0/

bkshin.tistory.com/entry/DATA-20-%EB%8B%A4%EC%A4%91%EA%B3%B5%EC%84%A0%EC%84%B1%EA%B3%BC-VIF

https://kkokkilkon.tistory.com/175

반응형