🖇 모델링이란
🖇 모델링의 전 과정
🖇 혼동하기 쉬운 표현
🖇 validation/test 역할 구분에 대한 오해
머신러닝 프로젝트를 진행하다 보면 "모델링하고 있어", "모델 성능이 안 나와", "모델링 전략을 바꿔야 할 것 같아" 등의 표현을 자주 듣게 된다.
모델링이란 모델을 선언하고 .fit()을 호출하는 과정만을 말하는 걸까?
여기서 말하는 '모델링’이 정확히 무엇을 의미하는 것인지 헷갈려서 이 글을 통해 정리하고 넘어가려 한다. 머신러닝에서 사용하는 모델링(Modeling)의 개념을 짚어보고, 학습·예측·검증·평가 등 모델 개발 관련 용어들 사이의 경계를 정리해 보았다. 실제로 머신러닝 프로젝트를 진행할 때 혼동하기 쉬운 표현들과 validation/test 역할 구분도 다뤄 보았다.
머신러닝 관점에서 모델링(Modeling)은 머신러닝을 통해 문제를 해결하는 전체 과정을 통틀어 말하는 포괄적인 개념이다. 모델을 정의하고 학습시키는 것은 물론이고, 데이터를 준비하고 피처를 설계하며 성능을 평가하고 튜닝하는 과정까지 모두 흐름이 포함된다.
모델링은 일회성 작업이 아니라 실험과 개선을 반복하는 순환적인 과정이다. 데이터를 처음 다듬는 전처리 단계부터, 다양한 모델을 비교하고 최종 결과를 해석하고 배포하기까지 전 과정이 모델링이라는 틀 안에 있다.
즉, 모델링은 모델 하나만 놓고 보는 개념이 아니라 문제 정의부터 최종 모델을 선정하고 예측 결과를 도출하는 모든 과정이 모델링의 일부인 것이다.
모델링 전 과정의 흐름을 알아보자.
용어를 사용하는 사람과 프로젝트 목적에 따라 의미하는 범위가 조금씩 다를 수 있지만 아래처럼 정리해 보는 것도 가능하다.
문제 정의: 예측하고자 하는 종속변수(Target)와 이를 설명할 독립변수(Feature)를 정의한다. 예를 들어 고객의 이탈 여부를 예측한다면 '이탈 여부'가 종속변수이다.
데이터 전처리: 결측치 처리, 이상치 제거, 형 변환, 정규화, 스케일링 등을 통해 데이터를 모델이 학습하기 좋은 형태로 정제한다.
피처 엔지니어링: 파생 변수 생성, 불필요한 변수 제거, 변환 작업 등으로 모델의 성능에 직접적인 영향을 줄 수 있는 입력 피처를 설계한다.
모델 설계: 문제 유형(분류, 회귀, 군집 등)에 따라 적합한 모델을 선택하고 구조를 정의한다. 스케일링이 중요한 알고리즘이라면 그에 맞는 사전 설계가 필요하다. 하이퍼파라미터의 초깃값도 이 시점에서 결정한다.
모델 학습: .fit() 메서드를 통해 모델이 데이터를 학습하도록 한다. 이때 학습 데이터(train set)를 통해 패턴을 찾고 모델의 내부 파라미터를 조정한다.
예측: 학습된 모델을 사용해 테스트 데이터나 새로운 데이터에 대해 예측을 수행한다. .predict() 또는 .predict_proba()가 사용된다.
검증: 학습 중간에 모델의 일반화 성능을 평가하기 위해 검증 데이터(validation set)를 사용하거나, 교차 검증(cross-validation) 기법을 활용해 모델의 안정성을 확인한다. 검증은 하이퍼파라미터 튜닝과 모델 선택에 활용된다.
하이퍼파라미터 튜닝: 모델의 외부 설정값을 조정하여 성능을 최적한다. GridSearch, RandomizedSearch, Optuna 등의 방법이 사용된다.
평가(Evaluation): 최종 테스트 데이터(test set)를 사용해 문제별로 적절한 지표를 통해 모델의 성능을 평가한다.
재학습 및 적용: 최종적으로 선택한 모델로 전체 데이터를 다시 학습시키고, 실제 서비스나 분석 파이프라인에 적용한다.
이러한 모든 과정을 아울러 모델링이라고 표현할 수 있다.
머신러닝 프로젝트에서는 각 단계마다 다른 의미를 가지는 용어들이 있지만, 일상적인 대화에서는 그 구분이 흐려지는 경우가 많다.
아래 표에서 이런 용어들을 정확하게 사용할 수 있도록 정리해 보았다.
| 용어 | 의미 | 예시 표현 | 헷갈리기 쉬운 포인트 |
|---|---|---|---|
| 모델링 | 머신러닝을 통해 문제를 해결하는 전체 과정 | "XGBoost 기반으로 모델링을 진행했다." | 모델 정의만이 아니라 전처리부터 평가까지 모두 포함 |
| 모델 설계 | 사용할 모델 구조 및 전략 설계 | "SVM에 맞춰 스케일링 여부도 같이 설계했다." | 모델 선택, 하이퍼파라미터 지정까지 포함 |
| 학습(Training) | .fit() 호출로 모델이 데이터를 학습하는 과정 | "LightGBM으로 학습을 시켰다." | .fit()을 하지 않으면 학습이 아님 |
| 예측(Prediction) | 학습된 모델로 결과를 추정 | "테스트셋 예측 결과를 저장했다." | .fit() 없이 .predict()만 호출하면 오류 발생 |
| 검증(Validation) | 학습 중 성능을 확인하는 과정 | "5-Fold CV로 검증을 진행했다." | 테스트셋과는 별개로, 개발 중간의 성능 평가 |
| 하이퍼파라미터 튜닝 | 성능 향상을 위한 외부 설정값 조정 | "GridSearch로 최적의 max_depth를 찾았다." | 모델 학습과는 별개의 실험 단계지만 모델링 안에 포함됨 |
| 평가(Evaluation) | 최종 테스트셋으로 성능 확인 | "F1 점수로 평가하였다." | 모델의 마지막 성능 확인 단계 |
실제 머신러닝 프로젝트에서는 train_test_split()을 사용해 데이터를 나눌 때, 나뉜 X_test를 하이퍼파라미터 튜닝이나 모델 성능 비교에 반복적으로 사용하는 경우가 많다.
변수 이름은 X_test라고 하지만 이 데이터는 실질적으로 validation set의 역할을 수행한다. 최종적으로는 Kaggle 대회처럼 별도로 제공되는 테스트셋이나 미리 따로 분리해 둔 hold-out 데이터셋을 활용해 최종 성능 평가를 진행한다.
머신러닝에서 train, validation, test라는 용어는 변수 이름을 그대로 해석하기 보다는 해당 데이터가 어떤 목적으로 사용되었는지에 따라 정의된다는 점이 중요하다.
모델 개발 중 반복해서 사용하는 데이터는 validation set이고, 모델 개선에 사용하지 않고 마지막에 한 번만 평가에 사용하는 데이터만이 test set이라는 것을 기억하면 된다.
지금까지 모델링의 의미와 범위를 이해하고 상황에 맞는 정확한 용어를 선택할 수 있도록 정리해 보았다.
머신러닝에서 모델링이란
모델 정의 및 학습을 포함하여 문제를 정의하고 데이터를 이해하며 실험을 통해 최적의 성능을 찾는 모든 과정을 말한다. 실제 프로젝트에서는 전처리부터 피처 엔지니어링, 모델 선택, 평가, 하이퍼파라미터 튜닝까지 모든 흐름이 자연스럽게 이어지며 이 전체 흐름 속에서 계속해서 '모델링'을 하고 있는 셈이다.
혼자 공부할 때도 마찬가지만 특히 협업하는 상황에서 원할한 소통을 위해, 헷갈리는 부분이 있다면 관련 개념을 올바르게 정립하고 넘어가야겠다.