[Tabular ML (2)] | Tabular Data를 위한 Classical Machine Learning 정리

대현·2026년 7월 11일

Tabular Data를 위한 정리


이번 글에서는
Tabular Data를 다룰 때 사용하는 전통적인 머신러닝 모델에 대해 정리해보고자 한다.

이전 글에서 Tabular Data가 무엇인지,
그리고 Tabular ML Pipeline이 어떻게 구성되는지 정리했다.

이번에는 그 다음 단계다.

표 형태의 데이터를 가지고
실제로 어떤 모델을 사용할 수 있을까?

이 질문에 답하는 내용이라고 보면 된다.

강의 자료에서는
Tabular Data에서 사용할 수 있는 대표적인 Classical ML 모델들을 다룬다.

- Linear Regression
- Logistic Regression
- k-Nearest Neighbors
- Decision Tree
- Ensemble
- Bagging
- Random Forest
- Boosting
- GBDT
- XGBoost, LightGBM, CatBoost
- Isolation Forest

한마디로 정리하면 이렇다.

딥러닝이 발전했더라도,
표 형태 데이터에서는 전통적인 머신러닝 모델이 여전히 강력하다.

특히 Tabular Data에서는
트리 기반 모델이 아직도 매우 강력한 기본 선택지로 사용된다.


다시 보는 Tabular Data

Tabular Data는
엑셀처럼 행과 열로 구성된 데이터를 말한다.

예를 들면 다음과 같다.

나이소득직업대출 여부
253000학생거절
407000회사원승인

여기서

나이, 소득, 직업 = 입력 특징(feature)
대출 여부 = 예측하려는 타깃(target)

이다.

즉, 모델은
나이, 소득, 직업 같은 feature를 보고
대출 여부를 예측해야 한다.

Tabular ML에서는 이런 형태의 데이터를 가지고
회귀, 분류, 이상치 탐지 같은 문제를 풀게 된다.


Classical ML이란?

Classical ML은
딥러닝 이전부터 널리 사용되어 온 전통적인 머신러닝 모델들을 말한다.

대표적으로는 다음과 같은 모델들이 있다.

선형 회귀
로지스틱 회귀
kNN
결정 트리
랜덤 포레스트
GBDT

처음에는 이런 생각이 들 수 있다.

요즘은 딥러닝이 대세인데
굳이 전통적인 머신러닝을 배워야 하나?

하지만 Tabular Data에서는 이야기가 조금 다르다.

이미지나 자연어에서는 딥러닝이 압도적인 경우가 많지만,
표 형태 데이터에서는 전통적인 머신러닝 모델들이 여전히 강력하다.

특히 트리 기반 모델들은
Tabular Data에서 매우 좋은 성능을 내는 경우가 많다.

그 이유는 Tabular Data가
feature type이 다양하고,
데이터 크기가 상대적으로 작고,
결측치나 이상치가 섞여 있는 경우가 많기 때문이다.


1. Linear Regression

먼저 선형 회귀다.

Linear Regression은
숫자 값을 예측하는 회귀 문제에 사용하는 모델이다.

예를 들면 다음과 같은 문제에 사용할 수 있다.

- 집값 예측
- 매출 예측
- 온도 예측
- 주가 수익률 예측

선형 회귀의 기본 아이디어는 단순하다.

입력 feature들의 가중합으로 target 값을 예측한다.

식으로 쓰면 다음과 같다.

예측값 = w1x1 + w2x2 + ... + wdxd + b

여기서 각 문자의 의미는 다음과 같다.

x1, x2, ... = 입력 feature
w1, w2, ... = 각 feature의 가중치
b = bias

예를 들어 집값을 예측한다고 해보자.

집값 = 면적 × w1 + 방 개수 × w2 + 역과의 거리 × w3 + b

이런 식으로 각 feature에 가중치를 곱해서 더한 뒤
최종 예측값을 만든다.


선형 회귀는 결국 선을 긋는 모델이다

선형 회귀는
데이터 사이에 가장 잘 맞는 직선을 찾는 모델이라고 볼 수 있다.

feature가 하나라면 직선이고,
feature가 두 개라면 평면이고,
feature가 많아지면 초평면이 된다.

즉, 선형 회귀는
데이터를 가장 잘 설명하는 선형 관계를 찾는 모델이다.


선형 회귀는 어떻게 학습할까?

선형 회귀는
실제 값과 예측값의 차이를 줄이는 방향으로 학습한다.

주로 사용하는 손실 함수는
Mean Squared Error, 즉 MSE다.

MSE = (실제값 - 예측값)^2의 평균

오차를 제곱하기 때문에
큰 오차에 더 큰 벌점을 준다.

예를 들어 실제 집값이 5억인데
모델이 4억으로 예측했다면 오차는 1억이다.

이런 오차들을 제곱해서 평균낸 값이 MSE다.

모델은 이 MSE를 최소화하도록
가중치 w와 bias b를 조정한다.


Regularization

선형 회귀는 단순하지만,
feature가 너무 많거나 feature끼리 비슷하면
학습 데이터에 과하게 맞춰질 수 있다.

이를 overfitting이라고 한다.

이 문제를 줄이기 위해
regularization을 사용할 수 있다.

대표적으로 Ridge와 Lasso가 있다.


Ridge Regression

Ridge는 L2 regularization을 사용하는 방식이다.

핵심은 다음과 같다.

큰 가중치에 벌점을 준다.

즉, 특정 feature의 가중치가 너무 커지는 것을 막는다.

모델이 하나의 feature에 과하게 의존하지 않도록
가중치를 전체적으로 작게 만든다.

Ridge = 가중치를 0에 가깝게 줄인다.

Lasso Regression

Lasso는 L1 regularization을 사용하는 방식이다.

Lasso의 특징은
일부 가중치를 정확히 0으로 만들 수 있다는 것이다.

Lasso = 중요하지 않은 feature의 가중치를 0으로 만든다.

이 말은 곧
feature selection 효과가 있다는 뜻이다.

즉, 중요하지 않은 feature를 모델에서 제거하는 것과 비슷한 효과를 낸다.


Ridge와 Lasso 차이

정리하면 다음과 같다.

구분특징
Ridge가중치를 전체적으로 작게 만든다
Lasso일부 가중치를 정확히 0으로 만든다
공통점overfitting을 줄이기 위해 사용한다

2. Logistic Regression

다음은 로지스틱 회귀다.

이름에는 회귀가 들어가지만,
실제로는 주로 분류 문제에 사용한다.

예를 들면 다음과 같다.

- 스팸 / 정상
- 합격 / 불합격
- 구매 / 미구매
- 질병 있음 / 없음

즉, Logistic Regression은
어떤 샘플이 특정 class에 속할 확률을 예측하는 모델이다.


먼저 선형 점수를 계산한다

로지스틱 회귀도 처음에는
선형 회귀처럼 점수를 계산한다.

점수 = w1x1 + w2x2 + ... + wdxd + b

하지만 이 점수는
음수가 될 수도 있고,
아주 큰 양수가 될 수도 있다.

분류 문제에서는
0부터 1 사이의 확률이 필요하다.

그래서 이 점수를
sigmoid 함수에 넣는다.


Sigmoid 함수

sigmoid 함수는
어떤 숫자가 들어와도 0과 1 사이의 값으로 바꿔준다.

확률 = sigmoid(점수)

점수가 크면 1에 가까워지고,
점수가 작으면 0에 가까워진다.

점수가 큼 → 클래스 1일 확률이 높음
점수가 작음 → 클래스 1일 확률이 낮음

보통은 다음처럼 분류한다.

확률 >= 0.5 → 클래스 1
확률 < 0.5 → 클래스 0

Decision Boundary

로지스틱 회귀의 decision boundary는
선형 점수가 0이 되는 지점이다.

w1x1 + w2x2 + ... + wdxd + b = 0

이 경계를 기준으로
한쪽은 클래스 1,
다른 한쪽은 클래스 0으로 분류된다.

즉, 로지스틱 회귀는
확률을 출력하지만
결국 선형 결정 경계를 가지는 모델이라고 볼 수 있다.


Logistic Regression의 손실 함수

로지스틱 회귀에서는
보통 Cross-Entropy Loss를 사용한다.

Cross-Entropy Loss는
모델이 틀린 답을 자신 있게 예측할수록
큰 벌점을 준다.

예를 들어 실제 정답은 1인데
모델이 0.01이라고 매우 자신 있게 틀리면
loss가 크게 나온다.

반대로 실제 정답이 1이고
모델이 0.9라고 예측하면
loss가 작게 나온다.

로지스틱 회귀는 선형 회귀처럼
닫힌 형태의 정답 공식이 없기 때문에
경사하강법 같은 반복 최적화 방법으로 학습한다.


다중 분류에서는 Softmax

Binary classification에서는 sigmoid를 사용하지만,
class가 여러 개인 다중 분류에서는 softmax를 사용한다.

예를 들어 class가 3개라면
각 class에 대한 확률을 출력해야 한다.

P(class A)
P(class B)
P(class C)

Softmax는 이 확률들의 합이 1이 되도록 만들어준다.


Linear / Logistic Regression의 장단점

선형 모델의 장점은 명확하다.

- 빠르다
- 단순하다
- 해석이 쉽다
- baseline으로 좋다

하지만 한계도 있다.

- 복잡한 비선형 관계를 직접 학습하기 어렵다
- feature interaction을 잘 잡기 어렵다
- 이상치에 영향을 받을 수 있다
- preprocessing과 feature engineering이 중요하다

그래서 선형 모델은
최종 모델로 쓰기보다는
먼저 기준 성능을 확인하는 baseline으로 자주 사용된다.


3. k-Nearest Neighbors, kNN

kNN의 핵심 아이디어는 매우 단순하다.

새로운 데이터와 가장 가까운 기존 데이터들을 보고 답을 정한다.

즉,

너와 가까운 이웃들이 어떤 답을 가졌는지 보고
너의 답도 정하겠다.

라는 방식이다.


kNN 예시

새로운 학생의 합격 여부를 예측한다고 해보자.

새 학생과 가장 비슷한 학생 5명을 찾았는데
그 결과가 다음과 같았다.

합격 4명
불합격 1명

그러면 kNN은
새 학생도 합격으로 예측한다.

이것이 classification에서의 kNN이다.


Classification과 Regression

kNN은 분류와 회귀 모두에 사용할 수 있다.

분류 문제에서는
가까운 이웃들의 다수결을 사용한다.

가까운 5개 샘플 중
A 클래스 3개
B 클래스 2개

→ A로 예측

회귀 문제에서는
가까운 이웃들의 평균을 사용한다.

가까운 집값:
3억, 3.2억, 3.5억

예측값 = 평균

kNN은 학습 단계가 거의 없다

kNN의 특이한 점은
별도의 학습 단계가 거의 없다는 것이다.

일반적인 모델은 학습을 통해
가중치나 트리 구조를 만든다.

하지만 kNN은
훈련 데이터를 그대로 저장해둔다.

그리고 예측할 때마다
새로운 데이터와 가장 가까운 훈련 샘플을 찾는다.

그래서 이렇게 말할 수 있다.

kNN에서는 데이터 자체가 모델이다.


거리 계산

kNN에서 가장 중요한 것은
가깝다는 것을 어떻게 정의하느냐이다.

보통은 유클리드 거리를 사용한다.

거리 = sqrt((x1 - x1')^2 + (x2 - x2')^2 + ...)

하지만 여기서 문제가 생긴다.

feature의 단위가 다르면
거리 계산이 왜곡될 수 있다.

예를 들어 다음 두 feature가 있다고 해보자.

나이: 20 ~ 60
연봉: 3000 ~ 10000

연봉의 값 범위가 훨씬 크기 때문에
거리 계산에서 연봉이 거의 모든 영향을 차지할 수 있다.

그래서 kNN에서는
StandardScaler 같은 feature scaling이 매우 중요하다.


k 값의 의미

kNN에서 k
참고할 이웃의 수다.

k가 작으면
매우 가까운 데이터만 보고 판단한다.

k가 작음
→ 주변 데이터에 민감
→ 복잡한 경계
→ 과적합 가능성

반대로 k가 크면
더 많은 데이터를 보고 판단한다.

k가 큼
→ 결과가 부드러움
→ 안정적
→ 세부 패턴을 놓칠 수 있음

따라서 k는
cross-validation을 통해 정하는 hyperparameter다.

분류 문제에서는
동률을 줄이기 위해 홀수 k를 사용하는 경우도 있다.


kNN의 장단점

장점은 다음과 같다.

- 직관적이다
- 구현이 쉽다
- 비선형 decision boundary도 표현할 수 있다

단점은 다음과 같다.

- 예측할 때 느릴 수 있다
- 메모리를 많이 사용할 수 있다
- feature scaling에 민감하다
- 고차원 데이터에서 성능이 떨어질 수 있다

즉, kNN은 좋은 baseline이 될 수 있지만,
데이터 표현과 차원 수에 크게 영향을 받는다.


4. Decision Tree

Decision Tree는
질문을 반복해서 데이터를 나누는 모델이다.

예를 들어 대출 승인 문제를 생각해보자.

소득 > 5000인가?
├─ 예
│  └─ 신용점수 > 700인가?
│     ├─ 예 → 승인
│     └─ 아니오 → 거절
└─ 아니오 → 거절

이처럼 결정 트리는
각 노드에서 질문을 던지고
그 답에 따라 왼쪽 또는 오른쪽 가지로 내려간다.


Decision Tree는 어떻게 나눌까?

각 내부 노드에서는 두 가지를 결정한다.

1. 어떤 feature를 사용할 것인가?
2. 어떤 threshold로 나눌 것인가?

예를 들어 다음과 같은 기준이 가능하다.

나이 <= 30
소득 > 5000
키 <= 170
신용점수 > 700

이런 조건을 기준으로 데이터를 나누고,
다시 각 영역에서 또 데이터를 나눈다.

이 과정을 반복하면
트리 구조가 만들어진다.


Leaf Node

트리의 마지막 노드를 leaf node라고 한다.

Leaf node에서는 최종 예측값을 출력한다.

회귀 문제에서는
해당 leaf에 속한 데이터들의 평균값을 예측값으로 사용한다.

회귀 문제 → leaf에 속한 target의 평균

분류 문제에서는
해당 leaf에서 가장 많은 class를 예측값으로 사용한다.

분류 문제 → leaf에서 가장 많은 class

어떤 기준으로 나누는가?

결정 트리는
가능한 split을 비교해서
데이터를 가장 잘 나누는 기준을 선택한다.

분류 문제에서는 주로 다음 기준을 사용한다.

- Gini Index
- Entropy

한 노드 안에 하나의 class만 있으면
매우 순수한 노드다.

A, A, A, A → 순수함
A, A, B, B → 불순함

결정 트리는
split 이후 불순도가 가장 많이 줄어드는 방향을 선택한다.

회귀 문제에서는
노드 내부의 제곱오차를 줄이는 방향으로 split을 선택한다.


결정 트리의 과적합

결정 트리는 매우 직관적이고 강력하지만,
과적합에 취약하다.

트리가 너무 얕으면
중요한 패턴을 놓친다.

너무 얕은 트리 → 과소적합

반대로 트리가 너무 깊으면
훈련 데이터를 거의 외워버릴 수 있다.

너무 깊은 트리 → 과적합

완전히 자란 트리는
훈련 데이터에서는 거의 완벽한 성능을 낼 수 있지만,
새로운 데이터에는 잘 일반화되지 않을 수 있다.


가지치기 Pruning

이 문제를 막기 위해
가지치기를 사용할 수 있다.

가지치기는 크게 두 가지로 나눌 수 있다.

Pre-pruning
Post-pruning

Pre-pruning은
트리가 너무 복잡해지기 전에 멈추는 방식이다.

예를 들면 다음과 같은 조건을 줄 수 있다.

max_depth
min_samples_leaf
min_impurity_decrease

Post-pruning은
일단 큰 트리를 만든 뒤
불필요한 가지를 제거하는 방식이다.


Decision Tree의 장단점

장점은 다음과 같다.

- 규칙 기반이라 이해하기 쉽다
- 비선형 관계를 잘 잡는다
- feature interaction을 잘 학습한다
- feature scaling이 거의 필요 없다

단점은 다음과 같다.

- 너무 깊어지면 과적합된다
- 데이터가 조금만 바뀌어도 트리 구조가 달라질 수 있다
- 복잡도 제어가 없으면 일반화 성능이 낮아질 수 있다

즉, Decision Tree는
해석 가능한 강력한 모델이지만,
단독으로 쓰기에는 불안정할 수 있다.

그래서 이 결정 트리를 여러 개 모은
앙상블 모델들이 등장한다.


5. Ensemble

Ensemble은
여러 모델을 합쳐 하나의 더 강한 모델을 만드는 방법이다.

한 사람의 판단보다
여러 사람의 판단을 모으면 더 안정적인 결정을 내릴 수 있다.

모델도 마찬가지다.

모델 1의 예측
모델 2의 예측
모델 3의 예측
        ↓
평균 또는 다수결
        ↓
최종 예측

앙상블이 효과를 내려면
각 모델이 서로 조금씩 달라야 한다.

예를 들면 다음과 같다.

- 서로 다른 데이터로 학습
- 서로 다른 알고리즘 사용
- 서로 다른 hyperparameter 사용

모든 모델이 똑같은 예측만 한다면
여러 개를 합쳐도 큰 의미가 없다.


Ensemble의 두 가지 큰 흐름

앙상블은 크게 두 가지로 나눌 수 있다.

Bagging
Boosting

차이를 간단히 말하면 다음과 같다.

Bagging = 여러 모델을 독립적으로 학습하고 합친다.
Boosting = 모델을 순서대로 학습하면서 이전 모델의 실수를 보완한다.

6. Bagging

Bagging은
Bootstrap Aggregating의 줄임말이다.

핵심 과정은 다음과 같다.

1. 원본 데이터에서 여러 훈련 데이터 세트를 만든다.
2. 각 데이터 세트로 모델을 독립적으로 학습한다.
3. 결과를 평균 또는 다수결로 합친다.

각 모델은 서로 독립적으로 학습한다.

그래서 병렬 실행이 가능하다.

데이터 1 → 모델 1
데이터 2 → 모델 2
데이터 3 → 모델 3
              ↓
           평균/투표

Bootstrap Sampling

Bagging에서는
원본 데이터에서 복원 추출을 통해
여러 데이터 세트를 만든다.

복원 추출은
데이터를 하나 뽑은 뒤 다시 넣고 또 뽑는 방식이다.

예를 들어 원본 데이터가 다음과 같다고 하자.

A B C D E

Bootstrap sampling을 하면
다음과 같은 데이터 세트가 만들어질 수 있다.

A A C D D
B C C E E
A B B D E

중복된 샘플도 생기고,
선택되지 않은 샘플도 생긴다.

이렇게 만들어진 여러 데이터 세트로
각각 모델을 학습시킨다.


Bagging의 목적

Bagging의 핵심 목적은
분산을 줄이는 것이다.

즉, 모델이 데이터 변화에 따라
너무 크게 흔들리는 문제를 완화한다.

하나의 모델은 특정 데이터에 민감할 수 있다.

하지만 여러 모델의 예측을 평균내면
예측이 더 안정적이 된다.

간단히 말하면 다음과 같다.

Bagging = 여러 모델의 평균으로 예측을 안정화한다.

7. Random Forest

Random Forest는
Bagging을 기반으로 한 대표적인 모델이다.

한마디로 말하면 다음과 같다.

Random Forest = Bagging + 여러 Decision Tree + 무작위 feature 선택

일반 Bagging에서는
데이터만 무작위로 뽑는다.

하지만 Random Forest는
두 가지 무작위성을 사용한다.

1. 데이터를 무작위로 뽑는다.
2. 각 노드에서 사용할 feature도 무작위로 일부만 선택한다.

왜 feature도 무작위로 고를까?

만약 모든 트리가
항상 가장 강력한 feature만 사용한다면
트리들이 서로 너무 비슷해질 수 있다.

예를 들어 대출 승인 문제에서
신용점수가 너무 강력한 feature라고 해보자.

모든 트리가 계속 신용점수만 기준으로 split하면
트리들이 거의 비슷해진다.

그러면 여러 트리를 합치는 효과가 줄어든다.

그래서 Random Forest는
각 노드에서 일부 feature만 후보로 보고
그중에서 best split을 찾는다.

이렇게 하면 트리들이 서로 다르게 만들어지고,
앙상블 효과가 커진다.


Random Forest의 장단점

장점은 다음과 같다.

- 기본 성능이 좋다
- 과적합에 비교적 강하다
- 비선형 관계를 잘 학습한다
- feature scaling이 거의 필요 없다
- Tabular Data에서 자주 좋은 성능을 낸다

단점은 다음과 같다.

- 단일 Decision Tree보다 해석이 어렵다
- 트리가 많으면 메모리와 계산량이 증가한다

그래도 Random Forest는
Tabular Data에서 매우 좋은 기본 선택지가 될 수 있다.


8. Boosting

Boosting은 Bagging과 다르게
모델을 순서대로 학습한다.

핵심은 다음과 같다.

앞 모델이 틀린 부분을
다음 모델이 보완한다.

흐름은 다음과 같다.

모델 1 학습
↓
모델 1이 틀린 부분 확인
↓
모델 2가 틀린 부분에 집중
↓
모델 3이 남은 오류를 다시 보완
↓
모든 모델을 합침

Bagging은 모델들이 서로 독립적이지만,
Boosting은 앞 모델의 결과에 의존한다.


AdaBoost와 Gradient Boosting

Boosting에도 여러 종류가 있다.

대표적으로 AdaBoost와 Gradient Boosting이 있다.

AdaBoost는
이전 모델이 잘못 분류한 샘플에
더 큰 가중치를 준다.

틀린 샘플의 중요도를 높인다.
다음 모델이 그 샘플에 더 집중하게 한다.

Gradient Boosting은
현재 모델이 남긴 loss를 줄이는 방향으로
새 모델을 학습한다.

즉, 남은 오류를 계속 수정해나간다.

현대적인 Tabular ML 라이브러리들은
대부분 Gradient Boosted Decision Trees,
즉 GBDT를 기반으로 한다.


9. GBDT

GBDT는
Gradient Boosting Decision Trees의 약자다.

이름 그대로
Decision Tree를 여러 개 순차적으로 연결해서
앞 트리의 실수를 뒤 트리가 수정하는 방식이다.


GBDT의 기본 과정

GBDT는 보통 다음 흐름으로 학습한다.

먼저 전체 target의 평균으로 예측을 시작한다.

초기 예측 = 전체 y의 평균

그다음 실제값과 현재 예측값의 차이를 계산한다.

잔차 = 실제값 - 현재 예측값

새로운 Decision Tree는
원래 정답을 직접 예측하는 것이 아니라
이 잔차를 예측한다.

그다음 기존 예측에
새 트리의 예측을 조금 더한다.

새 예측 = 기존 예측 + 학습률 × 새로운 트리의 예측

식으로 쓰면 다음과 같다.

F_m(x) = F_(m-1)(x) + ηh_m(x)

여기서 각 문자의 의미는 다음과 같다.

F_(m-1) = 지금까지 만든 모델
h_m = 새로 추가한 Decision Tree
η = learning rate

왜 Gradient Boosting이라고 부를까?

Gradient Boosting이라는 이름이 붙은 이유는
새 모델이 남은 오류, 즉 gradient 방향을 학습하기 때문이다.

Squared Error를 사용하는 경우에는
잔차가 gradient와 연결된다.

그래서 새 트리는
현재 모델이 못 맞춘 부분을 예측하도록 학습된다.

즉,

현재 모델의 부족한 부분을
새로운 트리가 조금씩 보완한다.

라고 이해하면 된다.


왜 얕은 트리를 사용할까?

GBDT에서는 보통
매우 깊은 트리 하나를 쓰기보다
얕은 트리를 여러 개 사용한다.

각 트리는 약한 학습기 역할을 한다.

트리 1: 큰 흐름 학습
트리 2: 남은 오류 수정
트리 3: 또 남은 오류 수정
...

이렇게 약한 트리들을 순차적으로 더하면서
점점 강한 모델을 만든다.


GBDT의 주요 Hyperparameter

GBDT에서 중요한 hyperparameter는 다음과 같다.

- 트리 개수
- learning rate
- tree depth
- number of leaves
- subsampling ratio

트리 개수가 많고 깊이가 깊을수록
모델의 표현력은 좋아진다.

하지만 그만큼 overfitting 위험도 커진다.

Learning rate가 작으면
천천히 안정적으로 학습하지만
더 많은 트리가 필요하다.

그래서 GBDT는 강력하지만
tuning이 중요하다.


10. XGBoost, LightGBM, CatBoost

XGBoost, LightGBM, CatBoost는
모두 GBDT를 효율적으로 구현한 대표적인 라이브러리다.

공통점은
GBDT 원리를 기반으로 한다는 것이다.

하지만 각각 초점이 조금 다르다.


XGBoost

XGBoost는
강력하고 안정적인 범용 GBDT 라이브러리다.

특징은 다음과 같다.

- robust하다
- scalable하다
- regularization 기능이 강하다
- 다양한 문제에 널리 사용된다

Tabular Data 문제에서
오랫동안 강력한 baseline으로 사용되어 왔다.


LightGBM

LightGBM은
빠른 학습과 메모리 효율에 초점을 둔 GBDT 라이브러리다.

특징은 다음과 같다.

- 큰 데이터에서 빠르다
- 메모리 효율이 좋다
- leaf-wise 방식으로 트리를 성장시킨다

하지만 빠르고 강력한 만큼
overfitting에는 주의해야 한다.


CatBoost

CatBoost는
범주형 feature 처리에 강점이 있는 GBDT 라이브러리다.

특징은 다음과 같다.

- categorical feature 처리에 강하다
- 문자열/범주형 데이터를 다루기 편하다
- 별도의 복잡한 인코딩 부담을 줄여준다

Tabular Data에는 범주형 feature가 자주 등장하기 때문에
CatBoost는 실무에서도 유용하게 사용될 수 있다.


세 라이브러리 비교

FrameworkFocus
XGBoostRobust, scalable tree boosting
LightGBMFast and memory-efficient training
CatBoostEffective handling of categorical features

결국 세 모델 모두 GBDT 계열이지만,
각각 해결하고자 하는 실용적인 문제가 조금 다르다.


11. Isolation Forest

Isolation Forest는
이상치 탐지에 사용하는 알고리즘이다.

예를 들어 다음과 같은 문제에 사용할 수 있다.

- 카드 이상 결제 탐지
- 네트워크 침입 탐지
- 센서 고장 탐지
- 비정상 거래 탐지

핵심 아이디어는 다음과 같다.

이상치는 정상 데이터보다 쉽게 고립된다.


이상치는 왜 쉽게 고립될까?

정상 데이터는 보통 비슷한 위치에 모여 있다.

반면 이상치는
다른 데이터들과 멀리 떨어져 있는 경우가 많다.

그래서 데이터를 무작위로 나눌 때
이상치는 적은 split만으로도 혼자 분리될 수 있다.

반대로 정상 데이터는
서로 밀집되어 있기 때문에
특정 샘플 하나를 고립시키려면 더 많은 split이 필요하다.


Isolation Tree 만들기

Isolation Forest는
여러 개의 Isolation Tree를 만든다.

각 트리는 다음 방식으로 만들어진다.

1. 데이터 일부를 무작위로 선택한다.
2. feature 하나를 무작위로 선택한다.
3. split value도 무작위로 선택한다.
4. 샘플이 혼자 분리되거나 최대 깊이에 도달할 때까지 반복한다.

이 과정을 여러 번 반복해서
많은 Isolation Tree를 만든다.


Anomaly Score

각 샘플에 대해
여러 트리에서의 평균 path length를 계산한다.

path length가 짧음 → 쉽게 고립됨 → 이상치 가능성 높음
path length가 김 → 고립되기 어려움 → 정상 가능성 높음

중요한 점은
Isolation Forest는 정답 label이 필요하지 않다는 것이다.

즉, 이 데이터가 정상인지 이상치인지
미리 표시되어 있지 않아도 사용할 수 있다.

그래서 unsupervised anomaly detection에 사용할 수 있다.


12. 전체 모델 비교

지금까지 정리한 모델들을 비교하면 다음과 같다.

모델주 사용 목적장점단점
Linear Regression숫자 예측빠르고 해석 쉬움비선형 관계에 약함
Logistic Regression분류확률 출력, 해석 쉬움복잡한 경계에 약함
kNN분류 / 회귀직관적, 비선형 가능예측이 느리고 scaling 필요
Decision Tree분류 / 회귀규칙이 명확하고 비선형 학습 가능과적합, 불안정
Random Forest분류 / 회귀안정적이고 기본 성능 좋음단일 트리보다 해석 어려움
GBDT분류 / 회귀Tabular Data에서 매우 강력tuning 필요
Isolation Forest이상치 탐지label 없이 이상치 탐지 가능parameter와 데이터 특성 영향

13. Bagging과 Boosting 차이

이 부분은 꼭 정리하고 넘어가야 한다.

Bagging과 Boosting은 둘 다 앙상블이지만
학습 방식이 다르다.


Bagging

Bagging은
여러 모델을 독립적으로 학습한다.

여러 모델을 따로 학습
→ 결과를 평균 또는 투표
→ 분산 감소

대표 모델은 Random Forest다.


Boosting

Boosting은
모델을 순서대로 학습한다.

앞 모델의 실수를 뒤 모델이 수정
→ 점점 강한 모델 생성
→ 남은 오류를 줄임

대표 모델은 다음과 같다.

AdaBoost
GBDT
XGBoost
LightGBM
CatBoost

간단히 외우면 다음과 같다.

Bagging = 따로 학습하고 합침
Boosting = 앞 모델의 실수를 뒤 모델이 수정

14. 전처리 필요 여부

모델마다 전처리 요구가 다르다.

특히 scaling이 필요한 모델과
상대적으로 덜 필요한 모델을 구분해야 한다.


Scaling이 중요한 모델

다음 모델들은 feature scale에 민감하다.

- Linear Regression
- Logistic Regression
- kNN

특히 kNN은 거리 기반 모델이기 때문에
scaling이 매우 중요하다.

feature의 범위가 다르면
큰 범위를 가진 feature가 거리 계산을 지배할 수 있다.


Scaling이 크게 필요하지 않은 모델

다음 모델들은 scaling이 크게 필요하지 않은 경우가 많다.

- Decision Tree
- Random Forest
- GBDT
- XGBoost
- LightGBM
- CatBoost
- Isolation Forest

트리 기반 모델은
값의 크기 자체보다
특정 기준값보다 작은지 큰지를 기준으로 split하기 때문이다.

x <= threshold ?

그래서 feature scale이 달라도
선형 모델이나 거리 기반 모델만큼 큰 영향을 받지 않는다.


15. 이 강의의 최종 결론

이 강의가 전달하려는 핵심은 다음과 같다.

딥러닝이 발전했더라도,
표 형태 데이터에서는 전통적인 머신러닝이 여전히 매우 강력하다.

특히 Tabular Data에서는
다음 순서로 모델을 시도해볼 수 있다.

1. Logistic Regression 같은 단순 모델로 baseline 확인
2. Decision Tree 또는 Random Forest 적용
3. XGBoost, LightGBM, CatBoost 적용
4. Cross-validation으로 성능 비교

전통적인 머신러닝 모델은
학습이 빠르고,
평가가 쉽고,
해석이 비교적 쉬우며,
Tabular Data에서 높은 성능을 낼 수 있다.

그래서 classical ML은
낡은 대안이 아니라
Tabular Data에서 먼저 시도해볼 가치가 있는 강력한 기본 선택지다.


전체 흐름 한 줄 요약

마지막으로 각 모델을 아주 짧게 정리하면 다음과 같다.

Linear Regression
→ 직선으로 숫자 값을 예측

Logistic Regression
→ 선형 점수를 확률로 바꿔 분류

kNN
→ 가까운 데이터를 보고 예측

Decision Tree
→ 질문을 반복하며 예측

Bagging
→ 여러 모델을 독립적으로 만든 뒤 평균

Random Forest
→ 무작위성을 추가한 여러 결정 트리

Boosting
→ 앞 모델의 실수를 뒤 모델이 수정

GBDT
→ 잔차를 결정 트리로 계속 학습

XGBoost / LightGBM / CatBoost
→ GBDT를 실용적으로 최적화한 라이브러리

Isolation Forest
→ 쉽게 고립되는 데이터를 이상치로 판단

이번 내용을 정리하면서
Tabular Data에서는 모델의 화려함보다
데이터의 특성과 문제 유형에 맞는 모델 선택이 중요하다는 것을 느꼈다.

딥러닝이 항상 정답은 아니다.

특히 표 형태 데이터에서는
단순한 모델부터 시작해서
트리 기반 앙상블 모델로 점점 확장해보는 방식이
현실적인 접근이라는 생각이 들었다.

profile
도전을 멈추지 않는 개발자

0개의 댓글