Summary
다중공선성(Multicollinearity)은 회귀 분석 및 기계 학습에서 독립 변수(설명 변수) 간에 높은 상관관계가 존재하는 현상이다. 이는 계수 추정의 불안정성과 표준 오차 증가 등 여러 문제를 일으킨다. 분산팽창계수(VIF)를 통해 진단할 수 있으며, VIF가 5~10 이상이면 문제가 될 수 있다. 해결 방법으로는 변수 제거, 변수 변환, 주성분 분석(PCA), 정규화 기법(Ridge, Lasso, Elastic Net) 등이 있다. 데이터의 특성과 분석 목적에 따라 적절한 방법을 선택해야 하며, 예측이 주 목적이라면 다중공선성이 반드시 해결해야 할 문제는 아닐 수 있다. 특히 RTIS(공정 시계열 데이터)와 같은 특수한 데이터 유형에서는 도메인 지식과 결합한 체계적인 접근법이 필요하다.
다중공선성(Multicollinearity)은 회귀 분석 및 기계 학습에서 독립 변수(설명 변수) 간에 높은 상관관계가 존재하는 현상을 말한다. 이 현상은 모델의 안정성과 해석 가능성에 심각한 영향을 미칠 수 있으며, 예측 정확도를 저하시킬 수 있다.
분산팽창계수(VIF, Variance Inflation Factor)
VIF는 다중공선성을 탐지하는 가장 일반적인 지표로, 특정 독립 변수가 다른 모든 독립 변수와 얼마나 강한 선형 관계를 가지는지 측정한다.
계산 공식: VIF(X_j) = 1 / (1 - R²_j)
여기서 R²_j는 변수 X_j를 다른 모든 독립 변수로 회귀한 모델의 결정계수이다.
해석 기준:
- VIF = 1: 다중공선성 없음
- 1 < VIF < 5: 약한 다중공선성
- 5 < VIF < 10: 중간 수준의 다중공선성
- VIF > 10: 강한 다중공선성 (일반적으로 문제가 될 수 있는 수준)
VIF가 높을수록 해당 변수의 계수 추정값이 불안정하고 표준 오차가 커진다. 따라서 통계적 유의성 검정의 신뢰도가 낮아지게 된다.
목차
- 다중공선성의 개념과 발생 원인
- 다중공선성이 발생하는 일반적인 상황
- 다중공선성의 문제점
- 다중공선성 탐지 방법
- 다중공선성 해결 방법
- 데이터 분석 프로세스 내 다중공선성
- 다중공선성과 함께 고려해야 할 개념들
- 실제 사례와 시나리오별 접근법
- 결론 및 추가 자료
다중공선성의 개념과 발생 원인
다중공선성은 회귀 모델에서 두 개 이상의 독립 변수가 서로 강한 선형 관계를 가질 때 발생한다. 예를 들어, 주택 가격을 예측하는 모델에서 ‘주택 면적(m²)‘과 ‘방의 개수’는 일반적으로 높은 상관관계를 가지며 다중공선성이 발생할 가능성이 높다.
다중공선성은 크게 두 가지 유형으로 구분할 수 있다:
-
구조적 다중공선성(Structural multicollinearity): 이는 모델 내에서 항을 생성할 때 발생한다. 예를 들어, X와 X²과 같이 다항식 항을 포함시키거나, 상호작용 항(X₁ × X₂)을 추가할 때 발생한다.
-
데이터 다중공선성(Data multicollinearity): 이는 데이터 자체에 내재된 상관관계로 인해 발생한다. 주로 관찰 데이터에서 흔히 발생하며, 실험 설계가 아닌 자연적으로 수집된 데이터에서 자주 나타난다.
발생 원인
- 변수 간 본질적 관계 - 변수들이 본질적으로 관련되어 있을 때 (예: 키와 몸무게)
- 파생 변수 사용 - 기존 변수에서 파생된 새로운 변수 추가 (예: 나이와 출생 연도)
- 데이터 수집 방법 - 특정 조건에서만 데이터를 수집하여 변수 간 관계가 강화됨
- 모델 구성 오류 - 같은 개념을 측정하는 여러 변수를 포함시킴
- 불충분한 샘플 크기 - 독립 변수 수에 비해 데이터 샘플이 충분하지 않음
다중공선성은 완전 다중공선성(Perfect Multicollinearity)과 불완전 다중공선성(Imperfect Multicollinearity)으로 구분할 수 있다:
- 완전 다중공선성: 하나의 독립 변수가 다른 독립 변수들의 선형 조합으로 완전히 표현될 수 있는 경우
- 불완전 다중공선성: 독립 변수들 간에 높은 상관관계가 있지만 완전한 선형 관계는 아닌 경우
다중공선성이 발생하는 일반적인 상황
다중공선성이 자주 발생하는 분석 상황들은 다음과 같다:
- 사회과학 연구 - 많은 사회경제적 요인들이 서로 연관되어 있을 때
- 마케팅 분석 - 여러 마케팅 채널의 효과를 동시에 측정할 때
- 금융 모델링 - 여러 금융 지표가 경제 상황에 유사하게 반응할 때
- 의료 연구 - 여러 건강 지표가 상호 연관되어 있을 때
- 부동산 가격 예측 - 여러 지리적, 물리적 특성이 연관되어 있을 때
- 시계열 데이터 분석 - 시간적으로 인접한 데이터 포인트가 높은 상관관계를 가질 때
- 고차원 데이터 - 피처 수가 관측치 수보다 훨씬 많은 경우
다중공선성의 문제점
다중공선성은 회귀 분석과 기계 학습에서 여러 문제를 일으킬 수 있다:
- 계수 추정의 불안정성 - 작은 데이터 변화에도 계수 추정값이 크게 변할 수 있음
- 표준 오차 증가 - 계수 추정값의 표준 오차가 증가하여 통계적 유의성 검정이 어려워짐
- 해석 오류 - 변수 간 상호작용으로 인해 개별 변수의 영향력을 정확히 파악하기 어려움
- 과적합 위험 증가 - 훈련 데이터에 과도하게 맞춰진 모델이 생성될 수 있음
- 예측 정확도 저하 - 테스트 데이터에 대한 예측 성능이 저하될 수 있음
- 수치적 불안정성 - 행렬 연산에서 수치적 문제가 발생할 수 있음
다중공선성 탐지 방법
다중공선성을 탐지하는 여러 방법이 있으며, 각각 장단점이 있다:
1. 상관 행렬(Correlation Matrix)
가장 기본적인 방법으로, 변수 간 피어슨 상관계수를 계산하여 행렬로 시각화한다. 일반적으로 상관계수가 ±0.7 이상이면 강한 상관관계로 간주한다.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 상관 행렬 계산
correlation_matrix = df[features].corr()
# 히트맵으로 시각화
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', vmin=-1, vmax=1)
plt.title('Feature Correlation Matrix')
plt.show()
장점: 이해하기 쉽고 구현이 간단함
단점: 두 변수 간의 관계만 볼 수 있으며, 여러 변수 간의 복합적인 관계는 확인할 수 없음
2. 분산 팽창 요인(VIF, Variance Inflation Factor)
VIF는 특정 독립 변수가 다른 모든 독립 변수와 얼마나 강한 선형 관계를 가지는지 측정한다. VIF 값이 높을수록 해당 변수의 다중공선성이 높다.
VIF 계산 공식: VIF(X_j) = 1 / (1 - R²_j)
여기서 R²_j는 변수 X_j를 다른 모든 독립 변수로 회귀한 모델의 결정계수이다.
from statsmodels.stats.outliers_influence import variance_inflation_factor
# VIF 계산 함수
def calculate_vif(df, features):
vif_data = pd.DataFrame()
vif_data["Feature"] = features
vif_data["VIF"] = [variance_inflation_factor(df[features].values, i)
for i in range(len(features))]
return vif_data.sort_values("VIF", ascending=False)
# VIF 값 계산 및 출력
vif_result = calculate_vif(df, features)
print(vif_result)
VIF 값 해석:
VIF 값 | 다중공선성 정도 |
---|---|
VIF = 1 | 다중공선성 없음 |
1 < VIF < 5 | 약한 다중공선성 |
5 < VIF < 10 | 중간 수준의 다중공선성 |
VIF > 10 | 강한 다중공선성 (일반적으로 문제가 될 수 있는 수준) |
장점: 각 변수가 다른 모든 변수와 갖는 관계를 종합적으로 측정
단점: 계산 비용이 높고, 비선형 관계는 감지할 수 없음
3. 조건수(Condition Number)
조건수는 설계 행렬(X)의 최대 고유값과 최소 고유값의 비율로, 다중공선성의 정도를 전반적으로 평가한다.
import numpy as np
# 조건수 계산
X = df[features].values
X_standardized = (X - X.mean(axis=0)) / X.std(axis=0)
eigenvalues = np.linalg.eigvals(X_standardized.T @ X_standardized)
condition_number = np.sqrt(max(eigenvalues) / min(eigenvalues))
print(f"Condition Number: {condition_number}")
조건수 해석:
조건수 | 다중공선성 정도 |
---|---|
조건수 < 10 | 다중공선성 문제 없음 |
10 ≤ 조건수 < 30 | 약간의 다중공선성 존재 |
조건수 ≥ 30 | 심각한 다중공선성 문제 존재 |
장점: 전체 데이터셋의 다중공선성을 하나의 숫자로 평가
단점: 어떤 변수가 문제인지 정확히 알 수 없음
4. 공차(Tolerance)
공차는 VIF의 역수로, 값이 작을수록 다중공선성이 높다.
공차 계산 공식: Tolerance(X_j) = 1 / VIF(X_j) = 1 - R²_j
공차 해석:
공차 값 | 다중공선성 정도 |
---|---|
공차 > 0.2 | 다중공선성 문제 없음 |
0.1 < 공차 ≤ 0.2 | 약간의 다중공선성 존재 |
공차 ≤ 0.1 | 심각한 다중공선성 문제 존재 |
장점: VIF와 동일한 정보를 다른 관점에서 제공
단점: VIF와 마찬가지로 비선형 관계는 감지할 수 없음
5. 주성분 분석(PCA)
PCA를 통해 변수 간 선형 의존성을 확인할 수 있다. 작은 고유값(eigenvalue)을 가진 주성분이 존재한다면 다중공선성이 있을 가능성이 높다.
from sklearn.decomposition import PCA
# PCA 적용
pca = PCA()
pca.fit(df[features])
# 고유값과 설명된 분산 비율 확인
eigenvalues = pca.explained_variance_
explained_variance_ratio = pca.explained_variance_ratio_
# 결과 시각화
plt.figure(figsize=(10, 6))
plt.bar(range(1, len(eigenvalues) + 1), eigenvalues)
plt.xlabel('Principal Component')
plt.ylabel('Eigenvalue')
plt.title('Scree Plot for PCA')
plt.show()
장점: 데이터의 구조를 종합적으로 분석
단점: 결과 해석이 복잡할 수 있음
다중공선성 해결 방법
다중공선성 문제를 해결하기 위한 접근법은 데이터의 특성과 분석 목적에 따라 선택해야 한다. 일반적으로 다음과 같은 방법들이 사용된다:
1. 변수 제거 및 선택 기법
다중공선성이 높은 변수들 중 일부를 제거하는 방법으로, 가장 간단하고 직관적인 접근법이다.
변수 제거 프로세스:
- 모든 변수에 대한 VIF 계산
- VIF가 가장 높은 변수 식별 및 제거(일반적으로 임계값 10 사용)
- 남은 변수들로 VIF 재계산
- 모든 VIF가 임계값 미만이 될 때까지 반복
장점: 구현이 간단하고 해석하기 쉬운 모델을 얻을 수 있음
단점: 제거된 변수에 중요한 정보가 있을 경우 모델 성능이 저하될 수 있음
2. 차원 축소 기법
주성분 회귀(PCR)
원래 변수들을 서로 상관관계가 없는 주성분으로 변환한 후, 이 주성분들을 회귀 분석에 사용한다.
장점: 다중공선성 문제를 완전히 제거하면서 정보 손실 최소화
단점: 주성분이 원래 변수의 조합이므로 모델 해석이 어려워짐
부분 최소 제곱법(PLS)
PCR과 유사하지만, 주성분을 추출할 때 종속 변수 정보도 고려하여 더 효과적으로 차원을 축소한다.
장점: PCR보다 종종 더 나은 예측 성능을 보임
단점: PCR과 마찬가지로 해석이 어려워질 수 있음
3. 정규화 회귀 기법
Ridge 회귀와 Lasso 회귀 비교
Ridge와 Lasso는 다중공선성 문제를 해결하기 위한 정규화 회귀 기법으로, 다음과 같은 특징과 차이점을 가진다:
특성 | Ridge 회귀 | Lasso 회귀 |
---|---|---|
정규화 유형 | L2 정규화 (계수 제곱합에 벌점) | L1 정규화 (계수 절대값 합에 벌점) |
목적 함수 | min(RSS + λ·Σβⱼ²) | min(RSS + λ·Σ|βⱼ|) |
계수 영향 | 모든 계수를 0에 가깝게 축소하지만, 0으로 만들지 않음 | 덜 중요한 변수의 계수를 정확히 0으로 만듦 (변수 제거 효과) |
변수 선택 | 자동 변수 선택 효과 없음 | 자동 변수 선택 기능 내장 |
다중공선성 처리 | 상관된 변수들의 계수를 비슷한 값으로 분산시킴 | 상관된 변수들 중 일부만 선택하고 나머지는 제외 |
사용 상황 | 모든 변수가 어느 정도 중요하다고 생각될 때 | 불필요한 변수를 제거하고 모델을 단순화하고 싶을 때 |
해석 용이성 | 낮음 (모든 변수가 유지됨) | 높음 (불필요한 변수가 제거되므로) |
Elastic Net
Ridge와 Lasso의 혼합형으로, 두 정규화 방식의 장점을 결합한다.
목적 함수: min(RSS + λ₁·Σ|βⱼ| + λ₂·Σβⱼ²)
Elastic Net은 특히 변수 수가 샘플 수보다 많은 경우나, 높은 상관관계를 가진 변수 그룹이 존재하는 경우에 효과적이다.
4. 변수 변환 기법
변수 결합
높은 상관관계를 가진 변수들을 하나의 복합 변수로 결합한다.
예: 키와 몸무게 → BMI
비율 또는 차이 사용
두 변수 간의 비율이나 차이를 새로운 변수로 사용한다.
예: 판매액과 비용 → 이익률
장점: 도메인 지식을 활용하여 의미 있는 변수 생성 가능
단점: 적절한 변환을 찾기 위해 도메인 전문성 필요
5. 독립 변수 중심화(Centering)
구조적 다중공선성을 줄이는 간단한 방법으로, 각 독립 변수에서 해당 변수의 평균을 빼는 방식으로 변수를 중심화한다. 특히 다항식 항이나 상호작용 항이 있는 모델에서 효과적이다.
장점:
- 구조적 다중공선성을 크게 감소시킬 수 있음
- 원래 계수의 해석을 그대로 유지할 수 있음
- 구현이 매우 간단함
적용 방법:
- 각 연속형 독립 변수의 평균 계산
- 각 관측값에서 평균을 뺌
- 중심화된 변수로 모델 구축
- 상호작용 항은 중심화된 변수들로 계산
중심화된 변수를 사용하면 VIF가 크게 감소하는 경우가 많으며, 계수의 정밀도가 향상되어 보다 신뢰할 수 있는 p값을 얻을 수 있다.
다중공선성 처리 프로세스
데이터 분석 워크플로우에서 다중공선성을 체계적으로 처리하기 위한 단계:
1. 탐색 및 진단 단계
- 상관 행렬 분석
- VIF 계산 및 평가
- 조건수 확인
- 주성분 분석을 통한 구조 파악
2. 처리 방법 선택
- 예측이 목적이라면: 정규화 기법(Ridge, Lasso) 또는 차원 축소(PCA, PLS)
- 해석이 목적이라면: 변수 선택 또는 변수 변환
- 데이터가 고차원이라면: Lasso 또는 Elastic Net
3. 모델 평가 및 검증
- 교차 검증을 통한 모델 안정성 확인
- 다중공선성 처리 전후 성능 비교
- 최종 모델의 일반화 능력 평가
다중공선성 해결이 필요한 경우와 필요하지 않은 경우
다중공선성을 항상 해결해야 하는 것은 아니다. 다음 세 가지 상황을 고려하여 다중공선성 처리 여부를 결정할 수 있다:
-
다중공선성의 심각도: 중간 정도의 다중공선성(VIF < 5)은 반드시 처리할 필요가 없을 수 있다.
-
관심 변수의 영향: 다중공선성이 주요 관심 변수에 영향을 미치지 않는다면 처리하지 않아도 될 수 있다. 예를 들어, 실험 변수는 다중공선성의 영향을 받지 않고 통제 변수만 영향을 받는 경우, 실험 변수의 해석에는 문제가 없다.
-
분석 목적: 예측이 주목적이고 변수 간 관계를 해석할 필요가 없다면, 다중공선성을 처리하지 않아도 된다. 다중공선성은 계수와 p값에 영향을 미치지만, 예측 정확도나 적합도 통계량에는 영향을 미치지 않는다.
“일부 또는 모든 예측 변수 간에 상관관계가 있다는 사실은 일반적으로 좋은 적합도를 얻거나 평균 응답에 대한 추론이나 새로운 관측치의 예측에 영향을 미치지 않는다.” —Applied Linear Statistical Models, p289, 4th Edition.
특수 데이터 유형의 다중공선성 처리
시계열 데이터의 다중공선성
시계열 데이터에서는 시간적 의존성으로 인해 추가적인 다중공선성 문제가 발생할 수 있다:
- 자기상관(autocorrelation)으로 인한 시차 변수 간 상관관계
- 계절성으로 인한 주기적 패턴의 상관관계
처리 방법:
- 차분화(differencing)를 통한 추세 제거
- 시차 변수 선택 시 ACF/PACF 분석 활용
- 계절성 조정 또는 계절 더미 변수 사용
공정 시계열 데이터(RTIS)의 다중공선성 처리
RTIS(Real-Time Information System) 공정 데이터는 여러 센서에서 수집된 정보로 구성되며, 물리적으로 연관된 프로세스를 측정하기 때문에 높은 다중공선성이 발생한다.
1. 센서 데이터 전처리 및 필터링
신뢰도 기반 센서 선택:
- 결측치 비율이 낮은 센서 우선 선택
- 변동성이 적절한 센서 선택 (너무 낮거나 높으면 센서 오작동 가능성)
- 물리적으로 타당한 값 범위를 가진 센서 선택
시간적 관계 분석:
- 시차 상관관계(lagged correlation) 분석
- 그랜저 인과성 검정을 통한 인과관계 파악
2. 체계적 변수 선택 접근법
접근법 | 설명 | 적용 상황 |
---|---|---|
도메인 지식 기반 그룹화 | 물리적 원리에 따라 센서 그룹화 (온도, 압력, 유량 등) | 공정에 대한 전문 지식이 있을 때 |
클러스터링 기반 대표 센서 선택 | 상관관계 높은 센서 클러스터에서 대표 센서 선택 | 센서 간 관계가 명확하지 않을 때 |
Lasso 기반 변수 선택 | Lasso 회귀로 중요 센서 자동 선택 | 예측 성능이 중요할 때 |
시간 지연 특성 활용 | 공정 흐름에 따른 시간 지연 적용 | 공정 단계 간 시간 지연이 있을 때 |
3. RTIS 데이터 다중공선성 처리 파이프라인
-
데이터 품질 평가
- 센서별 신뢰도 점수 계산
- 불안정한 센서 식별 및 필터링
-
다중공선성 진단
- 상관관계 행렬 및 VIF 분석
- 시간 지연을 고려한 확장 상관관계 분석
-
변수 축소 전략 구현
- 필수 센서 보존
- 상관 센서 클러스터링 및 대표 선택
- Lasso 기반 최종 변수 선정
-
모델 구축 및 검증
- 시간적 교차 검증 적용
- 센서 장애 시나리오 대비 견고성 검증
이러한 접근법은 공정 데이터의 특성을 고려하면서 피처 수를 효과적으로 줄이고, 안정적인 예측 모델을 구축하는 데 도움이 된다.
결론
다중공선성은 통계 모델과 기계 학습에서 자주 발생하는 문제지만, 적절한 진단과 처리 방법을 통해 효과적으로 관리할 수 있다. 데이터의 특성과 분석 목적에 따라 다양한 접근법을 선택적으로 적용하여 모델의 안정성과 예측 성능을 향상시킬 수 있다.
중요한 것은 다중공선성을 단순히 해결해야 할 문제로 바라보는 것이 아니라, 데이터의 구조를 이해하고 이를 모델링 과정에 반영하는 기회로 활용하는 것이다. 특히 공정 데이터와 같은 특수한 데이터 유형에서는 도메인 지식과 통계적 방법을 결합한 체계적인 접근이 필요하다.
다중공선성이 존재한다고 해서 항상 문제가 되는 것은 아니다. 모델의 주목적이 예측이라면 다중공선성은 예측 성능에 영향을 미치지 않는다. 또한, 구조적 다중공선성은 변수 중심화와 같은 간단한 방법으로 해결할 수 있다. 따라서 다중공선성을 처리하기 전에 그것이 실제로 해결해야 할 문제인지 신중히 판단해야 한다.
추천 자료
- James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013). An Introduction to Statistical Learning. Springer.
- Kutner, M. H., Nachtsheim, C. J., Neter, J., & Li, W. (2005). Applied Linear Statistical Models.
- Kuhn, M., & Johnson, K. (2013). Applied Predictive Modeling. Springer.
- Hastie, T., Tibshirani, R., & Friedman, J. (2009). The Elements of Statistical Learning. Springer.
- Frost, J. “Multicollinearity in Regression Analysis: Problems, Detection, and Solutions”
- Kim, J. H. (2019). Multicollinearity and misleading statistical results. Korean Journal of Anesthesiology, 72(6), 558-569.
- Salmerón-Gómez, R., Garćıa-Garćıa, C. B., & Garćıa-Pérez, J. (2020). Overcoming the inconsistences of the variance inflation factor: a redefined VIF and a test to detect statistical troubling multicollinearity.