[IBM AI course #1] Machine Learning with Python
Classification and Regression
분류(Classification)는 지도학습(Supervised Learning) 방식으로, 학습된 모델을 통해 새로운 데이터의 레이블을 예측한다.
주요 활용 사례
- 고객 이탈 예측 (churn prediction)
- 고객 세분화 (customer segmentation)
- 광고 캠페인 반응 예측
- 대출 상환 실패 예측
- 다중 클래스 의약품 처방 추천
분류 알고리즘은 이진 분류(binary classification)뿐 아니라, 다중 클래스 분류(multi-class classification)도 지원한다.
다중 클래스 문제를 해결하는 전략
- One-vs-All (OvA), One-vs-Rest (OvR) : 각 클래스에 대해 개별 이진 분류기 학습. 모든 모델이 예측한 클래스 확률 점수 중 가장 높은 값(argmax)을 선택하여 최종 클래스를 결정
- One-vs-One (OvO): 클래스 쌍마다 구분하는 이진 분류기 구성. 각 모델이 하나의 클래스를 선택하고, 모든 모델의 예측 결과에 대해 투표(voting)를 수행
예를 들어, 클래스가 4개라면?
| 전략 | 생성되는 이진 분류기 |
| OvR | N개 A vs (B+C+D), B vs (A+C+D), C vs (A+B+D), D vs (A+B+C) → 총 4개 |
| OvO | N(N-1)/2개 A vs B, A vs C, A vs D, B vs C, B vs D, C vs D → 총 6개 |
Decision Tree (결정 트리)
결정 트리는 데이터를 분류하는 데 사용되는 트리 기반 알고리즘이다.
구성 요소
- 내부 노드: 하나의 특성(feature)에 대한 테스트
- 분기(branch): 테스트 결과
- 말단 노드(leaf): 최종 클래스 레이블 할당
학습 과정
- 각 노드에서 데이터를 가장 잘 나누는 특성을 선택
- 정보 이득(Information Gain) 또는 지니 불순도(Gini Impurity)로 분할 품질 측정
- 불필요한 분기를 제거하는 가지치기(pruning)로 과적합 방지
결정 트리는 데이터 구조를 시각화하기 쉽고, 예측 결과를 해석하기 용이한 모델이다.
Regression Tree (회귀 트리)
회귀 트리는 결정 트리와 유사하지만 연속형 값 예측에 사용된다.
타겟 변수 유형
- 분류: 범주형(categorical)
- 회귀: 연속형(continuous)
학습 방식
- 데이터를 반복적으로 분할하여 하위 집합 생성
- 분할 기준은 MSE(Mean Squared Error)를 최소화하는 방향
- 각 노드마다 가장 좋은 분할을 제공하는 특성과 임계값(threshold) 선택
- 특성은 이진형 또는 다중 클래스형 모두 가능
연속형 특성의 임계값 선택은 데이터 크기나 분포에 따라 다양한 방식으로 설정할 수 있다.
Support Vector Machines (SVM)
SVM은 분류(classification)와 회귀(regression) 모델을 위한 지도학습 기법이다.
SVM은 데이터를 두 개의 클래스로 나누기 위해 결정 경계(hyperplane)를 찾으며, 이 경계는 마진(margin)을 최대화하는 방향으로 설정된다.
Scikit-learn에서는 SVM에 사용할 수 있는 여러 커널 함수가 제공하고 있다.
→ 선형(linear), 다항(polynomial), RBF(Radial Basis Function), 시그모이드(sigmoid)
장점
고차원 공간에서도 효과적이며 과적합에 강하다.
단점
대규모 데이터셋에 대해 학습 속도가 느리고, 노이즈 및 클래스 간 중첩에 민감하다.
활용 예
이미지 인식, 스팸 탐지, 머신러닝 일반 문제 등
✔ Decision Tree vs SVM
결정 트리는 feature가 많을수록 과적합 위험이 커지므로 feature selection이 중요하고,
SVM은 고차원 feature 공간에서 더 잘 작동하지만, feature 수가 적으면 성능이 오히려 떨어질 수 있다.
K-Nearest Neighbors (K-NN)
K-NN은 레이블이 지정된 포인트를 사용하여 새로운 데이터를 분류 또는 회귀하는 지도학습 알고리즘이다.
분류(classification)와 회귀(regression) 모두에 활용 가능하다.
최적의 K 값을 찾기 위해 레이블이 지정된 테스트 데이터셋을 이용해 다양한 K 값에 대해 정확도를 측정한다.
단점
클래스 불균형(한쪽 클래스가 더 많은 경우) 상황에서 기본적인 다수결 방식(majority voting)은 성능이 떨어질 수 있다.
→ 해결 방안: 분류에 가중치를 부여하거나 데이터 표현을 추상화
특징 선택의 중요성
불필요한 특성을 제거하면 최적 K 값이 낮아지고, 정확도와 계산 효율이 함께 향상된다. 어떤 특성이 중요한지 확인하려면 해당 특성을 포함한 경우와 제외한 경우의 K 튜닝 결과를 비교하여 성능 변화를 평가한다.
Bias-Variance Tradeoff 및 앙상블 기법
- Bias(편향)는 예측이 실제 값과 얼마나 가까운지를 나타내며, 정확도와 관련된다.
- Variance(분산)는 예측 결과가 얼마나 불안정하게 흔들리는지를 측정한다.
Bias-Variance Tradeoff 란?
모델이 복잡해질수록 bias는 줄고 variance는 커지며, 반대로 단순한 모델은 bias가 크고 variance는 작다.
편향과 분산을 줄이는 방법
- 편향과 분산을 모두 줄이기 위한 방법으로 약한 학습기와 강한 학습기의 개념이 등장한다.
- 약한 학습기 : 정답을 약간 낮게 예측하는 모델. 단독으로는 성능이 떨어짐
- 강한 학습기 : 약한 학습기 여러개를 조합하여 사용
- Bagging(bootstrap aggregating)은 여러 모델을 학습시켜 예측을 평균냄으로써 분산을 줄인다.
앙상블 기법
랜덤 포레스트는 배깅(Bagging)을 통해 여러 결정 트리를 부트스트랩 샘플(bootstrap datasets)에 학습시켜 예측을 종합하여 분산을 줄이고 과적합을 완화하는 방식이다.
Bagging vs Boosting
bagging과 boosting 결과를 비교하여 bias와 variance를 조절할 수 있다.
Bagging은 주로 분산(Variance)을 줄이기 위한 기법
여러 모델을 독립적으로 병렬 학습시키고, 그 예측을 평균하거나 투표함으로써 과적합(overfitting)을 줄이는 데 효과적.
→ Random Forest
Boosting은 주로 편향(Bias)을 줄이는 데 집중
모델을 순차적으로 학습시키며 이전 모델의 오류를 보완해 나감으로써 예측 성능을 점진적으로 개선. 언더피팅 방지
→ XGBoost, AdaBoost