graph TD
Start[시작: 상수항 평균 모델] --> Forward[1단계: 전진 단계 Forward Pass <br> 모든 변수/매듭 후보 대상 힌지 추가]
Forward --> Overfitted[과적합 Overfitted 모델 완성]
Overfitted --> Backward[2단계: 후진 단계 Backward Pass <br> GCV 기준 기여도 최하위 항 제거]
Backward --> Final[최적의 일반화 모델 결정]
style Start fill:#fffdf0,stroke:#333
style Forward fill:#e1f5fe,stroke:#01579b,stroke-width:2px
style Overfitted fill:#ffebee,stroke:#b71c1c
style Backward fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px
style Final fill:#fff9c4,stroke:#f57f17
데이터 분석과 머신러닝 분야에서 모델을 설계할 때 연구자들은 항상 모순적인 두 가지 목표 사이에서 타협안을 찾게 됩니다.
- 선형 회귀 (Linear Regression): 모형의 회귀 계수와 영향력을 파악하기 쉬워 해석력(Interpretability)이 우수하지만, 현실의 복잡한 비선형(Non-linear) 패턴을 잡지 못합니다.
- 의사결정 나무 (Decision Tree): 비선형 패턴이나 변수 간 상호작용은 기가 막히게 탐지하지만, 예측선이 계단식(Step-wise)으로 뚝뚝 끊겨 연속적이고 부드러운 예측 값을 얻기 어렵습니다.
이러한 선형 회귀와 트리 모형의 한계를 극복하고 두 장점을 결합하여 설계된 통계적 머신러닝 기법이 바로 다변량 적응 회귀 스플라인(MARS, Multivariate Adaptive Regression Splines)입니다. 본 포스트에서는 MARS의 동작 원리인 힌지 함수(Hinge Function)부터 모델을 스스로 정교화하는 GCV 기준 가지치기, R 실증 모델링까지 상세하게 파헤쳐 보겠습니다.
1. MARS의 본질: 선형 회귀와 의사결정나무의 융합
MARS의 철학은 매우 명쾌하고 직관적입니다.
“전체 데이터를 여러 개의 조각(구간)으로 잘게 나눈 뒤(트리 모형의 원리), 나뉘어 수집된 조각 구간별로 각각 부드러운 직선을 그어 연결하자(선형 회귀의 원리).”

위 도식처럼 MARS를 활용하면 변수 간 꼬여 있는 복잡한 휘어짐(비선형성)을 수동으로 \(x^2\) 이나 \(\log(x)\) 와 같은 복잡한 비선형 변환 처리를 가하지 않아도 알고리즘이 스스로 매끄러운 다차원 곡선 모델로 자동 피팅해 줍니다.
2. MARS의 핵심 벽돌: 힌지 함수(Hinge Function)와 매듭(Knot)
MARS가 복잡한 비선형 곡선을 생성해 내는 가장 기초 연산 단위는 힌지 함수(Hinge Function)입니다. 형태가 하키 스틱을 닮았다 하여 ’하키 스틱 함수’라고도 불리며, 신경망(Deep Learning)의 활성화 함수인 ReLU(Rectified Linear Unit)와도 구조적으로 거의 동일합니다.
2.1 수식적 정의
MARS는 임의의 데이터 꺾임 기준점인 매듭(Knot, \(t\))을 경계로 다음 두 힌지 함수를 항상 쌍(Pair)으로 생성하여 최적의 적합도를 비교합니다.
- 우측 힌지 함수 (Right Hinge): \[ h(x-t) = \max(0, x-t) \]
- \(x\)가 매듭(\(t\))보다 클 때만 선형적으로 값이 증가하고, \(t\) 이하일 때는 모두 0의 값을 가집니다.
- 좌측 힌지 함수 (Left Hinge): \[ h(t-x) = \max(0, t-x) \]
- \(x\)가 매듭(\(t\))보다 작을 때만 선형적으로 값이 증가하고, \(t\) 이상일 때는 모두 0의 값을 가집니다.


최종적인 MARS 예측 모형은 이러한 단일 힌지 함수 및 힌지 함수들의 곱(상호작용)들이 결합된 기저 함수(Basis Function)들의 가중 합산으로 표현됩니다.
\[ \hat{y} = \beta_0 + \sum_{m=1}^{M} \beta_m h_m(X) \]
3. MARS 알고리즘 모델링의 2단계 프로세스
MARS는 무작정 최적을 찾는 것이 아니라, “일단 건물을 크게 과도하게 짓고(전진 단계), 필요 없는 방을 하나씩 깎아내는(후진 단계)” 방식으로 적응형 최적화를 수행합니다.
3.1 전진 단계 (Forward Pass)
- 모형을 훈련 데이터에 강제로 과적합(Overfitting) 시키는 확장 단계입니다.
- 상수항으로 출발해, 데이터셋 내 모든 변수와 모든 관측값 포인트에 매듭(Knot, \(t\))을 하나하나 가상으로 찍어보며 오차(RSS)를 가장 극적으로 줄여주는 변수와 매듭 쌍을 골라 힌지 함수를 계속 모델에 추가합니다.
- 사전에 지정한 최대 기저 함수 개수에 도달할 때까지 이 탐색을 멈추지 않고 수행합니다.
3.2 후진 단계 (Backward Pass)
- 뚱뚱해진 모델에서 실제 일반화 예측 성능에 기여하지 못하고 소음(Noise)만 키우는 항을 하나씩 지워 나가는 가지치기(Pruning) 과정입니다.
- 이 과정에서 삭제 대상을 정하는 심판관이 바로 GCV입니다.

4. GCV (Generalized Cross Validation, 일반화 교차검증)의 수학적 작동 원리
MARS 모델이 모델의 성능과 단순함(간결함) 사이의 최적의 타협점을 잡는 핵심 척도가 GCV입니다.
4.1 RSS(잔차제곱합)의 함정과 벌점(Penalty)
훈련 오차인 RSS만 보면 당연히 힌지 함수 개수(모델 크기)가 늘어날수록 에러는 계속 줄어듭니다. 하지만 실제 수능 시험(새 데이터)을 보면 점수가 망가집니다. 따라서 GCV는 항이 많아질수록 커지는 일종의 ’벌금(Penalty)’을 분모에 배분하여 최저점을 탐색합니다.
4.2 GCV 공식
\[ GCV = \frac{\frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{f}(x_i))^2}{(1 - \frac{C(M)}{N})^2} \]
- 분자: 평균 잔차 제곱합(MSE). 데이터와 모형 예측의 실제 오차입니다. 낮을수록 좋습니다.
- 분모: 벌점 항. 분모를 일부러 1보다 작게 만들어 GCV 값을 뻥튀기시킵니다.
- \(N\): 훈련 데이터 표본 크기
- \(C(M)\): 유효 파라미터 개수 (Effective Parameter Count)
4.3 유효 파라미터 \(C(M)\) 계산 공식과 벌점 계수 \(d\)
\[ C(M) = M + d \times \frac{(M-1)}{2} \]
- \(M\): 모델에 포함된 기저 함수의 개수
- \(d\): 벌점 계수 (Penalty Factor) (기본 설정으로 보통 2~3 값 사용)
- 왜 \(d\)가 중요한가요? MARS는 단순히 선형회귀 계수만 구한 것이 아닙니다. 매듭(Knot)의 위치(\(t\))와 변수 후보를 데이터에서 검색하여 찾아내는 자유도(Degrees of Freedom)를 대량으로 소비했습니다.
- 따라서 단순 항 개수인 \(M\)에 더해, 매듭을 스캔하는 데 소비한 ’스캔 비용 가중치’인 \(d\)를 가산하여 벌점을 부과함으로써 모델이 비정상적으로 뚱뚱해지는 현상을 차단합니다.
- 후진 단계에서 항을 지울 때마다 이 GCV를 계산하며, GCV가 최저가 되는 지점에서 최종 모델 선택을 종료합니다.
5. R을 활용한 MARS 모델링 실전 연습
R의 대표적인 MARS 패키지인 earth를 활용해 비선형적 임금 데이터(Wage)를 분석하는 실증 코드 예시입니다.
5.1 패키지 로드 및 학습 모델 생성
# 1. 의존 패키지 설치 및 로드
if(!require(earth)) install.packages("earth")
if(!require(ISLR)) install.packages("ISLR")
library(earth)
library(ISLR)
# 2. 임금 데이터 Wage 준비
data(Wage)
# 중복 표기되는 타겟 지표 제거
Wage_clean <- subset(Wage, select = -c(logwage))
# 3. MARS 모델 훈련
# degree = 2: 변수 간 상호작용(예: 나이 * 근무년도)을 2차 항까지 자동 스캔
mars_model <- earth(wage ~ ., data = Wage_clean, degree = 2)
# 4. 모델의 가중 계수 및 매듭 정보 요약 출력
summary(mars_model)5.2 summary() 결과 예상 출력 및 해설
Call: earth(formula=wage~., data=Wage_clean, degree=2)
coefficients
(Intercept) 95.32
h(age-42) -0.65
h(42-age) -1.20
year 1.15
...
Selected 12 of 18 terms, and 5 of 10 predictors
GCV 1234.56 RSS 45678.9 GRSq 0.34 RSq 0.35
- 매듭의 발견: 모형이
h(age-42)와h(42-age)를 찾았다는 것은 42세를 기점으로 급격히 임금 트렌드가 꺾인다는 물리적 매듭을 스스로 찾아냈음을 의미합니다. - 기울기의 해석: 42세 이전에는 나이가 1살 늘어날수록 임금이 1.20씩 빠르게 오르지만, 42세를 넘기는 순간 나이가 늘어남에 따라 0.65씩 임금이 완만하게 감소하기 시작하는 역 U자형 구조가 모델링에 피팅되었습니다.
5.3 기저 함수 및 모델 변수 기여도 평가
# 변수 중요도(Variable Importance) 확인
# 각 피처가 GCV 하락에 기여한 누적 크기 확인
evimp(mars_model)
# GCV 컷오프 그래프 시각화
plot(mars_model, which = 1)이 plot 결과물은 전진 및 후진 단계가 진행되며 항의 개수가 변함에 따라 GCV가 떨어지다가 멈추는 최적 지점(Sweet Spot)을 시각적으로 투영해 줍니다.
6. MARS 모형의 장점과 명확한 한계
6.1 장점
- 변수 변환 자동화: \(\log\), 루트 등의 곡선 지표 처리를 사람이 수동으로 잔차도를 보며 수식 조정을 할 필요 없이 완전 자동화합니다.
- 높은 해석력: 딥러닝이나 랜덤 포레스트 등의 블랙박스 모형과 달리, 구간별 선형 방정식과 명확한 꺾임 지점(매듭)을 수치 계수로 확인할 수 있어 임직원 대상 설명에 용이합니다.
- 상호작용 규명: 차원 상호작용(
degree) 파라미터 조정을 통해 다차원 공간 상의 복잡한 변수 간 결합 효과를 손쉽게 추정합니다.
6.2 단점
- 다중공선성 취약: 설명 변수들 간의 상관관계가 과도하게 큰 데이터 구조에서는 알고리즘이 매듭의 위치를 불안정하게 잡아 모델 강건성(Robustness)이 떨어질 수 있습니다.
- 미분 불가능성: 매듭 지점(\(x=t\))에서 각이 져 있으므로 기울기(Gradient)가 불연속적입니다. 수학적인 미분 연산을 필수로 요하는 전산 모델 결합 시 제약이 발생합니다.
요약
다변량 적응 회귀 스플라인(MARS)은 하키 스틱 형태의 힌지 함수들을 쌓아 올려 복잡한 비선형을 잡아내는 실무형 머신러닝 모형입니다.
정밀한 최적화를 위해 GCV라는 일반화 교차검증 비용을 적용하여 모델의 정확성과 단순함의 조화를 이루어 냅니다. R 실습 결과에서 확인했듯이 해석력과 비선형 탐지력을 동시에 얻고 싶을 때, 강력한 대안으로 MARS를 적극적으로 검토해 보시길 권장합니다.