Feature Selection이란?
데이터 공부를 하다 보면 자주 마주치는 개념 중 하나가 바로 Feature Selection이다.
말 그대로 필요한 정보만 뽑아서 모델이 더 효율적으로 학습할 수 있도록 도와주는 작업이다.
데이터 분석을 하다 보면 수십, 수백 개의 변수(feature)들을 다룰 때가 많은데,
그중에는 예측에 거의 영향을 주지 않는 변수들도 섞여 있다.
이러한 불필요한 변수를 덜어내고 의미 있는 것만 남기는 과정이 Feature Selection이다.
Feature Selection을 하는 이유?
요약하자면 성능, 해석력, 효율성까지 다 잡기 위한 과정이다.
- 모델을 더 해석하기 쉽게 만들고
- 학습 속도도 빨라지고
- 차원이 줄어드니까 과적합 위험도 줄어들고
- 특정 모델이 요구하는 데이터 형태에 더 잘 맞춰줄 수도 있다.
Feature Selection의 세 가지 방법
1. Wrapper Method (모델 기반 방식)
마치 "이 조합이 좋아? 저 조합이 더 낫나?" 하면서
여러 feature 조합을 직접 모델에 넣어보고 성능을 측정하는 방식이다.
특정 모델에 딱 맞는 최적의 feature 조합을 찾을 수 있다는 장점이 있지만,
연산량이 많고, 과적합 위험이 있기 때문에 주의해야 한다.
Wrapper Method에는 다음 방식들이 있다.
- Forward Selection: 하나씩 feature를 추가하면서 모델 성능을 살펴봄
- Backward Elimination: 모든 feature에서 시작해서 하나씩 제거
- RFE (Recursive Feature Elimination): 영향 적은 feature를 반복적으로 제거
2. Filter Method (모델 없이 통계적으로)
모델에 넣어보기 전에, 그냥 feature 자체의 통계적 특성만 보고 판단하는 방식이다.
예를 들어
- 피어슨 상관계수
- 카이제곱 검정
- 상호정보량(Mutual Information) 등등
이 방식은 계산이 빠르고 일반화에도 강하지만,
모델에 직접 넣어보는 게 아니기 때문에 예측 성능에 꼭 최적화되어 있다고 볼 수는 없다.
3. Embedded Method (모델 훈련 중에 알아서 고르는 방식)
이건 모델이 학습하면서 중요하지 않은 feature는 알아서 줄이는 방식이다.
예를 들면
- LASSO (L1 정규화)
- Elastic Net
- Regularized Tree
등이 있다.
이 방식은 학습과 Feature Selection을 동시에 할 수 있어서 효율적이지만,
특정 모델에 너무 의존적일 수 있다는 단점이 있다.
상관계수란?
두 변수 사이에 관계가 있긴 있는 건지? 있다면 얼마나 강하게?
이걸 숫자 하나로 나타내주는 지표가 바로 상관계수이다.
- +1: 완벽한 양의 상관
- 0: 무관함
- -1: 완벽한 음의 상관
상관계수가 높다는 건 → 두 변수가 서로 정보를 많이 공유한다는 뜻이다.
상관계수의 종류 세 가지
1. 피어슨 상관계수
- 연속형 변수, 정규분포를 전제로
- 선형관계가 클수록 값이 +1 또는 -1에 가까움
2. 스피어만 상관계수
- 순위(rank) 간의 관계
- 정규성 필요 X → 비모수적 방법
- 관계가 비선형이라도 단조(monotonic) 하면 적용 가능
- 단조 증가(monotonic increasing): X가 커질수록 Y도 커지는 경향
- 단조 감소(monotonic decreasing): X가 커질수록 Y는 작아지는 경향
단조(monotonic)란?
변수 X가 증가할수록 변수 Y도 증가하거나, 감소하는 방향이 일정하게 유지되는 관계
즉, 관계의 방향이 한쪽으로만 가는 경우
3. 켄달 순위 상관계수
- 일치하는 쌍(C), 불일치하는 쌍(D)의 수로 계산
- 소규모 데이터에 강하고 이상치에도 덜 민감하다.
세 상관계수 비교 요약
종류 | 데이터 | 관계 유형 | 정규성 | 이상치 민감도 |
---|---|---|---|---|
피어슨 | 연속형 | 선형 | 필요 | 민감 |
스피어만 | 순서형/연속형 | 단조 | 불필요 | 비교적 강건 |
켄달 | 순서형 | 단조 | 불필요 | 가장 강건 |
다중공선성? 변수끼리 너무 친하면 생기는 문제
회귀 분석을 할 때 설명변수들끼리 너무 비슷하면…
→ 모델이 헷갈린다 😵💫
예측력은 떨어지고, 해석도 어렵고, 가중치도 들쭉날쭉...
VIF(분산팽창지수) 값이 10 이상이면 위험 신호로 판단한다.
이럴 땐 Feature Selection 또는 차원 축소(PCA 등)이 필요하다.
카이제곱 검정 (Chi-square)
범주형 변수 간의 독립성을 확인할 때 사용한다.
Observed vs Expected 비교해서 χ² 값 계산
- χ²가 클수록 → 두 변수는 연관성이 클 가능성↑
- p-value < 0.05 → 귀무가설 기각 → 의미 있는 변수
- 귀무가설: X와 Y는 독립이다
자유도(DF)는 아래와 같이 계산한다.
- DF = (행 수 - 1) × (열 수 - 1)
상호 정보량 (Mutual Information, MI)
상호정보량은 말 그대로,
X와 Y가 서로 공유하는 정보가 얼마나 되는지 알려주는 지표이다.
- 값이 클수록 → 정보 공유 많음 → 중요한 변수
- 0에 가까울수록 → 독립적
피어슨처럼 선형 관계만 보는 게 아니라 비선형 관계까지도 잘 잡아낸다.
변수 관계 예시로 감 잡기
1. 독립 예시 - 주사위
- P(X=1) ~ P(X=6) = 1/6
- P(Y=1) ~ P(Y=6) = 1/6
→ 서로 완전한 독립 (MI = 0)
2. 공부 시간(X) - 시험 점수(Y)
학생 | 공부시간 | 시험점수 |
---|---|---|
1 | 1시간 | 50점 |
2 | 2시간 | 60점 |
3 | 3시간 | 70점 |
4 | 4시간 | 85점 |
5 | 5시간 | 90점 |
→ 양의 상관관계 명확! (피어슨, MI 모두 높게 나옴)
3. 직업(X) - 소득 수준(Y)
ID | 직업 | 소득 |
---|---|---|
1 | DS | 높음 |
2 | DS | 높음 |
3~6 | DA | 중간 |
7~8 | DE | 낮음 |
9 | DS | 높음 |
10 | DA | 중간 |
- 직업 분포: DS 3명, DA 5명, DE 2명
- 소득 분포: 높음 3명, 중간 5명, 낮음 2명
→ 카이제곱 검정 & MI 계산 모두 가능
마무리
이처럼 Feature Selection은 모델의 성능을 최적화할 뿐만 아니라 분석을 보다 효과적으로 만드는 중요한 과정이다.
Reference