[머신러닝] 분류 학습 예측 모델 - KNN / Random Forest / 3가지 모델의 단점 및 원인
2025. 2. 27. 21:51ㆍAI & DS/머신러닝
K-최근접 이웃 (KNN)
- KNN은 새로운 데이터가 들어오면 가장 가까운 K개의 이웃을 찾아 다수결로 예측하는 방식
- 1. 새로운 데이터(X_new = (0,0))가 들어옴
- 2. 기존 데이터에서 가장 가까운 3개의 이웃(K=3)을 찾음
- 3. 3개의 이웃 중 다수가 속한 클래스를 예측값으로 선택
- [KNN 예측 과정] ( K=3일 때 가장 가까운 이웃 3개 )
- 예를 들어, 주변 3개 데이터 중 2개가 Class 1(악성)이고, 1개가 Class 0(양성)이라면 Class 1(악성)으로 예측
📌 KNN의 결정 경계 변화
- 기존 데이터가 추가되지 않는 한 결정 경계는 변화하지 않음
- 하지만 K 값을 조정하면 결정 경계가 달라질 수 있음
- K=1이면 단순히 가장 가까운 1개의 데이터 기준
- K=10이면 더 부드러운 경계를 형성
📌 KNN과 로지스틱 회귀의 차이
- 로지스틱 회귀 → 데이터를 직선으로 나누려고 함
- KNN → 데이터 주변의 가장 가까운 이웃들을 보고 나누므로, 좀 더 복잡한 경계를 만들 수 있음
- KNN은 비선형 데이터에 강하지만, 데이터가 많아지면 속도가 느려질 수 있음
랜덤 포레스트 (Random Forest)
- 랜덤 포레스트는 여러 개의 결정 트리(Decision Tree)를 조합하여 예측하는 모델
- 1. 여러 개의 결정 트리가 각각 학습됨
- 2. 새로운 데이터(X_new = (0,0))가 들어오면 각 트리가 개별적으로 예측
- 3. 최종적으로 여러 트리의 다수결을 통해 예측값 결정
📌 각 트리의 예측
- 랜덤 포레스트 내부에는 여러 개의 결정 트리가 있음
- 각각의 결정 트리는 자신만의 방식으로 예측 (일부는 Class 1(🔵), 일부는 Class 0(🔴))
- 다수결(majority vote)을 통해 최종 예측을 결정
- 각각의 결정 트리는 데이터의 일부만 학습하고, 최종적으로 여러 트리의 다수결을 통해 최종 클래스를 예측함
-> 따라서 결정 경계가 매우 조각조각 나뉘고 복잡한 형태를 가짐
📌 랜덤 포레스트의 결정 경계 변화
- 랜덤 포레스트는 결정 트리들이 다양한 경계를 생성하면서 비선형적인 복잡한 경계를 형성
- 새로운 데이터가 추가되면 트리의 학습 과정이 변하면서 결정 경계도 바뀔 수 있음
3가지 분류 예측 학습 모델의 단점과 원인
로지스틱 회귀 | 직선 (선형 경계) | 간단하고 빠름 | 복잡한 패턴을 학습하기 어려움 |
KNN (K=3) | 곡선 형태, 국소적 | 데이터 패턴을 유연하게 반영 | 데이터가 많아지면 느려짐 |
랜덤 포레스트 | 복잡한 조각 형태 | 비선형 데이터도 학습 가능 | 과적합(overfitting) 가능 |
1. 로지스틱 회귀 (Logistic Regression)
단점: 복잡한 패턴을 학습하기 어려움
- 결정 경계(Decision Boundary)가 선형(직선)
- 비선형적인 데이터 분포를 처리할 수 없음
- 복잡한 관계를 학습하는 능력이 제한적
원인 분석
- 로지스틱 회귀는 선형 모델
- 예측 확률을 시그모이드(Sigmoid) 함수를 사용해 계산하는데, 이 함수는 직선적으로 데이터를 나눔
- 즉, "X가 증가하면 Y도 증가" 같은 직선적인 관계만 학습 가능
- 하지만 실제 데이터는 곡선, 비선형적인 패턴을 가질 수도 있음
- 비선형 데이터가 있으면, 로지스틱 회귀는 잘못된 결정 경계를 형성할 수 있음
- "키"와 "몸무게"를 기반으로 사람을 분류한다고 가정
- 로지스틱 회귀는 단순한 키가 크면 무게도 크다 같은 직선적인 관계만 학습 가능
- 하지만 실제로는 곡선적인 BMI 지수 같은 비선형 패턴이 존재
- 이런 경우, 로지스틱 회귀는 복잡한 패턴을 올바르게 학습하지 못함
해결책
- 다항 로지스틱 회귀(Polynomial Features 추가)
- 비선형 모델 사용 (KNN, 랜덤 포레스트, 신경망 등)
2. K-최근접 이웃 (KNN)
단점: 데이터가 많아지면 느려짐
- 새로운 데이터가 들어올 때마다 모든 데이터를 비교해야 함
- 데이터가 많아질수록 연산량이 급격히 증가
- 고차원 데이터에서는 거리 기반 방식이 비효율적 (차원의 저주 문제)
원인 분석
- KNN은 훈련 과정이 없음 (데이터를 저장만 함) -> 대신, 예측할 때마다 모든 데이터를 비교해야 함
- 데이터가 많아질수록 비교해야 할 데이터도 많아지고 속도가 느려짐
- 거리 기반 알고리즘이므로, 차원이 많아지면(특성이 많아지면) 거리 계산이 비효율적이 됨 (차원의 저주)
- 100만 개의 고객 데이터가 있는 쇼핑몰에서 새로운 고객의 구매 패턴을 예측
- KNN은 1명의 고객을 예측하려면 100만 개의 데이터를 전부 비교해야 함
- 데이터가 많아지면 속도가 기하급수적으로 느려짐
해결책
- K-D Tree, Ball Tree 같은 공간 분할 알고리즘을 사용해 속도 개선
- KNN 대신, 더 효율적인 모델(랜덤 포레스트, SVM, 신경망 등) 사용
3. 랜덤 포레스트 (Random Forest)
단점: 과적합(Overfitting) 가능
- 트리가 많아질수록 데이터에 너무 맞춰 학습될 위험이 있음
- 노이즈(랜덤한 패턴)까지 학습해 일반화 성능 저하 가능
- 훈련 데이터와 비슷한 데이터에서는 성능이 좋지만, 새로운 데이터에서는 성능이 떨어질 수 있음
원인 분석
- 랜덤 포레스트는 여러 개의 결정 트리(Decision Tree)를 조합하여 예측하는 모델
- 결정 트리는 깊어질수록 과적합될 가능성이 높음
- 랜덤 포레스트는 여러 개의 트리를 만들지만, 너무 많은 트리를 사용하면 학습 데이터에 과하게 맞춰짐
- 특히, 트리의 깊이가 너무 깊으면 훈련 데이터의 노이즈까지 학습해서 새로운 데이터에 대한 예측 성능이 저하됨
- 한 대학의 학생 데이터를 사용해 성적을 예측하는 모델을 만든다고 가정
- 랜덤 포레스트가 모든 학생의 특성을 너무 자세히 학습하면(과적합), 새로운 학생에게 적용했을 때 좋은 예측을 하지 못함
- 즉, 과적합이 발생하면 훈련 데이터에서는 성능이 높지만, 새로운 데이터에서는 성능이 낮아짐
해결책
- 트리 개수를 적절히 조절 (n_estimators 하이퍼파라미터 튜닝)
- 트리의 최대 깊이 제한 (max_depth 설정으로 과적합 방지)
- 과적합을 방지하는 다른 모델(SVM, 신경망 등) 고려
'AI & DS > 머신러닝' 카테고리의 다른 글
[머신러닝] 회귀 모델 - Linear Regression(선형 회귀)/Bagging Regressor(배깅 회귀)/Boosting Regressor(부스팅 회귀) (0) | 2025.02.28 |
---|---|
[머신러닝] 하이퍼파라미터 / 최적의 하이퍼파라미터 찾기란 무엇인가? / Random Forest와 하이퍼파라미터 (0) | 2025.02.27 |
[머신러닝] 분류 학습 모델 - Logistic Regression (0) | 2025.02.27 |
[머신러닝] Train set/Test set/Features/Target 이란? (0) | 2025.02.27 |
[머신러닝] 데이터 인코딩(DataEncoding)/Feature Scaling이란? (0) | 2025.02.27 |