다중공선성 (Multicollinearity)
다중공선성은 회귀 분석에서 독립 변수들 간 강한 상관관계가 존재하는 현상을 의미한다. 독립 변수 간의 상관성이 높을 경우 회귀 분석의 결과가 왜곡될 수 있다.
발생 원인
• 변수 간 높은 상관관계
• 불필요한 중복 변수 포함
• 데이터 변환 과정에서 유사한 변수 생성
• 표본 크기에 비해 변수 개수가 많을 때
문제점
• 회귀 계수의 신뢰성이 낮아짐
• 회귀 계수의 부호 및 크기가 불안정해짐
• 작은 데이터 변화에도 결과가 크게 변동
• 독립 변수의 영향력을 해석하기 어려움
다중공선성 진단 방법
해결 방법
• 변수 제거: 상관관계가 높은 변수 중 하나를 제거
• 주성분 분석 (PCA): 변수 차원을 축소하여 다중공선성을 완화
• 릿지 회귀 (Ridge Regression): 정규화 기법을 활용해 회귀 계수의 변동성을 줄임
• 데이터 수집 확대: 표본 크기를 늘려 다중공선성 영향을 완화
Python을 활용한 다중공선성 확인
import pandas as pd
import numpy as np
from statsmodels.stats.outliers_influence import variance_inflation_factor
from sklearn.datasets import load_diabetes
# 데이터 불러오기
data = load_diabetes()
df = pd.DataFrame(data.data, columns=data.feature_names)
# VIF 계산
vif_data = pd.DataFrame()
vif_data["Feature"] = df.columns
vif_data["VIF"] = [variance_inflation_factor(df.values, i) for i in range(df.shape[1])]
print(vif_data)