예:
income 와 annual_salary 의 상관관계가 0.95 → 사실상 같은 변수 두 개.
이런 변수가 여러 개 있으면
모델이 불필요한 변수에 가중치를 주고
노이즈가 늘어나고
과적합 위험이 올라감.
실무에서는 보통
특히 선형 모델(Logistic Regression, Linear Regression)은 독립 변수끼리 상관이 높으면 다중공선성(multicollinearity) 문제가 생김.
결과:
회귀계수(coefficient)가 불안정하게 변함
데이터가 조금만 바뀌어도 가중치가 크게 요동침
해석이 어려움
실무 현상 예:
상관관계를 보면 다음을 판단할 수 있음.
예:
age → income 상관이 강함 → 나이대별로 income
purchase_amount → label 상관이 강함 → 중요한 feature임이 확인됨
상관이 약함 → feature importance가 낮을 가능성 있음
즉, feature selection/engineering 우선순위를 정할 수 있음.
실무에서 상관행렬은 데이터 오류 탐지 도구라고 보면 됨.
예:
→ ETL 잘못된 것, 단위 오류, merge 오류 가능성.
이런 오류를 초기에 잡기 위해 반드시 상관을 봄.
네, 특히 비선형 모델은 상관이 없어도 학습 잘 됩니다.
예:
RandomForest
XGBoost / LightGBM
Neural Network
이런 모델들은 feature 간 비선형 관계, interaction 을 자동으로 잡아줌.
그래도 “상관을 보는 것”은 여전히 유효합니다.
corr = df.corr()
print(corr)
high_corr = corr.abs() > 0.8
to_drop = [col for col in corr.columns if any(corr[col].abs() > 0.9)]
중복 피처 제거 → 성능과 속도 개선
모델 안정성 확보 → 특히 선형 모델
데이터 문제 탐지
피처 엔지니어링 방향 결정
모델 해석력 향상