Q1. 결정 트리의 장점과 단점은 무엇인가요?
A1. 결정 트리는 직관적이고 해석이 쉬우며 시각화가 용이하다는 장점이 있다. 하지만 과적합에 민감하고, 작은 데이터 변화에도 트리 구조가 크게 달라질 수 있다는 단점이 있다. 따라서 단독보다는 앙상블 기법과 함께 사용하는 경우가 많다.
Q2. 부스팅은 어떤 특징을 가진 앙상블 기법인가요?
A2. 부스팅은 이전 모델의 오류를 보완하면서 약한 학습기를 순차적으로 결합해 성능을 향상시키는 기법이다. 대표적인 부스팅 모델로는 AdaBoost, Gradient Boosting, XGBoost, LightGBM, CatBoost 등이 있으며, 일반적으로 정확도가 높지만 계산 비용이 크다. 특히 LightGBM은 속도가 빠르고 메모리 효율이 높으며, CatBoost는 범주형 변수 처리에 강점을 가진다.
Q3. 차원 축소 기법인 주성분 분석과 요인 분석의 차이는 무엇인지 설명해 주세요.
A3. 주성분 분석(PCA)은 변수 간 분산을 최대화하는 방향으로 데이터를 축소하며, 주로 데이터 압축과 시각화에 사용된다. 반면 요인 분석(FA)은 관측된 변수들 간의 상관관계를 설명하는 잠재 요인을 추정하는 데 중점을 둔다. 즉, PCA는 설명력 중심, FA는 해석력 중심의 차원 축소 기법이다.
결정 트리는 데이터를 조건에 따라 분할하며 분류/회귀를 수행하는 트리 기반 모델이다. 각 노드는 하나의 조건, 각 리프 노드는 최종 예측 결과를 의미한다.
| 항목 | 설명 |
|---|---|
| 직관적 | 트리 형태로 분기 → 사람이 보기 쉽고 이해 가능 |
| 스케일링 불필요 | StandardScaler, MinMaxScaler 없이 사용 가능 |
| 범주형 처리 가능 | 인코딩 없이 범주형 변수 처리 가능 (일부 구현체) |
| 비선형 관계 처리 가능 | 분기 구조이기 때문에 복잡한 경계도 학습 가능 |
| 빠른 학습 속도 | 단일 모델 학습 속도가 빠름 |
| 시각화 가능 | plot_tree() 등으로 구조 확인 가능 |
| 항목 | 설명 |
|---|---|
| 과적합(overfitting) | 트리 깊이를 제한하지 않으면 train 성능은 높지만 test 성능은 떨어짐 |
| 작은 변화에 민감 | 데이터 조금만 바뀌어도 트리 구조 크게 달라짐 |
| 불안정성 | 결정 기준이 다양해서 동일 데이터라도 구조가 달라질 수 있음 |
| 예측 성능 제한적 | 단일 결정 트리는 앙상블보다 성능이 낮음 |
from sklearn.tree import DecisionTreeClassifier, plot_tree
model = DecisionTreeClassifier(
max_depth=4,
random_state=42
).fit(X_train, y_train)
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
plot_tree(model, feature_names=X.columns, class_names=['no', 'yes'], filled=True)
plt.show()
부스팅(Boosting)이란 여러 개의 약한 학습기(weak learner)를 순차적으로 학습시켜, 이전 모델의 오차를 보완하는 방식으로 성능을 점점 개선하는 순차적 앙상블 기법이다.
약한 모델들이 차례로 학습하며, 오답에 더 집중하게 만드는 것이 핵심!
| 모델 | 특징 | 장점 | 단점 |
|---|---|---|---|
| AdaBoost | 오분류 샘플에 가중치 부여단순한 트리를 반복 | 간단하고 해석력 좋음과적합 방지 | 이상치에 민감, 병렬화 어려움 |
| Gradient Boosting | 오차(잔차)를 줄이는 방향으로 순차 학습 | 튜닝 시 성능 매우 우수 | 느림, 과적합 가능성 |
| XGBoost | GBDT 기반 + 정규화 + 결측치 처리 | 빠르고 강력L1/L2 정규화 가능 | 구조 복잡초보자 진입장벽 |
| LightGBM | 리프 중심 성장대용량, 고차원에 최적 | 빠르고 효율적대규모 데이터에 최적 | 과적합 주의이해 어려움 |
| CatBoost | 범주형 자동 처리파라미터 튜닝 적음 | 범주형에 강함Overfitting 적음 | 학습 느릴 수 있음 |
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
base_model = DecisionTreeClassifier(max_depth=1)
ada = AdaBoostClassifier(
base_estimator=base_model,
n_estimators=100,
learning_rate=0.5,
random_state=42
).fit(X_train, y_train)
y_pred = ada.predict(X_test)
from xgboost import XGBClassifier
xgb = XGBClassifier(
n_estimators=100,
learning_rate=0.1,
max_depth=3,
random_state=42
).fit(X_train, y_train)
y_pred = xgb.predict(X_test)
PCA: Principal Component Analysis
| 항목 | 설명 |
|---|---|
| 목적 | 고차원 데이터를 저차원으로 압축 (차원 축소) |
| 핵심 | 최대 분산을 가지는 축으로 데이터 재표현 |
| 출력 | 직교 성분 (주성분), 분산 순서대로 나열 |
| 사용처 | 시각화, 고차원 제거, 다중공선성 제거 |
| 전제조건 | 특성 간 상관관계 존재 필요 |
| 기법 | 선형변환 (SVD 또는 고유값분해) |
| 노이즈 | 포함됨 (전체 분산을 기준으로 하기 때문) |
FA: Factor Analysis
| 항목 | 설명 |
|---|---|
| 목적 | 잠재 요인(latent factor) 추출 |
| 핵심 | 공통 요인과 고유 요인으로 분산 분해 |
| 출력 | 변수 간 공통된 구조 (latent variable) |
| 사용처 | 심리학, 마케팅, 설문 데이터 분석 |
| 전제조건 | 변수 간 높은 상관성 & 요인 존재 가정 |
| 기법 | 공분산 행렬 분석, 최대우도법 |
| 노이즈 | 제거함 (공통성과 고유오차 분리함) |
| 구분 | PCA | 요인분석 (FA) |
|---|---|---|
| 목적 | 차원 축소 | 잠재 요인 추정 |
| 노이즈 처리 | 포함 | 제거 |
| 결과 해석 | 통계적 축 | 의미 있는 요인 |
| 적용 분야 | 기계학습 전처리 | 심리학, 사회과학 |
| 수학적 방식 | 고유값 분해 | 공통성 기반 요인 모델 |
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
X_scaled = StandardScaler().fit_transform(X)
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
# 시각화
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y)
plt.xlabel("PC1")
plt.ylabel("PC2")
plt.title("PCA projection")
plt.show()
결정 트리의 가장 큰 장점은 모델의 결과를 이해하기 쉽다는 것입니다. 트리의 형태로 결정 과정을 시각적으로 나타낼 수 있어, 어떤 속성이 결과에 영향을 미치는지 명확하게 파악할 수 있습니다. 또한, 데이터의 사전 처리가 상대적으로 적게 필요하며, 수치형과 범주형 데이터 모두를 처리할 수 있습니다.
반면, 결정 트리는 과적합(overfitting)이 일어나기 쉬워, 훈련 데이터에는 잘 맞지만 새로운 데이터에 대한 예측 성능이 떨어질 수 있습니다. 특히 트리의 깊이가 깊어질수록 특정 데이터에 과도하게 맞춰져 일반화하는 능력이 저하됩니다. 또한, 작은 데이터 변화에도 모델의 구조가 크게 변할 수 있어, 안정성이 낮을 수 있습니다.
토픽에서 배운 AdaBoost 이외의 부스팅 모델에는 무엇이 있는지에 대해 구글 등을 활용하여 직접 리서치해보고, 각 부스팅 모델의 특징, 장단점에 대해 말해주세요.
부스팅(Boosting)은 여러 약한 학습기(weak learners)를 결합하여 강력한 학습기(strong learner)를 만드는 앙상블 기법입니다. 부스팅 모델은 순차적으로 학습을 진행하며, 각 단계에서 이전 모델의 오류를 줄이는 방식으로 성능을 향상시킵니다. AdaBoost 외에 자주 사용되는 부스팅 기법으로는 XGBoost, LightGBM, CatBoost가 있습니다.
(1) XGBoost
Gradient Boosting의 확장판으로, 정규화(term regularization)와 같은 고급 기능을 추가하여 과적합을 방지
장점: 높은 성능, 빠른 학습 속도, 분산 컴퓨팅 지원
단점: 복잡한 하이퍼파라미터 튜닝 필요, 상대적으로 높은 메모리 사용량
(2) LightGBM
Microsoft에서 개발한 알고리즘으로, 대용량 데이터와 고차원 데이터에 최적화.
장점: 빠른 학습 속도와 낮은 메모리 사용량, 높은 정확도를 자랑합니다.
단점: 작은 데이터셋이나 범주형 데이터가 많은 경우에는 성능이 저하될 수 있습니다
(3) CatBoost
Yandex에서 개발한 알고리즘으로, 범주형 데이터를 효율적으로 처리할 수 있도록 설계.
장점: 범주형 데이터를 별도의 전처리 없이도 잘 처리하며, 높은 예측 성능과 과적합 방지 기능을 가지고 있습니다.
단점: 다른 부스팅 알고리즘에 비해 학습 속도가 느릴 수 있으며, GPU 설정이 필요할 수 있습니다
주성분 분석(PCA)과 요인 분석(FA)은 모두 고차원 데이터를 저차원으로 축소하기 위한 기법이지만, 그 목적과 접근 방식에서 차이가 있다.
(1) 주성분 분석 (PCA)
주성분 분석은 데이터의 분산(variability)을 최대한 보존하면서 차원을 줄이는 기법이다. 이 방법은 데이터의 주성분을 도출하여 원래 변수들을 해당 주성분으로 대체하는 방식을 취한다. 즉, 데이터의 분포를 가장 잘 설명할 수 있는 새로운 축(주성분)을 찾고, 이를 기준으로 데이터를 변환한다. PCA는 변수 간 상관관계를 고려하지만, 각 변수의 본래 의미에 대해서는 큰 비중을 두지 않는다.
(2) 요인 분석 (FA)
요인 분석은 관찰된 변수들이 몇 개의 잠재적 요인에 의해 설명될 수 있다는 가정 하에 수행된다. 즉, 관찰된 여러 변수들이 공통된 몇 개의 '요인'에 영향을 받는다고 보는 접근 방식이다. 예를 들어, 학생 성적 데이터에서 여러 과목 점수가 '학업 능력'이라는 공통 요인에 의해 설명될 수 있다고 가정하는 것과 유사하다. 요인 분석은 변수 간 관계와 데이터 구조를 이해하기 위해 주로 사용된다.
요약하면,
• PCA는 데이터의 분산을 최대한 보존하는 방향으로 차원을 축소하는 기법이며, 주로 데이터의 구조적 압축을 목적으로 한다.
• FA는 관찰된 변수를 설명하는 잠재 요인을 도출하고 변수 간의 관계를 해석하는 데 중점을 둔다.
따라서, PCA는 분산 보존에 중점을 둔 기법인 반면, FA는 변수 간의 관계 해석에 중점을 두는 기법이라는 차이가 있다.