이번 학습에서는 여러 머신러닝 모델을 결합하는 앙상블 학습, 분류와 회귀, XGBoost, 스태킹, 선형 회귀와 규제 기법을 공부했습니다. 당뇨병 건강 지표 데이터의 탐색적 분석과 시각화 개념도 함께 정리합니다.
1. 앙상블 학습(Ensemble Learning)
앙상블 학습은 여러 머신러닝 모델의 예측을 결합해 하나의 모델만 사용할 때보다 예측의 안정성이나 일반화 성능을 높이려는 방법입니다.
| 종류 | 정의 | 핵심 기억 |
|---|---|---|
| Random Forest | 여러 의사결정나무를 학습시키고 각 나무의 예측을 결합하는 방법 | 여러 나무의 예측 결합 |
| Boosting | 모델을 순차적으로 학습하며 이전 단계의 오차를 보완하도록 개선하는 방법 | 순차적 성능 개선 |
| Stacking | 여러 기본 모델의 예측 결과를 새로운 모델의 입력으로 사용하는 방법 | 모델 예측을 다시 학습 |
랜덤 포레스트는 여러 나무의 예측을 결합하고, 부스팅은 모델을 순차적으로 개선합니다. 스태킹은 서로 다른 모델의 예측 결과를 메타 모델이 학습한다는 점에서 차이가 있습니다.
2. 분류(Classification)와 회귀(Regression)
분류는 데이터를 정해진 범주로 구분하는 예측 문제입니다. 당뇨병 여부처럼 결과가 특정 클래스에 해당하는지 예측할 때 사용합니다.
회귀는 연속적인 숫자를 예측하는 문제입니다. 주택 가격이나 매출액처럼 수치로 표현되는 값을 예측할 때 사용합니다.
| 구분 | 분류 | 회귀 |
|---|---|---|
| 예측 결과 | 범주 또는 클래스 | 연속적인 숫자 |
| 실습에서 다룬 모델 | RandomForestClassifier, XGBClassifier | RandomForestRegressor, XGBRegressor, LinearRegression |
| 평가 예시 | Accuracy | RMSE |
3. 머신러닝 문법의 역할
실제 파이썬 코드는 VS Code에서 확인하고, 여기서는 자주 사용하는 문법이 어떤 역할을 하는지만 정리합니다.
| 문법·속성 | 의미 | 기억할 점 |
|---|---|---|
| train_test_split | 데이터를 학습용과 평가용으로 나누는 기능 | 학습 데이터와 시험 데이터 분리 |
| X_data | 모델의 예측에 사용하는 입력 특성 데이터 | 예측에 필요한 정보 |
| y_data | 모델이 예측하도록 학습시키는 정답 데이터 | 예측할 목표 |
| fit() | 입력 데이터와 정답 데이터를 이용해 모델을 학습하는 메서드 | 모델 학습 |
| predict() | 학습한 모델을 이용해 새로운 데이터의 결과를 예측하는 메서드 | 모델 예측 |
| random_state | 난수 생성 상태를 고정해 실행 결과의 재현성을 높이는 설정 | 실험 결과 재현 |
| stratify | 분류 데이터 분할 시 클래스별 비율을 유지하도록 돕는 설정 | 클래스 비율 유지 |
| accuracy_score | 분류 예측 중 실제 정답과 일치한 비율을 계산하는 함수 | 정확도 평가 |
기본 흐름: 데이터 분리 → 모델 생성 → 학습 → 예측 → 성능 평가
4. XGBoost
XGBoost는 그래디언트 부스팅을 기반으로 하는 머신러닝 라이브러리입니다. 여러 모델을 순차적으로 학습해 예측 성능을 개선하며, 표 형태의 데이터 분석에서 널리 활용됩니다.
| 모델 | 용도 | 기억할 점 |
|---|---|---|
| XGBClassifier | 분류 | 범주 예측 |
| XGBRegressor | 회귀 | 숫자 예측 |
XGBoost라는 이름만 기억하기보다, 현재 해결하려는 문제가 분류인지 회귀인지 먼저 판단하고 적합한 모델을 선택하는 것이 중요합니다.
5. 스태킹(Stacking)
스태킹은 여러 모델의 예측 결과를 조합해 최종 예측을 수행하는 앙상블 기법입니다.
| 용어 | 정의 |
|---|---|
| Base Model | 처음 입력 데이터를 학습하고 예측 결과를 만드는 기본 모델 |
| Meta Model | 기본 모델들의 예측 결과를 입력으로 받아 최종 결과를 예측하는 모델 |
| Cross-validation | 데이터를 여러 부분으로 나누어 학습과 검증을 반복하는 평가 방법 |
스태킹에서는 기본 모델의 예측값을 메타 모델이 학습합니다. 학습 데이터에 과도하게 맞춰지는 문제를 줄이기 위해 교차검증으로 만든 예측값을 활용할 수 있습니다.
6. 선형 회귀(Linear Regression)
선형 회귀는 입력 특성과 예측할 값 사이의 관계를 선형식으로 표현하는 회귀 모델입니다. 입력 특성에 가중치를 적용하고 절편을 더해 예측값을 계산합니다.
| 용어 | 정의 |
|---|---|
| Feature | 예측에 활용하는 입력 특성 또는 변수 |
| Target | 모델이 예측하려는 목표값 |
| Coefficient | 각 입력 특성이 예측값에 반영되는 정도를 나타내는 계수 |
| Intercept | 선형식에서 입력 특성의 영향을 제외한 기본 절편 |
선형 회귀는 이해하기 쉽고 해석이 비교적 간단하지만, 데이터의 관계가 선형식으로 충분히 설명되지 않으면 예측 성능에 한계가 있을 수 있습니다.
7. 규제(Regularization): Lasso와 Ridge
규제는 모델의 계수가 지나치게 커지는 것을 제한해 과적합을 줄이고 모델의 일반화 성능을 개선하려는 방법입니다.
| 모델 | 규제 방식 | 특징 |
|---|---|---|
| Linear Regression | 기본 선형 회귀 | 잔차 제곱합을 최소화 |
| Lasso | L1 규제 | 일부 계수를 0으로 만들어 특성 선택 효과를 낼 수 있음 |
| Ridge | L2 규제 | 계수 크기를 줄여 모델을 안정화하며, 일반적으로 계수를 정확히 0으로 만들지는 않음 |
Lasso와 Ridge의 차이: Lasso는 중요도가 낮은 특성의 계수를 0으로 만들 수 있고, Ridge는 계수의 크기를 줄이는 데 초점을 둡니다.
8. 데이터 표준화(Standardization)
StandardScaler는 각 특성의 평균을 0, 표준편차를 1로 맞추는 표준화 도구입니다. 특성마다 측정 단위나 값의 범위가 크게 다를 때 유용합니다.
| 용어 | 의미 |
|---|---|
| fit_transform() | 데이터에서 변환 기준을 학습하고 해당 데이터에 변환을 적용 |
| transform() | 이미 학습한 변환 기준을 새로운 데이터에 적용 |
학습 데이터에서 표준화 기준을 계산한 뒤 평가 데이터에도 같은 기준을 적용해야 합니다. 평가 데이터까지 포함해 변환 기준을 학습하면 데이터 누수(Data Leakage)가 발생할 수 있습니다.
9. 모델 평가: Accuracy와 RMSE
| 평가 지표 | 적용 문제 | 의미 | 해석 |
|---|---|---|---|
| Accuracy | 분류 | 전체 예측 중 정답과 일치한 비율 | 일반적으로 높을수록 좋음 |
| RMSE | 회귀 | 예측 오차를 제곱해 평균한 뒤 제곱근을 계산한 값 | 일반적으로 낮을수록 좋음 |
RMSE는 큰 오차에 상대적으로 큰 불이익을 줍니다. 다만 RMSE의 크기는 예측 대상의 단위와 범위에 영향을 받으므로, 서로 다른 데이터나 단위의 모델을 단순 비교해서는 안 됩니다.
10. 당뇨병 데이터 EDA와 시각화
EDA(Exploratory Data Analysis)는 모델을 만들기 전에 데이터의 구조, 분포, 이상치, 변수 간 관계 등을 탐색하는 과정입니다.
당뇨병 건강 지표 데이터에서는 당뇨병 여부와 건강 관련 변수의 분포를 살펴보고, 변수별 차이나 연관성이 관찰되는지 확인할 수 있습니다.
| 문법·도구 | 역할 |
|---|---|
| value_counts() | 범주별 데이터 개수를 집계 |
| reset_index() | 인덱스를 일반 컬럼으로 변환하거나 새로운 기본 인덱스를 설정 |
| Plotly Express | 파이썬에서 다양한 대화형 그래프를 간편하게 생성하는 시각화 인터페이스 |
| px.bar() | 범주별 수치나 빈도를 비교하는 막대그래프 생성 |
데이터 분석에서는 그래프를 통해 패턴을 확인할 수 있지만, 두 변수 사이의 연관성이 관찰된다는 이유만으로 한 변수가 다른 변수의 원인이라고 결론 내릴 수는 없습니다.
11. 오늘의 학습 용어 정리
| 대분류 | 중분류 | 소분류·용어 | 핵심 기억 |
|---|---|---|---|
| 앙상블 | 배깅 | Random Forest | 여러 나무의 예측 결합 |
| 앙상블 | 부스팅 | Boosting | 순차적으로 모델 개선 |
| 앙상블 | 부스팅 | XGBoost | 그래디언트 부스팅 라이브러리 |
| 앙상블 | 스태킹 | Base Model | 기본 예측 모델 |
| 앙상블 | 스태킹 | Meta Model | 최종 예측 모델 |
| 지도학습 | 분류 | Classifier | 범주 예측 |
| 지도학습 | 회귀 | Regressor | 숫자 예측 |
| 모델 평가 | 분류 지표 | Accuracy | 정답 일치 비율 |
| 모델 평가 | 회귀 지표 | RMSE | 예측 오차 크기 |
| 선형 모델 | 기본 회귀 | Linear Regression | 선형 관계로 숫자 예측 |
| 선형 모델 | L1 규제 | Lasso | 일부 계수를 0으로 만들 수 있음 |
| 선형 모델 | L2 규제 | Ridge | 계수 크기 축소 |
| 전처리 | 데이터 분할 | train_test_split | 학습용·평가용 데이터 분리 |
| 전처리 | 표준화 | StandardScaler | 평균 0, 표준편차 1 |
| 데이터 분석 | EDA | value_counts | 범주별 빈도 확인 |
| 데이터 분석 | 전처리 | reset_index | 인덱스와 컬럼 구조 정리 |
| 시각화 | 막대그래프 | Plotly Express | 대화형 그래프 생성 |
마무리
오늘의 핵심은 모델 이름을 외우는 것보다 문제 유형에 맞는 모델을 선택하고, 학습·예측·평가의 흐름을 이해하는 것입니다.
- 분류는 범주를 예측하고, 회귀는 숫자를 예측합니다.
- 앙상블은 여러 모델의 예측을 결합합니다.
- 스태킹은 기본 모델의 예측을 메타 모델이 다시 학습합니다.
- Lasso는 L1, Ridge는 L2 규제를 사용합니다.
- EDA는 모델 학습 전 데이터의 특성과 패턴을 파악하는 과정입니다.