Day 1의 차원 축소가 "새로운 합성 축을 만드는 것"이었다면, 특성 선택(feature selection)은 "쓸모 있는 기존 특성만 남기는 것"이다. 둘 다 차원을 줄이지만, 선택은 원본 특성의 해석 가능성을 보존한다.
과적합 감소: 무관한 특성은 모델이 노이즈를 학습하게 만든다
학습·추론 속도 향상
해석 가능성 상승: 특성이 적을수록 모델 설명이 쉽다
차원의 저주 완화
특성 선택과 PCA는 둘 다 차원을 줄이지만 철학이 다르다. PCA는 원본 특성 전체를 선형 결합해 새 축을 만들므로 결과의 물리적 의미가 사라진다. 선택은 원본 특성의 부분집합을 그대로 남기므로, "어떤 변수가 예측에 사용되었는가"를 설명해야 하는 규제 산업(금융, 의료)에서 선호된다.
Lasso가 특성 선택 효과를 내는 이유는 L1 페널티의 기하 구조 때문이다. L1 제약 영역은 마름모 모양이라 손실 등고선이 꼭짓점(축 위, 즉 계수 = 0)에서 만날 가능성이 높다. L2(Ridge)는 원형이라 계수를 0 쪽으로 줄이기는 해도 정확히 0으로 만드는 일은 드물다. 그래서 "희소 해가 필요하면 L1"이다.
⚠️ 함정: Lasso는 계수 크기에 페널티를 걸므로 스케일링이 선행돼야 한다. 표준화하지 않으면 단위가 큰 변수의 계수가 작아 보여 먼저 0으로 밀려난다.
⚠️ 함정: 특성 선택도 데이터 의존 변환이다. 전체 데이터에서 상관·중요도를 계산해 특성을 고른 뒤 교차검증하면 검증셋 정보가 선택에 새어 든다. 선택은 파이프라인에 넣어 각 fold의 학습 부분에서만 수행해야 한다.
불순도 기반 중요도는 분할 후보가 많은 특성(연속형, 다범주형)을 과대평가하는 편향을 보인다. 순열 중요도는 학습된 모델에서 특성을 무작위로 섞어 성능 하락을 측정하므로 이 편향을 피한다. SHAP은 예측마다 특성 기여도를 가법적으로 분해해 전역·국소 설명을 모두 제공하지만 계산 비용이 크다. 시험에서는 "불순도 기반은 고카디널리티에 편향, 순열·SHAP이 더 신뢰된다"를 기억하면 된다.
두 개 이상의 특성이 강하게 상관되면 다중공선성(multicollinearity)이 생긴다. 선형 모델은 계수가 불안정해지고 해석이 왜곡된다.
진단 지표:
지표
임계값
상관행렬
|r| > 0.8~0.9면 의심
VIF(분산 팽창 계수)
VIF > 5(주의), > 10(심각)
from statsmodels.stats.outliers_influence import variance_inflation_factorimport pandas as pdvif = pd.DataFrame()vif["feature"] = X.columnsvif["VIF"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
처방: 상관된 특성 중 하나를 제거하거나, PCA로 합치거나, L2 정규화(Ridge)로 완화한다.
VIF는 VIF = 1/(1−R²)로 계산하며, 여기서 R²은 한 특성을 나머지 모든 특성으로 회귀했을 때의 결정계수다. R²이 1에 가까워질수록(즉 그 특성이 다른 특성들로 거의 완벽히 예측될수록) VIF가 폭발한다. 주의: 트리 기반 모델은 다중공선성에 둔감하다 — 분할이 한 번에 한 특성만 사용하기 때문이다. 다중공선성은 계수 해석이 중요한 선형 모델에서 치명적이다.
트리 모델에서 상관된 특성이 둘 있으면 중요도가 두 특성에 나뉘어 각각 낮게 나온다. "중요도가 낮으니 버려도 된다"고 판단하면 실제로는 중요한 신호를 통째로 버릴 수 있다.
[원시 특성 수백~수천 개]
│
① 상수 · 준상수 컬럼 제거 (분산 임계값. 정보가 없는 축)
│
② ID · 누수 의심 컬럼 제거 (행을 외우게 만드는 컬럼)
│
③ 필터: 상관 · F-검정 · 상호정보량으로 점수화 → 상위 k개
│
④ 다중공선성 정리 (|r| > 0.8~0.9, VIF > 5~10)
│
⑤ 임베디드: Lasso 또는 트리 중요도로 추가 축소
│
⑥ (여유가 있으면) 래퍼: RFE로 마지막 미세 조정
│
⑦ 교차검증으로 성능 확인 — ③~⑥은 각 fold의 학습 부분에서만 수행