선형 모델·SVM·결정트리의 선택 기준과 운영 방식

선형 회귀, 로지스틱 회귀, SVM, 결정트리의 가정·최적화·확장성·해석성을 비교하고 실무 모델 선택 기준을 정리한다.

2026-08-14 · 최초 발행 2024-04-29

모델의 강점은 데이터 조건에서 갈린다

Linear Regression, Logistic Regression, SVM, Decision Trees는 지도학습에서 가장 먼저 비교하게 되는 모델군이다. 모두 유용하지만, 연속값 예측인지 분류인지, 선형 관계가 어느 정도 성립하는지, 운영 환경에서 설명 가능성이 필요한지에 따라 선택 결과가 달라진다.

선형 회귀는 연속형 종속 변수를 예측하는 선형 모델이다. 최소제곱(OLS) 또는 Ridge/Lasso 정규화로 가중치를 추정하며, 선형성·독립성·등분산성·잔차의 정규성을 가정한다. 공선성에는 취약하다.

로지스틱 회귀는 이진 또는 다중 클래스 분류를 위한 선형 결정 경계 모델이다. 시그모이드나 소프트맥스로 확률을 추정하고, L1/L2 정규화로 과적합을 제어한다. 선형 분리 가능성이 중요한 전제가 된다.

SVM(Support Vector Machine)은 최대 마진 원리를 쓰는 분류·회귀(SVR) 알고리즘이다. 커널 기법을 적용하면 비선형 결정 경계도 만들 수 있다. 소규모~중간 규모 데이터에서 일반화 성능이 강점이지만, 커널과 C·γ 튜닝에 크게 의존한다.

결정트리는 Gini, Entropy, MSE 같은 불순도 지표를 줄이는 방향으로 반복 분할하는 비모수 모델이다. 특성 스케일과 공선성의 영향이 상대적으로 작고 규칙을 해석하기 쉽다. 깊이 제한 같은 규제가 없으면 과적합될 수 있으며, Random Forest나 XGBoost 같은 앙상블로 확장할 수 있다.

가정, 손실함수, 경계의 차이

선형 회귀와 로지스틱 회귀는 선형 경계를 기반으로 하므로 공선성과 이상치에 민감하다. 다항 특성이나 상호작용 특성을 추가해 비선형성을 일부 보완할 수 있다. 선형 회귀는 MSE를 최소화하며 Ridge/Lasso/ElasticNet으로 가중치를 축소한다. 로지스틱 회귀는 로그우도를 최대화, 즉 크로스 엔트로피를 최소화하고 L-BFGS/SAG/SAGA로 최적화한다.

SVM은 힌지 손실을 최소화하고 소프트 마진의 C로 제약 강도를 조절한다. RBF, Poly, Linear 커널은 비선형 경계를 표현하는 수단이며, 마진 극대화는 일반화 안정성에 연결된다.

결정트리는 정보 이득과 불순도 감소를 기준으로 탐욕적으로 분할한다. 계단형 또는 축 정렬 경계를 만들며 분포 가정이 필요하지 않고 이상치에 강건하다. 대신 가지치기와 깊이 제한으로 모델 복잡도를 제어해야 한다.

알고리즘 성능(일반화) 확장성(데이터 규모) 일관성(재현 가능성) 안정성(노이즈 민감도) 운영 편의(배포/추론)
Linear Regression 중간(정규화 시 안정) 높음 높음(폐쇄형/볼록) 낮음(이상치 민감) 매우 높음(해석 용이)
Logistic Regression 중~높음(선형 분리 강점) 높음 높음 중간(스케일 의존) 매우 높음(확률 산출)
SVM (RBF) 높음(비선형 경계) 중간(대규모 비적합) 높음(마진 원리) 높음(과적합 억제) 중간(튜닝 비용)
Decision Trees 중간(깊이 제한 필요) 높음 중간(분할 불안정) 중간(노이즈에 민감) 높음(규칙 기반)

데이터, 특성 공학, 튜닝 방식에 따라 표의 평가는 달라질 수 있다. 복잡도는 SVM이 O(n^2~n^3), 로지스틱·선형 모델이 epoch당 O(nd), 트리가 O(n d log n)이다. 대규모 데이터에서는 SVM의 부담을 특히 확인해야 하며, 선형 계수와 트리의 특성 중요도는 해석에 쓸 수 있다. 커널 SVM의 해석성은 낮다.

학습부터 배포까지의 판단 경로

분류불균형균형회귀이상치정상과적합언더핏확률 왜곡아니오입력: 데이터셋(특성 X, 타깃 y)데이터 분리:Train/Valid/Test, CV전처리: 결측/스케일/인코딩분류 vs 회귀클래스 불균형 확인처리: class_weight, SMOTE,임계값 조정특성 공학/정규화잔차/이상치 확인처리: RobustScaler, 로그변환, 트리 우선모델 후보Linear/LogisticSVM(kernel)Decision Tree튜닝: C/L1-L2/상호작용항튜닝: C, gamma, kernel튜닝: max_depth,min_samples_leaf검증: CV, AUC/R2,Calibration문제 발견?규제↑, 가지치기, 특성 축소모델 복잡도↑, 특성 추가Calibration: Platt/Isotonic최종 학습+고정 시드모델 아티팩트 저장:버전/메타데이터배포/모니터링: 성능·드리프트알람

분류에서는 클래스 불균형을 먼저 확인하고 class_weight, SMOTE, 임계값 조정을 검토한다. 회귀에서는 잔차와 이상치를 보고 RobustScaler, 로그 변환, 트리 우선을 판단한다. 후보 모델은 교차 검증과 AUC/R2, Calibration으로 검증하며, 과적합이면 규제·가지치기·특성 축소를, 언더핏이면 모델 복잡도와 특성 추가를 검토한다.

최종 학습 후에는 고정 시드와 함께 모델 아티팩트, 버전, 메타데이터를 저장한다. 배포 이후에는 성능과 드리프트 알람을 운영 대상에 포함한다.

문제 유형에 맞춘 선택

수요나 매출 예측에서는 가격·프로모션·시즌 변수를 넣은 선형 회귀가 단기 예측의 기준선이 될 수 있다. 공선성이 있으면 Ridge 또는 ElasticNet을 적용하며, 이상치가 많은 소매·물류 데이터는 결정트리나 랜덤포레스트로 강건성을 확보할 수 있다.

전환, 이탈, 사기 탐지처럼 확률과 설명이 함께 필요한 분류 문제에는 로지스틱 회귀가 적합하다. 임계값을 조정해 비즈니스 KPI를 맞출 수 있으며, 클래스 불균형이 크면 class_weight 또는 리샘플링을 병행한다.

TF-IDF 기반의 텍스트나 고차원 특성을 분류할 때는 linear/RBF SVM을 검토할 수 있다. 차원 수>>샘플 수 환경에 맞으며, C 튜닝과 특성 선택으로 과적합을 억제한다.

감사와 규제 대응처럼 규칙 기반 설명이 필요한 업무에서는 결정트리가 유리하다. 트리 복잡도가 커지면 최대 깊이 제한과 가지치기를 적용한다.

기준선 구축은 0.51일 내 가능하고, 튜닝을 포함한 PoC는 25일 내 완성할 수 있다. 서버 최적화 시 로지스틱·선형 모델의 추론 지연은 <1ms/건 수준이며, 트리는 수 ms 내외다. 단순한 구조와 짧은 추론 경로는 모니터링·롤백에도 유리하다.

코드로 비교하는 분류 파이프라인

전제조건: Python 3.10+, scikit-learn 1.4+, numpy 1.24+
환경 가정: 단일 머신, CPU 실행

from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import StratifiedKFold, cross_validate
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.metrics import make_scorer, roc_auc_score
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier

X, y = load_breast_cancer(return_X_y=True)

cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
scoring = {"accuracy": "accuracy", "roc_auc": "roc_auc"}

models = {
    "Logistic": Pipeline([
        ("scaler", StandardScaler()),
        ("clf", LogisticRegression(max_iter=200, C=1.0, penalty="l2", solver="lbfgs"))
    ]),
    "SVM_RBF": Pipeline([
        ("scaler", StandardScaler()),
        ("clf", SVC(C=2.0, gamma="scale", kernel="rbf", probability=True))
    ]),
    "DecisionTree": DecisionTreeClassifier(max_depth=5, min_samples_leaf=5, random_state=42)
}

for name, model in models.items():
    cv_res = cross_validate(model, X, y, cv=cv, scoring=scoring, n_jobs=-1, return_train_score=False)
    print(f"{name}: acc={cv_res['test_accuracy'].mean():.3f}±{cv_res['test_accuracy'].std():.3f}, "
          f"auc={cv_res['test_roc_auc'].mean():.3f}±{cv_res['test_roc_auc'].std():.3f}")

Logistic 모델은 C ∈ {0.1, 1, 3}, penalty=L2, class_weight="balanced" 옵션을 검토한다. SVM은 그리드 또는 베이지안 서치로 C와 gamma를 탐색하고, 확률 보정이 필요하면 probability=True 후 CalibratedClassifierCV를 고려한다. DecisionTree는 max_depth, min_samples_leaf, min_samples_split의 규제 강도를 높여 과적합을 제어한다.

회귀 모델의 차이를 확인하는 코드

from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, PolynomialFeatures
from sklearn.pipeline import Pipeline
from sklearn.metrics import r2_score, mean_absolute_error
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor

X, y = load_diabetes(return_X_y=True)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2, random_state=42)

pipelines = {
    "Linear": Pipeline([
        ("scaler", StandardScaler()),
        ("lr", LinearRegression())
    ]),
    "Poly2+Linear": Pipeline([
        ("poly", PolynomialFeatures(degree=2, include_bias=False)),
        ("scaler", StandardScaler(with_mean=False)),
        ("lr", LinearRegression())
    ]),
    "DecisionTree": DecisionTreeRegressor(max_depth=5, min_samples_leaf=10, random_state=42)
}

for name, pipe in pipelines.items():
    pipe.fit(X_tr, y_tr)
    pred = pipe.predict(X_te)
    print(f"{name}: R2={r2_score(y_te, pred):.3f}, MAE={mean_absolute_error(y_te, pred):.2f}")

전처리 단계인 스케일러와 다항항은 모델과 함께 파이프라인으로 저장(joblib)한다. 재현성을 위해 random_state를 고정하고, 데이터 스냅샷과 특성 스키마의 버전을 관리한다.

선형·로지스틱 회귀는 해석성, 속도, 확장성에서 출발점이 된다. SVM은 커널과 튜닝이 맞을 때 일반화 성능을 기대할 수 있지만, 대규모 데이터와 운영 복잡도를 함께 고려해야 한다. 결정트리는 규칙 기반 해석과 강건성이 장점이며, 필요하면 앙상블로 확장한다. 일반적으로는 로지스틱·선형 모델로 기준선을 만든 뒤 트리나 선형 SVM으로 보완하고, 필요한 경우 RBF SVM 또는 앙상블을 적용한다.

머신러닝선형 회귀로지스틱 회귀SVM의사결정나무