🧠 지도학습(Supervised Learning)의 한 종류
Classification(분류) 모델은 주어진 데이터를 여러 클래스(범주) 중 하나로 분류하는 작업입니다. 예를 들어, 이메일을 스팸이냐 일반메일이냐로 나누거나, 사진 속 동물이 고양이인지 강아지인지 구분하는 것 등이 있습니다.
분류 모델의 종류
✅ 이진 분류 (Binary Classification)
- 클래스가 2개인 경우
- 예: 이메일 스팸 여부, 암 진단 (양성/음성)
🔢 다중 클래스 분류 (Multiclass Classification)
- 클래스가 3개 이상인 경우
- 예: 숫자 손글씨 인식 (0~9)
🏷 다중 레이블 분류 (Multilabel Classification)
- 하나의 데이터가 여러 클래스에 속할 수 있음
- 예: 뉴스 기사 → 정치, 경제, 사회 등 여러 태그
Classification 알고리즘 예시
1. 로지스틱 회귀 (Logistic Regression)
- 간단한 이진 분류에 자주 사용
- 회귀처럼 보이지만, 확률을 예측해서 분류하는 방식
2. 결정 트리 (Decision Tree)
- 나무처럼 가지를 치며 분류
- 직관적이고 시각화가 쉬움
3. 랜덤 포레스트 (Random Forest)
- 여러 결정 트리를 조합한 모델로 정확도 높음
4. 서포트 벡터 머신 (SVM)
- 고차원 특징 공간에서 데이터 분리
5. 딥러닝 (Deep Learning)
- 이미지나 음성 인식처럼 복잡한 문제 해결에 탁월
모델 성능 평가 방법
📊 혼동 행렬 (Confusion Matrix)
예측 실제 스팸 실제 정상
스팸 | TP (정답) | FP (오답) |
정상 | FN (오답) | TN (정답) |
- Precision (정밀도): 예측한 스팸 중 실제 스팸 비율
- Recall (재현율): 실제 스팸 중 스팸이라고 맞춘 비율
- Accuracy (정확도): 전체 중 정답의 비율
📈 ROC 커브와 AUC
- ROC: TPR(재현율) vs. FPR(오탐률) 그래프
- AUC: 이 ROC 그래프 아래 면적 (1에 가까울수록 좋은 모델)
scikit-learn으로 모델 만들기
🔧 데이터 전처리(Feature Engineering)
- 결측값 채우기: 평균 등으로 빈 칸 채우기
- 카테고리 → 숫자 변환: OneHotEncoder, LabelEncoder 사용
- 피처 스케일링: 값들을 일정한 범위로 조정 (0~1)
🔁 훈련/테스트 분리
- train_test_split() 함수로 분리
- 교차 검증(Cross Validation)으로 일반화 성능 확인
🔗 파이프라인 사용
- 전처리 + 모델링을 한 번에 수행
- 예: make_pipeline(StandardScaler(), LogisticRegression())
실습 예시
🛳 타이타닉 생존자 예측
- 캐글에서 유명한 튜토리얼 예제
- Binary Classification 문제
- AUC, F1-score로 성능 평가
💉 당뇨병 예측
- UCI 데이터셋 기반
- 8개의 피처(나이, 혈압, BMI 등)로 당뇨병 여부 예측
요약 및 실전 활용 팁
요약
- Classification은 대표적인 머신러닝 문제로 지도학습에 속함
- 로지스틱 회귀, SVM, 딥러닝 등 다양한 알고리즘 사용
- scikit-learn을 통해 쉽게 구현 가능
- 모델 성능 평가는 혼동 행렬, AUC, F1 등 다양한 지표로 가능
실전 팁
- 데이터 전처리가 성능에 큰 영향을 미침
- 간단한 문제는 로지스틱 회귀, 복잡한 문제는 딥러닝 고려
- 성능 비교를 위해 다양한 모델 실험해보는 것이 중요
- 실습은 구글 Colab에서 가능하고 kaggle 예제 활용 추천
🤔 회귀(Regression)란 무엇인가요?
Regression(회귀) 모델은 연속적인 숫자 값을 예측하는 데 사용하는 지도학습(Supervised Learning) 알고리즘입니다. 예를 들면,
- 집 값 예측
- 주식 가격 예측
- 날씨 온도 예측
처럼 결과값이 숫자인 경우 사용됩니다. 반면 결과값이 카테고리(예: '스팸' or '정상')인 경우는 **Classification(분류)**을 사용합니다.
대표적인 회귀 알고리즘
📈 Linear Regression (선형 회귀)
- 가장 기본적인 회귀 모델
- 예측값은 직선 형태로 모델링
- 예: y = a * x + b
📊 Polynomial Regression (다항 회귀)
- 선형 회귀로는 부족할 때 곡선 형태로 확장
🌳 Decision Tree & Random Forest
- 데이터를 분기해서 예측하는 트리 구조
- Random Forest는 여러 트리를 결합해 안정성과 성능을 높임
🧠 Deep Learning (딥러닝)
- 복잡하고 비선형적인 문제를 처리할 때 유용
- 대규모 데이터에서 강력한 성능 발휘
회귀 모델 성능 평가 지표
회귀 모델의 예측 성능은 다음과 같은 오차 지표로 평가합니다.
- MAE (Mean Absolute Error): 절대값 기준의 평균 오차
- MSE (Mean Squared Error): 제곱 기준의 평균 오차
- RMSE (Root Mean Squared Error): MSE의 제곱근으로 직관적 해석 가능
예측과 실제 가격의 차이가 작을수록 성능이 좋은 모델입니다.
실습 예시: 보스턴 주택 가격 예측
📌 데이터 설명
- 미국 보스턴 지역의 주택 데이터 (총 506개 레코드)
- 13개의 특성과 1개의 타겟(중간 주택 가격) 포함
- 예측 목표: 지역별 중간 주택 가격(MEDV)
주요 피쳐 예시
- RM: 평균 방 개수
- LSTAT: 저소득층 비율
- CRIM: 범죄율
- DIS: 도심 접근성
실습: 회귀 모델 만들기
🛠 Linear Regression 사용
- 데이터셋 로딩
- 훈련 데이터/테스트 데이터 분리
- LinearRegression 모델 학습 및 예측
- 성능 평가 (RMSE 등)
🌳 Decision Tree 사용
- DecisionTreeRegressor로 모델 생성
- Grid Search를 통해 하이퍼파라미터 튜닝
🪵 Random Forest 실습
- RandomForestRegressor로 다수의 트리 조합
- 과적합 방지 및 성능 향상
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
요약 및 실전 활용 팁
요약
- Regression은 연속된 수치를 예측하는 머신러닝 기법
- 다양한 알고리즘 사용 가능: 선형 회귀, 결정 트리, 랜덤 포레스트, 딥러닝 등
- 성능은 MAE, MSE, RMSE 등 오차 지표로 평가
- 실전에서는 scikit-learn으로 쉽게 구현 가능
실전 팁
- 데이터를 먼저 시각화해보는 것이 중요
- 선형 모델로 시작하고 성능이 낮으면 비선형 모델로 확장
- Grid Search로 하이퍼파라미터 튜닝 필수
- 작은 데이터셋은 트리 기반 모델, 큰 데이터셋은 딥러닝 활용
'데이터분석데브코스 8 > 이론' 카테고리의 다른 글
AWS SageMaker란? (0) | 2025.06.02 |
---|---|
EDA란? (0) | 2025.05.29 |
8 - 24. 성능 평가 metric (0) | 2025.05.29 |
8 - 23. 교차 검증(Cross Validation) (0) | 2025.05.29 |
8 - 21. 이미지 & 텍스트 처리 (2) | 2025.05.29 |