머신러닝 알고리즘 선택

src/content/documents/machine-learning/ml-algorithm-selection-guide.json

좋은 알고리즘은 성능표가 아니라 상황이 정한다

지금까지 다룬 의사결정나무·랜덤포레스트·부스팅(XGBoost·LightGBM·CatBoost)·SVM·정규화 회귀(LASSO·Ridge)는 저마다 강점을 발휘하는 상황이 다르다. “다 돌려보고 제일 성능 좋은 걸 쓴다”보다, 설명 가능성·데이터 규모·변수 성격 같은 데이터와 문제의 조건을 먼저 보고 후보를 좁히는 편이 재현성과 설명력 모두에서 안전하다.

상황별 1순위 후보

상황

1순위 후보

이유

정확도보다 설명 가능성이 우선이다 (예: 대출 심사 거절 사유를 규제 담당자에게 설명)

Decision Tree

단일 트리는 분기 규칙을 그림 한 장으로 보여줄 수 있어 이유 설명에 가장 적합하다.

튜닝에 시간을 많이 쓰지 않고 빠르게 안정적인 기준 성능을 잡고 싶다

Random Forest

튜닝 시간을 아끼면서도 견고한(robust) 베이스라인을 잡기 좋다. 기본 설정 성능이 좋은 CatBoost도 후보다.

정형 데이터 예측 대회처럼 마지막 한 방울의 정확도까지 짜내야 한다

XGBoost

부스팅 계열 중에서도 검증된 성능으로 널리 쓰인다.

수천만 행 규모이고 학습 속도·메모리 효율이 정확도만큼 중요하다

LightGBM

Leaf-Wise 히스토그램 방식으로 대용량 데이터에서 상대적으로 빠르다.

고유값이 많은 범주형 변수가 다수이고 인코딩 전처리에 손대고 싶지 않다

CatBoost

범주형 변수를 native로(전처리 없이) 처리한다.

표본은 수백 개인데 변수는 수천 개이고(예: 유전자 발현, 텍스트) 비선형 경계가 필요하다

SVM

고차원 데이터에 강하다. 관계가 대체로 선형이라면 LASSO를 먼저 고려한다.

변수가 수백 개이고 대체로 선형 관계이며, 진짜 중요한 변수만 남긴 해석 가능한 모델이 필요하다

LASSO

L1 패널티가 불필요한 계수를 정확히 0으로 만들어 자동으로 변수를 골라낸다. 변수 선택과 다중공선성 처리를 함께 원하면 Elastic Net도 고려한다.

겹치는 기준을 정리하면

  • 설명이 곧 목적 → Decision Tree. 성능보다 “왜 이런 결과가 나왔는지”를 그림으로 보여줘야 할 때.

  • 정확도가 곧 목적 → XGBoost·LightGBM 같은 부스팅 계열. 대신 과적합·해석 난이도라는 비용을 감수해야 한다.

  • 전처리 시간을 아끼고 싶을 때 → Random Forest(튜닝 부담 적음), CatBoost(범주형 전처리 불필요).

  • 표본보다 변수가 훨씬 많을 때 → 비선형이면 SVM, 선형이면 LASSO.

scikit-learn 공식 문서의 “Choosing the right estimator” 플로차트도 같은 철학을 따른다 — 데이터 크기, 라벨 유무, 예측 대상(범주/수치)에 따라 시도해볼 알고리즘의 우선순위를 제시하고, 맞지 않으면 다음 후보로 넘어가라고 안내한다.

정리

“다 해봤더니 이게 제일 좋았다”보다 “데이터를 보니 이런 모양이라 이 모델을 선택했다”가 되어야 한다. 설명 가능성이 필요하면 Decision Tree, 정확도가 최우선이면 부스팅 계열, 전처리·튜닝 시간을 아끼고 싶으면 Random Forest나 CatBoost, 표본보다 변수가 훨씬 많으면 데이터가 선형인지 비선형인지에 따라 LASSO 또는 SVM을 먼저 검토한다. 이 시리즈에서 다룬 기준은 출발점일 뿐이며, 실제로는 후보 2~3개를 골라 검증 데이터 성능으로 최종 확인하는 과정이 항상 필요하다.

참고 자료

Choosing the right estimator — scikit-learn 공식 문서 — 데이터 조건별 알고리즘 선택 플로차트 (2026-08-07 확인)

댓글 0

댓글을 불러오는 중…