P4-8.1 모델 선택(model selection)¶
Section ID:
P4-8.1Version:v2026.07.24
P4-7에서는 어떤 입력을 남기고, 그 입력을 어떤 표현으로 바꿀지 봤습니다. 이제 다음 질문으로 넘어갑니다.
그 입력을 어떤 종류의 모델에게 맡길 것인가?
이 질문이 바로 모델 선택(model selection)의 출발점입니다.
종종 모델 선택을 가장 유명한 알고리즘을 고르는 일처럼 이해합니다. 하지만 실제로는 반대에 가깝습니다. 모델 선택은 문제의 형태, 데이터의 성질, 설명 가능성, 계산 비용, 운영 조건을 함께 보고 후보를 좁히는 일입니다.
학술 문맥에서도 모델 선택(model selection)은 주변적인 선택이 아닙니다. 통계(statistics)와 머신러닝(machine learning)에서는 관측된 데이터와 목적 함수(objective) 아래에서 여러 후보 모형(model candidates) 가운데 어떤 모형을 채택할지 판단하는 문제가 독립된 주제로 다뤄집니다. 즉, 모델 선택은 알고리즘 이름을 고르는 취향 문제가 아니라 주어진 문제와 제약에 대해 어떤 가설 구조를 먼저 시험할 것인가를 정하는 단계입니다.
모델 선택은 문제를 풀기 위해 시험해 볼 모델 후보군을 세우고, 그 후보군을 비교 가능한 형태로 좁혀 가는 일입니다.
이 절은 모델 선택(model selection), 후보 모델(model candidate), 문제 형태와 제약으로 후보를 좁히는 판단을 설명합니다. 뒤 절에서는 이 손잡이를 바탕으로 현재 맥락의 판단을 이어 가고, 어떤 모델 서랍을 먼저 열어야 하는지 정하는 기준은 이 절과 개념사전을 기준으로 다시 연결합니다.
가장 빠른 출발점은 다음 표입니다.
| 지금 보는 문제 | 독자용 첫 질문 | 처음 떠올릴 후보군 |
|---|---|---|
| 분류 | 둘 이상 class를 나누는가? | 로지스틱 회귀, 결정트리, k-NN |
| 회귀 | 연속값을 맞히는가? | 선형회귀, 트리 회귀 |
| 군집화 | 라벨 없이 묶음을 찾는가? | k-means, DBSCAN |
이 표의 목적은 정답을 찍는 것이 아니라, 문제를 보고 어느 서랍을 먼저 열어야 하는가를 알게 하는 것입니다.
모델 선택(model selection)에서 닫을 질문¶
이 절은 다음 질문에 답합니다.
- 모델 선택(model selection)은 무엇을 고르는 일인가?
- 왜 모델을 하나만 외우는 방식으로는 실무 문제를 다루기 어려운가?
- 문제 유형과 데이터 조건에 따라 어떤 모델 계열을 먼저 떠올릴 수 있는가?
- 성능 외에 어떤 기준이 모델 선택에 들어오는가?
이 절은 먼저 문제와 제약을 보고 어떤 모델 후보군을 세울 것인가를 닫습니다. 교차검증의 기본 역할은 P4-4.2와 P4-9.2에서 다시 연결하고, 정보 기준, AutoML, 대규모 탐색 시스템은 P4-9.3 보충학습에서 고급 모델 선택과 자동화 관점으로 이어집니다.
모델 선택(model selection)에서 남길 판단 기준¶
- 모델 선택을
후보 모델 집합에서 문제에 맞는 선택지를 좁히는 일로 설명할 수 있습니다. - 문제 유형, 데이터 크기, 특징 표현, 해석 가능성, 속도 요구가 모델 선택에 영향을 준다는 점을 말할 수 있습니다.
- 하나의 정답 모델을 찾기보다
합리적인 후보군(candidate set)을 세우는 사고를 사용할 수 있습니다. - 뒤 절의 기준 모델(baseline), 하이퍼파라미터(hyperparameter), 알고리즘 입문과 어떻게 이어지는지 설명할 수 있습니다.
학습 배경¶
Part 4은 지금까지 다음 흐름으로 왔습니다.
- P4-4: 데이터를 어떻게 나눌 것인가
- P4-5: 일반화가 왜 어려운가
- P4-6: 무엇을 기준으로 평가할 것인가
- P4-7: 어떤 입력을 남기고, 어떤 표현으로 바꿀 것인가
여기까지 정리하면 이제야 비로소 모델을 고를 조건이 생깁니다.
즉, 모델 선택은 앞 절들을 다 본 뒤에야 제대로 다룰 수 있는 절입니다. 데이터 분리 없이 모델을 고르면 평가가 흔들리고, 평가 기준 없이 모델을 고르면 무엇이 더 좋은지 판단할 수 없고, 특징과 전처리 없이 모델을 고르면 입력과 맞지 않는 선택을 하게 됩니다.
따라서 이 절은 커리큘럼상 다음 역할을 합니다.
| 커리큘럼 위치 | 모델 선택 절의 역할 |
|---|---|
| 특징/전처리 뒤 | 어떤 입력 표현에 어떤 모델이 맞는지 생각하게 함 |
| 기준 모델 전 | 비교 시작점을 세우기 위한 후보군 정리 |
| 알고리즘 입문 전 | 뒤에서 배울 알고리즘들을 어디에 써야 하는지 큰 지도를 제공 |
즉, 이 절은 알고리즘 백과사전이 아니라 알고리즘 지형도 역할을 합니다.
커리큘럼적으로 보면 이 절은 Part 4의 흐름이 데이터를 공정하게 다루는 단계에서 실제로 어떤 실험을 시작할 것인가로 넘어가는 경계이기도 합니다.
- P4-4에서는 데이터를 어떻게 나눌지 봤습니다.
- P4-5에서는 일반화와 과적합을 봤습니다.
- P4-6에서는 무엇을 기준으로 평가할지 봤습니다.
- P4-7에서는 어떤 입력을 남기고 어떻게 표현할지 봤습니다.
그 다음에야 비로소 다음 질문이 성립합니다.
이제 어떤 모델 계열을 후보로 올려야 하는가?
즉, 모델 선택은 앞 절들의 결과를 한곳에 모아 실험 설계의 첫 선택지로 바꾸는 절입니다. 그래서 이 절은 뒤의 P4-8.2 기준 모델(baseline), P4-9 하이퍼파라미터 튜닝(hyperparameter tuning), P4-10 이후 알고리즘 입문 절의 입구 역할을 합니다.
즉, 모델 선택은 갑자기 나타나는 절이 아니라, 데이터 분리, 일반화, 평가 기준, 특징 설계를 모아 다음 실험을 설계하는 절입니다. 그 다음에는 baseline과 튜닝으로 비교 구조를 만들고, 뒤의 알고리즘 장으로 들어가게 됩니다.
이때 P4-6에서 본 평가 기준을 그대로 끌고 와야 합니다. 후보군을 세울 때는 누가 점수가 가장 높을까만 묻지 않고, 어떤 오류 유형을 줄여야 하는가, 혼동 행렬에서 어느 칸을 특히 줄여야 하는가, 나중에 baseline과 비교했을 때 어떤 개선을 기대하는가를 함께 적어 두어야 합니다. 그래야 뒤의 baseline 비교와 튜닝 결과가 단순 점수 경쟁이 아니라 오류 구조를 얼마나 바꿨는가로 읽힙니다.
독자가 후보군을 메모할 때도 같은 기준을 바로 남겨 두어야 합니다.
| 지금 적어 둘 항목 | 왜 여기서 같이 적어야 하는가 |
|---|---|
| 첫 후보 모델 2~4개 | 한 모델만 붙잡고 바로 튜닝하는 실수를 줄이기 위해서입니다. |
| 가장 단순한 baseline | 뒤 절에서 무엇을 먼저 이겨야 하는지 미리 분명히 하기 위해서입니다. |
| 먼저 볼 평가 지표 | accuracy, MAE처럼 겉점수 하나만 보고 판단하지 않기 위해서입니다. |
| 확인할 오류 장면 | 혼동 행렬의 문제 칸이나 큰 오차 구간을 바로 추적하기 위해서입니다. |
즉, 모델 선택 메모는 후보 이름 목록으로 끝내지 말고 baseline과 오류 해석의 출발점까지 같이 적어야 합니다.
여기서 독자가 자연스럽게 다음 질문을 하게 됩니다.
그렇다면 baseline은 무엇을 알아야 만들 수 있는가?
이 질문에 답하려면 아직 baseline 자체를 깊게 들어가기보다, baseline을 세우기 전에 무엇을 먼저 고정해야 하는지부터 알아야 합니다. baseline은 갑자기 떠오르는 규칙이 아니라, 지금 무엇을 한 샘플로 보고 있는가, 무슨 문제를 푸는가, 무슨 점수로 비교할 것인가가 먼저 정해져야 만들 수 있기 때문입니다.
즉, P4-8.1에서 baseline을 미리 언급하는 이유는 비교 기준도 후보군 설계와 함께 메모해야 한다는 점을 보여 주기 위해서입니다. 실제로 baseline을 어떻게 세우는지는 다음 절 P4-8.2의 중심 질문으로 넘기되, 그 준비 지식은 여기서 먼저 고정해 두는 편이 자연스럽습니다.
여기에 한 가지를 더 붙이면 모델 선택 메모가 훨씬 단단해집니다. 후보 모델을 적기 전에 내가 지금 무엇을 한 샘플로 보고 있는가, 원시 로그를 그대로 쓰는가 아니면 동작 단위 요약 표를 쓰는가, 최근 결과를 어떤 기준선과 비교할 것인가를 같이 적어 두는 것입니다. 같은 알고리즘 이름이라도 입력 구조를 어떻게 만들었는지에 따라 비교 실험의 의미가 크게 달라지기 때문입니다.
| 모델 후보를 적기 전에 확인할 것 | 왜 먼저 확인해야 하는가 |
|---|---|
| 샘플 단위가 무엇인가 | 한 행과 한 사례를 혼동하면 평가 단위도 함께 흔들리기 때문입니다. |
| 원시 시계열을 쓸지 동작 1회 요약 행을 쓸지 | 입력 표현이 달라지면 같은 모델도 완전히 다른 실험이 되기 때문입니다. |
| 최근 결과와 어떤 기준선을 비교할지 | 절대값만 보면 후보 모델의 개선 방향을 잘못 읽기 쉽기 때문입니다. |
| 경고와 원인 확정을 구분할지 | 모델 출력 해석을 과장하지 않기 위해서입니다. |
즉, 모델 선택은 알고리즘 서랍을 여는 일이지만, 그 전에 비교 가능한 데이터 구조를 먼저 고정하는 일과 붙어 있습니다.
baseline을 만들기 위해 바로 필요한 준비 지식도 사실 여기와 겹칩니다.
| baseline 전에 먼저 알아야 할 것 | 왜 baseline이 이 정보를 먼저 필요로 하는가 |
|---|---|
| 문제 유형이 분류인지 회귀인지 | 다수 클래스 예측을 둘지, 평균/중앙값 예측을 둘지가 여기서 갈리기 때문입니다. |
| 한 샘플이 무엇인지 | 행 단위가 흔들리면 baseline 점수도 무엇을 맞히는지 함께 흔들리기 때문입니다. |
| 먼저 볼 평가 지표가 무엇인지 | accuracy를 볼지, recall을 볼지, MAE를 볼지에 따라 baseline 해석도 달라지기 때문입니다. |
| 현재 데이터의 분포가 어떤지 | 클래스 불균형이나 목표값 분포를 알아야 쉬운 기준이 무엇인지 판단할 수 있기 때문입니다. |
| 운영에서 중요한 실패가 무엇인지 | baseline을 겨우 넘는 개선이 실제로 의미 있는지 판단하려면 중요한 오류 유형을 먼저 알아야 하기 때문입니다. |
즉, baseline을 만들려면 새로운 고급 이론이 갑자기 더 필요한 것이 아니라, 지금까지 정리한 문제 정의, 샘플 단위, 평가 지표, 데이터 분포, 오류 비용이 먼저 필요합니다. 이 절이 끝날 때 독자가 붙잡아야 하는 것도 바로 그 준비물입니다.
특히 동작 단위 원시 시계열을 다루는 예시에서는, 여러 시점을 그대로 넣을지 아니면 동작 1회 요약 행으로 바꿀지에 따라 같은 모델 이름도 전혀 다른 비교 실험이 됩니다.
이 점은 Part 3과 P4-7의 흐름을 다시 한 번 묶어 줍니다. Part 3에서는 한 행이 무엇을 뜻하는가와 동작 1회 요약 행이 왜 필요한가를 봤고, P4-7에서는 그 요약 행에서 어떤 입력 칸을 특징으로 남길지 봤습니다. 모델 선택은 그 다음에야 비로소 이 입력 표현이라면 어떤 모델 계열을 먼저 시험할까를 묻는 단계입니다.
즉, 모델 선택은 특징 선택과 경쟁하는 단계가 아니라, 이미 고정한 샘플 단위와 입력 표현 위에서 후보군을 세우는 단계입니다.
여기서 고정해야 할 판단은 아래 세 가지입니다.
| 지금 이 절에서 못 박을 것 | 바로 뒤 절에서 이어서 볼 것 | 실제 비교에서 끝까지 남겨야 할 것 |
|---|---|---|
| 첫 후보 모델 2~4개를 세운다 | baseline을 두고 무엇을 먼저 이겨야 하는지 본다 | 혼동 행렬의 문제 칸, 큰 오차 구간, 대표 오류 사례 |
| 문제를 보고 어떤 후보군 서랍을 먼저 열지 정한다 | 점수 상승이 실제 개선인지 비교한다 | 다음 실험에서 어떤 실패를 더 줄일지 적는다 |
후보군 메모는 다음처럼 남겨야 비교 기준이 덜 흔들립니다.
| 메모 항목 | 예시 |
|---|---|
| 샘플 단위 | 동작 1회 |
| 입력 표현 | 동작 1회 요약 행 |
| 첫 후보군 | 로지스틱 회귀, 결정트리, 랜덤포레스트 |
| baseline | 가장 단순한 규칙 또는 다수 클래스 예측 |
| 먼저 볼 실패 | 놓치면 안 되는 오류 유형, 큰 오차 구간 |
이렇게 적어 두면 모델 이름만 남는 것이 아니라, 어떤 입력 표현으로 어떤 실패를 줄이려는 실험인가까지 함께 보존할 수 있습니다.
이 표에서 baseline 항목이 아직 막연하게 느껴져도 괜찮습니다. 여기서는 baseline을 바로 완성하는 법보다 baseline을 만들 재료가 무엇인지를 먼저 붙잡는 단계이기 때문입니다. 다음 절 P4-8.2에서는 baseline이 왜 먼저 필요한지와 점수 해석 원리를 보고, 이어지는 P4-8.3 보충학습에서는 바로 이 재료를 가지고 분류, 회귀, 시계열에서 어떤 단순 기준을 먼저 둘 수 있는지 구체적으로 보게 됩니다.
주요 학습내용¶
모델 선택은 무엇을 고르는 일인가¶
학술적으로 모델 선택(model selection)은 후보 모델들 가운데 목적에 맞는 선택을 하는 문제입니다. 단, 여기서 목적은 하나가 아닐 수 있습니다.
- 예측 성능이 좋은가?
- 과적합을 덜 만드는가?
- 계산 비용이 감당 가능한가?
- 설명이 쉬운가?
- 운영 환경에서 배포 가능한가?
즉, 모델 선택은 단지 정확도 높은 모델 찾기보다 넓은 문제입니다.
조금 더 이론적으로 말하면, 여기서 선택 대상은 단순히 프로그램 이름이 아니라 가설 공간(hypothesis space)의 한 부분입니다. 선형 모델을 볼지, 트리 계열을 볼지, 거리 기반 모델을 볼지는 결국 데이터에서 어떤 구조를 읽어 보려는가와 연결됩니다. 이 절은 이 수학적 세부를 파고들지 않고, 그 차이를 후보군의 성격 차이 정도로 구분할 수 있게 만드는 데 집중합니다.
모델 선택은 문제와 제약에 맞는 모델 후보를 좁혀 가는 일이다.
왜 하나의 모델만 외우면 안 되는가¶
같은 데이터셋이라도 질문이 달라지면 적합한 모델이 달라질 수 있습니다.
예를 들어 고객 데이터를 가지고도 다음처럼 전혀 다른 문제가 나올 수 있습니다.
| 같은 데이터 | 다른 질문 | 모델 선택 관점 |
|---|---|---|
| 고객 활동 기록 | 다음 달 이탈할까? | 분류(classification) 후보 |
| 고객 활동 기록 | 다음 달 매출은 얼마일까? | 회귀(regression) 후보 |
| 고객 활동 기록 | 비슷한 고객끼리 묶을 수 있을까? | 군집화(clustering) 후보 |
즉, 모델 선택은 데이터셋 이름보다 무슨 예측 또는 판단을 하려는가에서 먼저 출발합니다.
독자가 자주 하는 잘못된 출발도 함께 정리할 필요가 있습니다.
- 유명한 알고리즘부터 고른다.
- 이미 써 본 라이브러리부터 고른다.
- 가장 복잡해 보이는 모델부터 고른다.
이 세 가지는 모두 문제보다 도구를 먼저 보는 출발입니다. 모델 선택은 반대로, 문제를 먼저 보고 도구를 나중에 좁혀 가는 절차입니다.
모델 선택 전에 묻는 네 가지 질문¶
여기서는 알고리즘 이름보다 질문 순서가 더 중요합니다.
1. 문제 유형이 무엇인가¶
가장 먼저 물어야 할 것은 문제 유형입니다.
- 분류(classification)인가
- 회귀(regression)인가
- 군집화(clustering)인가
- 순위(ranking)나 추천(recommendation)에 가까운가
문제 유형이 달라지면 후보 모델군 자체가 달라집니다.
2. 데이터가 얼마나 많고 어떤 형태인가¶
두 번째는 데이터의 크기와 표현입니다.
- 샘플 수가 많은가 적은가
- 특징 수가 많은가 적은가
- 숫자형이 중심인가 문자열/범주형이 많은가
- 희소(sparse)한가 조밀(dense)한가
예를 들어 샘플은 적고 특징은 많은 경우와, 샘플이 아주 많고 특징도 단순한 경우는 모델 선택 감각이 달라질 수 있습니다.
3. 설명 가능성이 중요한가¶
어떤 문제는 결과를 잘 맞히는 것만으로 부족합니다.
- 왜 이런 판단이 나왔는지 설명해야 하는가
- 규제나 감사가 있는가
- 사람이 함께 검토해야 하는가
이런 경우에는 복잡한 모델보다 해석 가능한 모델이 더 나은 출발점일 수 있습니다.
4. 속도와 운영 제약이 큰가¶
실시간 응답이 필요한가, 추론 비용이 제한되는가, 메모리나 배포 환경이 좁은가도 중요합니다.
아무리 성능이 좋아도 서비스 응답 시간이 너무 길거나 운영 비용이 감당되지 않으면 좋은 선택이 아닐 수 있습니다.
모델 선택은 후보군을 세우는 일이다¶
종종 이렇게 묻습니다.
그래서 어떤 모델이 정답인가?
하지만 모델 선택의 실제 출발점은 하나의 정답 모델보다 첫 후보군(shortlist)을 만드는 일에 더 가깝습니다.
flowchart TD
subgraph R1["문제에서 출발"]
direction LR
A["문제 정의"]
B["데이터와 특징"]
C["제약<br/>속도 / 비용 / 설명 가능성"]
end
subgraph R2["그다음 후보를 좁힘"]
direction LR
D["후보 모델"]
E["비교하며 좁혀 감"]
end
A --> B --> C
C --> D --> E
이 도식의 핵심은, 모델이 먼저가 아니라 문제와 제약이 먼저라는 점입니다.
실무 흐름으로 조금 더 펼치면 다음처럼 읽을 수 있습니다.
flowchart TD
subgraph Q1["과제를 번역"]
direction LR
A["1. 업무 질문<br/>어떤 결정을 지원할 것인가?"]
B["2. 과제 유형<br/>분류 / 회귀 / 군집화"]
C["3. 데이터 조건<br/>크기 / 특징 유형 / 희소성"]
end
subgraph Q2["제약을 세우고 후보군 구성"]
direction LR
D["4. 제약<br/>설명 가능성 / 속도 / 비용"]
E["5. 후보군<br/>2~4개 모델 계열"]
end
A --> B --> C
C --> D --> E
이 도식은 모델 선택을 알고리즘 검색이 아니라 업무 질문을 실험 후보군으로 번역하는 과정으로 보여 줍니다.
어떤 모델 후보를 먼저 올려야 하는가¶
모델 선택의 첫 단계는 최고의 모델 하나를 맞히기보다 왜 이 후보들을 먼저 비교하는가를 분명히 하는 일입니다.
| 현재 조건 | 먼저 올릴 후보군 | 이유 |
|---|---|---|
| 설명 가능성이 중요하고 출발점을 단순하게 잡고 싶다 | 선형 모델, 얕은 트리 | 해석과 기준 비교가 쉽기 때문 |
| 숫자형 특징이 비교적 정리되어 있고 거리 개념이 중요하다 | k-NN, SVM 검토 | 입력 간 거리와 경계가 직접 중요해질 수 있기 때문 |
| 비선형 관계와 상호작용을 빨리 시험하고 싶다 | 결정트리, 랜덤포레스트 | 복잡한 관계를 비교적 빠르게 시험할 수 있기 때문 |
| 라벨 없이 구조를 먼저 보고 싶다 | k-means, DBSCAN | 묶음 구조와 이상 군집을 먼저 살필 수 있기 때문 |
| 입력 수와 운영 제약이 커서 빠른 baseline 비교가 먼저다 | 단순 모델 2~4개 shortlist | 한 모델만 깊게 파기 전에 비교 구조를 세울 수 있기 때문 |
이 표는 정답 모델을 찍기 위한 것이 아니라, 문제 유형, 입력 표현, 설명 가능성, 운영 제약을 기준으로 후보군을 합리적으로 줄이기 위한 출발표입니다.
문제 유형별로 먼저 떠올릴 수 있는 후보군¶
모든 알고리즘을 한 번에 다 비교하려 하기보다, 문제 유형별로 우선 떠올릴 수 있는 후보군을 만들어야 합니다.
| 문제 유형 | 먼저 떠올릴 수 있는 후보군 |
|---|---|
| 분류 | 로지스틱 회귀, 결정트리, k-NN, SVM |
| 회귀 | 선형회귀, 결정트리 회귀, 랜덤포레스트 회귀 |
| 군집화 | k-means, DBSCAN 같은 비지도 후보 |
이 표는 정답표가 아니라 탐색 시작점입니다.
바로 다음 절의 baseline과 연결해 읽으면 다음처럼 더 분명해집니다.
| 문제 장면 | 첫 후보군 예 | 같이 적어 둘 baseline | 먼저 볼 오류 또는 비교 포인트 |
|---|---|---|---|
| 고객 이탈 분류 | 로지스틱 회귀, 결정트리, 랜덤포레스트 | 항상 비이탈 예측 | 이탈 고객을 놓치는 칸, recall 변화 |
| 집값 회귀 | 선형회귀, 트리 회귀, 랜덤포레스트 회귀 | 평균 집값 예측 | 큰 금액 오차 구간, MAE와 RMSE 차이 |
| 고객 세그먼트 군집화 | k-means, DBSCAN | 없음, 대신 단순 규칙 분할과 해석 비교 | 군집 안 조밀도, 군집 간 분리도 |
이 표의 목적은 무슨 모델을 고를까에서 멈추지 않고, 무엇과 비교하고 어떤 실패를 먼저 볼까까지 한 번에 적게 만드는 데 있습니다.
이때 baseline 비교는 점수표를 하나 더 추가하는 일이 아니라, 최근 결과가 기존 기준선보다 실제로 어떤 오류 구조를 덜 만들었는지 읽기 위한 출발점입니다.
뒤 장에서 이 후보들을 차례로 다루게 됩니다.
- P4-10 선형회귀
- P4-11 로지스틱 회귀
- P4-12 k-NN
- P4-13 SVM
- P4-14 결정트리
- P4-15 랜덤포레스트
즉, 이 절은 P4-10부터 P4-19까지 이어지는 알고리즘 절의 입구 역할을 합니다.
세부 학습내용¶
데이터 조건이 후보군을 어떻게 바꾸는가¶
문제 유형이 같아도 데이터 조건이 다르면 선택 감각이 바뀝니다.
| 데이터 조건 | 먼저 생각할 변화 |
|---|---|
| 특징이 적고 설명이 중요함 | 선형 모델, 작은 트리 같은 단순 모델부터 시작 |
| 거리 개념이 중요함 | k-NN, SVM 같은 후보를 더 의식 |
| 비선형 경계가 많아 보임 | 트리 계열, 커널 기반 방법을 후보에 넣음 |
| 범주형 값이 많음 | 전처리 부담과 모델 적합성을 함께 검토 |
| 실시간 응답이 중요함 | 추론이 빠른 모델을 우선 검토 |
즉, 모델 선택은 알고리즘 자체의 우열이 아니라 문제와 데이터 조건의 조합을 읽는 일입니다.
이 문장을 독자용으로 더 줄이면 다음처럼 말할 수 있습니다.
모델 선택은 좋은 알고리즘 찾기가 아니라, 지금 문제에 덜 어울리는 후보를 먼저 빼 가는 일이다.
설명 가능성과 운영 조건도 선택 기준이다¶
같은 성능이라도 현장에서는 다음 같은 이유로 다른 선택이 나올 수 있습니다.
| 기준 | 더 단순한 모델이 유리할 수 있는 이유 |
|---|---|
| 설명 가능성 | 결과를 설명하고 검토하기 쉽다 |
| 디버깅 | 이상한 예측이 나왔을 때 추적이 쉽다 |
| 운영 비용 | 추론 비용과 메모리 사용량이 작을 수 있다 |
| 배포 단순성 | 파이프라인과 모델 구조가 단순해 관리가 쉽다 |
즉, 모델 선택은 성능표 한 줄로 끝나지 않습니다.
사례 및 예시¶
사례 1. 같은 이탈 예측이라도 첫 후보군이 달라질 수 있다¶
구독 서비스 팀이 고객 이탈 예측을 준비하고 있습니다. 사람이 먼저 보던 기준은 최근 방문 수, 문의 횟수, 결제 실패 여부, 요금제 변경 기록 같은 행동 신호였습니다.
처음 회의에서는 누군가는 요즘 강한 모델부터 쓰자고 하고, 다른 사람은 설명이 쉬운 모델이 필요하다고 말합니다. 데이터는 표 형식이고, 하루 한 번 배치로 예측하면 되며, 운영팀은 왜 특정 고객이 위험하다고 나왔는지 어느 정도 설명을 원합니다. 이런 조건에서는 처음부터 하나의 정답 모델을 고르기보다, 설명 가능한 선형 모델과 규칙 기반 모델, 그리고 더 강한 비선형 후보를 함께 올려야 합니다.
이 장면에서 모델 선택은 유명한 알고리즘 고르기가 아니라 문제와 제약을 후보군으로 번역하기가 됩니다. 분류 문제인지, 표 데이터인지, 설명이 필요한지, 실시간 추론이 아닌지 같은 조건이 후보군을 좁히는 기준이 됩니다. 그래서 로지스틱 회귀, 결정트리, 랜덤포레스트처럼 성격이 다른 두세 개 모델을 먼저 세우는 것이 더 합리적입니다.
확인 가능한 결과는 후보군 표와 비교 실험에서 드러납니다. 어떤 모델이 설명 가능성을 주고, 어떤 모델이 비선형 패턴을 더 잘 다루며, 어떤 모델이 운영 비용까지 감당 가능한지 나란히 비교하면 왜 후보군 설계가 모델 선택의 첫 단계인지 설명할 수 있습니다.
이 장면을 도식으로 그리면, 같은 이탈 예측 문제도 제약 조건 때문에 후보군이 어떻게 갈라지는지 한눈에 보입니다.
flowchart TD
A["이탈 예측 과제"]
B["표 형태의 행동 데이터"]
C["설명이 필요함"]
D["하루 한 번 배치 추론"]
E["선형 후보<br/>로지스틱 회귀"]
F["설명 가능한 규칙 후보<br/>의사결정나무"]
G["강한 비선형 후보<br/>랜덤 포레스트"]
H["튜닝 전에 후보군 비교"]
A --> B
B --> C
B --> D
C --> E
C --> F
D --> G
E --> H
F --> H
G --> H
작은 예시로 모델 후보를 세워 보기¶
다음과 같은 문제를 생각해 보겠습니다.
| 조건 | 내용 |
|---|---|
| 문제 | 고객 이탈 예측 |
| 입력 | 최근 방문 수, 문의 수, 결제 금액, 회원 등급 |
| 목표 | 다음 달 이탈 여부 분류 |
| 제약 | 결과 설명이 어느 정도 가능해야 함 |
| 운영 | 하루 배치 예측, 실시간은 아님 |
이 경우 입문 수준에서 다음처럼 후보군을 세울 수 있습니다.
| 후보 | 왜 후보인가 |
|---|---|
| 로지스틱 회귀 | 해석과 기준선 설정에 좋다 |
| 결정트리 | 비선형 규칙을 직관적으로 볼 수 있다 |
| 랜덤포레스트 | 더 안정적인 성능 후보가 될 수 있다 |
반대로 처음부터 매우 복잡한 모델 하나만 고정하는 것은, 비교 기준을 잃게 만들 수 있습니다.
연습 및 예제¶
연습 1. 문제 장면을 후보군 메모로 바꿔 보기¶
아래 세 장면을 보고, 각 장면마다 최소한 다음 다섯 항목을 직접 적어 보겠습니다.
- 문제 유형
- 샘플 단위
- 첫 후보군 2~4개
- 같이 적어 둘 baseline
- 먼저 볼 오류 또는 비교 포인트
| 장면 | 독자가 먼저 적어 볼 메모 |
|---|---|
쇼핑몰이 다음 주에 반품할 가능성이 큰 주문을 미리 찾고 싶다. 입력은 주문 금액, 배송 지연 여부, 카테고리, 이전 반품 횟수다. 운영팀은 왜 위험 주문으로 보였는지 설명을 어느 정도 원한다. | 문제 유형 / 샘플 단위 / 첫 후보군 / baseline / 먼저 볼 오류 |
부동산 팀이 아파트 예상 거래가를 추정하고 싶다. 입력은 면적, 방 수, 준공 연도, 역과의 거리다. 설명 가능성도 중요하지만 큰 금액 오차를 줄이는 것이 더 중요하다. | 문제 유형 / 샘플 단위 / 첫 후보군 / baseline / 먼저 볼 오류 |
물류 팀이 배송 패턴이 비슷한 지역 묶음을 먼저 보고 싶다. 입력은 평균 배송 시간, 재배송 비율, 주문 밀도다. 아직 라벨은 없고, 먼저 구조를 보는 것이 목적이다. | 문제 유형 / 샘플 단위 / 첫 후보군 / baseline 대체 비교 / 먼저 볼 비교 포인트 |
바로 아래 해설과 비교하면서, 후보 이름만 적었는가가 아니라 왜 그 후보를 먼저 비교하는가와 무엇과 비교할 것인가까지 적었는지 확인합니다.
| 장면 | 해설 예시 |
|---|---|
| 반품 위험 주문 찾기 | 분류(classification), 샘플 단위는 주문 1건, 후보군은 로지스틱 회귀·결정트리·랜덤포레스트, baseline은 항상 반품 아님, 먼저 볼 오류는 실제 반품 주문을 놓치는 칸과 recall |
| 아파트 예상 거래가 추정 | 회귀(regression), 샘플 단위는 아파트 거래 1건, 후보군은 선형회귀·트리 회귀·랜덤포레스트 회귀, baseline은 평균 거래가 예측, 먼저 볼 비교 포인트는 큰 금액 오차 구간과 MAE/RMSE 차이 |
| 배송 패턴이 비슷한 지역 묶기 | 군집화(clustering), 샘플 단위는 지역 1개, 후보군은 k-means·DBSCAN, baseline은 따로 두기보다 단순 규칙 분할과 해석 비교, 먼저 볼 비교 포인트는 군집 안 조밀도와 군집 간 분리도 |
이 연습의 핵심은, 문제 유형 -> 샘플 단위 -> 후보군 -> baseline -> 먼저 볼 실패 순서를 한 번 직접 적어 보는 데 있습니다. 이 순서를 써 보지 않으면, 모델 선택을 다시 유명한 알고리즘 이름 고르기로 오해하기 쉽습니다.
연습 2. 어떤 후보를 먼저 빼야 하는지 말로 설명해 보기¶
모델 선택은 가장 좋은 알고리즘 하나를 맞히기보다 지금 문제에 덜 맞는 후보를 먼저 빼 가는 일에 가깝습니다. 아래 장면에서 왜 어떤 후보를 먼저 올리고, 어떤 후보는 뒤로 미루는지 한두 문장으로 설명해 보겠습니다.
| 장면 | 독자가 먼저 답할 질문 |
|---|---|
| 표 데이터 분류 문제이고, 사람이 예측 근거를 검토해야 하며, 하루 한 번 배치 추론이면 충분하다. | 왜 로지스틱 회귀나 얕은 트리를 먼저 올릴 수 있는가? |
| 특징 간 거리 개념이 중요하고, 가까운 사례끼리 비슷한 판단을 기대한다. | 왜 k-NN이나 SVM을 후보군에서 더 의식할 수 있는가? |
| 실시간 응답이 매우 중요하고 배포 메모리가 작다. | 왜 복잡한 후보보다 추론이 단순한 후보를 먼저 검토해야 하는가? |
짧은 해설은 다음처럼 붙잡으면 충분합니다.
- 설명과 검토가 중요하면, 먼저 해석이 쉬운 후보를 올려 baseline과의 차이를 읽기 쉽도록 합니다.
- 거리 개념이 중요한 장면에서는, 입력 간 가까움 자체가 판단 기준이 될 수 있어 거리 기반 후보를 더 의식합니다.
- 운영 제약이 큰 장면에서는, 높은 점수 가능성만이 아니라 추론 비용과 배포 단순성도 후보를 줄이는 기준이 됩니다.
예제. 잘못된 후보 메모와 더 나은 후보 메모 비교하기¶
아래 두 메모는 같은 문제 장면을 두고 작성한 것입니다.
문제 장면:
- 카드 결제 기록으로
사기 거래 여부를 분류하려고 한다. - 입력은 결제 금액, 국가, 시간대, 과거 사기 이력, 기기 정보다.
- 사기를 놓치면 손실이 크고, 운영팀은 위험 판단 근거도 어느 정도 보고 싶어 한다.
메모 A:
| 항목 | 내용 |
|---|---|
| 후보 | XGBoost 하나 |
| 이유 | 성능이 좋다고 들었다 |
메모 B:
| 항목 | 내용 |
|---|---|
| 문제 유형 | 분류(classification) |
| 샘플 단위 | 결제 1건 |
| 첫 후보군 | 로지스틱 회귀, 결정트리, 랜덤포레스트 |
| baseline | 항상 정상 거래 예측 |
| 먼저 볼 오류 | 실제 사기 거래를 놓치는 칸, recall 변화 |
| 추가 메모 | 설명 가능성과 운영 검토 때문에 처음 비교군에는 해석 가능한 후보를 포함 |
먼저 스스로 답해 보겠습니다.
- 어떤 메모가 모델 선택에 더 가깝습니까?
- 다른 하나는 왜 아직
후보군 설계가 아니라유명한 모델 이름 선택에 머물러 있습니까? - 메모 B에서도 이후 비교 전에 더 적고 싶은 항목이 있다면 무엇입니까?
해설은 다음처럼 읽으면 충분합니다.
- 메모 B가 더 낫습니다. 모델 선택을
문제 유형,샘플 단위,비교 후보,baseline,먼저 볼 오류까지 연결했기 때문입니다. - 메모 A는 후보를 하나만 고정했고, 무엇과 비교할지와 어떤 실패를 줄일지가 빠져 있어 뒤 절의 baseline 비교로 자연스럽게 이어지지 않습니다.
- 메모 B에 더 붙일 수 있는 항목은 입력 표현, 데이터 불균형 정도, 운영상 허용하기 어려운 실패 유형입니다.
이 비교 예제의 목적은 좋은 후보 이름을 찾는 것이 아니라 좋은 후보 메모가 무엇인지 구분하게 만드는 데 있습니다.
같은 후보군 메모를 실제 비교 절차로 줄이면 다음처럼 볼 수 있습니다. 아래 코드는 같은 분류 데이터에 로지스틱 회귀(logistic regression), k-NN, 결정트리(decision tree), 랜덤포레스트(random forest)를 올리고, 5-fold cross-validation으로 train score, CV score, CV score의 흔들림을 비교합니다.
실행 결과 예시는 다음과 같습니다.
이 출력은 유명한 모델 하나를 고르는 일과 후보군을 비교하는 일의 차이를 보여 줍니다. 랜덤포레스트는 이 작은 데이터에서 CV score가 가장 높지만 train score도 매우 높습니다. 결정트리는 그보다 낮지만 흔들림은 작습니다. 로지스틱 회귀는 단순하고 설명이 쉽지만 이 데이터에서는 점수가 낮습니다. 따라서 모델 선택 메모에는 점수뿐 아니라 후보군, 비교 방식, 흔들림, 설명 가능성 같은 판단 축이 함께 남아야 합니다.
연습 3. 같은 후보군이어도 먼저 볼 오류가 달라지면 메모가 달라지는지 확인하기¶
아래 두 장면은 둘 다 분류 문제이고, 첫 후보군도 비슷하게 시작할 수 있습니다. 하지만 먼저 볼 오류가 다르면 모델 선택 메모도 달라져야 합니다.
| 장면 | 먼저 볼 오류를 어떻게 적어야 하는가 |
|---|---|
병원 접수 단계에서 고위험 환자를 놓치지 않는 것이 더 중요하다. | 어떤 칸을 특히 줄여야 하는지 적어 본다. |
광고 추천 시스템에서 관심 없는 사람에게 과도하게 노출하는 것이 더 문제다. | 어떤 잘못된 양성 판단을 줄여야 하는지 적어 본다. |
스스로 적어 본 뒤, 아래 해설과 비교합니다.
| 장면 | 해설 예시 |
|---|---|
| 고위험 환자 분류 | 실제 위험 환자를 놓치는 false negative를 먼저 줄여야 하므로, recall과 놓친 사례를 먼저 본다고 메모하는 편이 맞다. |
| 광고 추천 분류 | 관심 없는 사람을 잘못 양성으로 판단하는 false positive를 줄여야 하므로, precision 쪽 오류와 과도 노출 사례를 먼저 본다고 적는 편이 맞다. |
이 연습은 후보군만 적으면 끝이 아니라, 같은 후보군이라도 어떤 실패를 줄이려는지에 따라 비교 메모가 달라진다는 점을 붙잡게 합니다.
체크리스트¶
- 문제 유형을 먼저 확정한 뒤 후보군을 세우고 있는가?
- 샘플 단위와 입력 표현을 적은 뒤 후보군을 비교하고 있는가?
- 한 모델만 바로 튜닝하기 전에 비교할 shortlist를 2~4개 수준으로 남기고 있는가?
- 후보 모델 이름만이 아니라 baseline과 먼저 볼 오류 장면까지 함께 메모하고 있는가?
- 지금 문제는 분류인가, 회귀인가, 군집화인가?
- 입력 표현과 데이터 규모를 고려했는가?
- 설명 가능성과 운영 제약을 기준에 넣었는가?
- 후보군을 두세 개 이상 세우고 비교할 준비가 되어 있는가?
- 아직 기준 모델(baseline) 없이 복잡한 모델 하나만 붙잡고 있지 않은가?
- 모델 선택이 하나의 정답 알고리즘을 찍는 일이 아니라, 문제 유형·데이터 조건·설명 가능성·운영 제약을 함께 보고 합리적인 후보군을 세우는 일이라는 점을 설명할 수 있는가
출처와 참고 자료¶
- Jie Ding, Vahid Tarokh, Yuhong Yang,
Model Selection Techniques -- An Overview, arXiv, 2018, 확인 날짜: 2026-06-26. https://arxiv.org/abs/1810.09583 - Sebastian Raschka,
Model Evaluation, Model Selection, and Algorithm Selection in Machine Learning, arXiv, 2018, 확인 날짜: 2026-06-26. https://arxiv.org/abs/1811.12808