본문 바로가기

STUDY/인공지능

[머신러닝] RandomForest, Boosting 모델 설명 및 예제 코드

728x90

[Random Forest]

Random Forest는 앙상블 학습 기법 중 하나로 여러 개의 결정 트리를 생성하고 그들의 예측 결과를 조합하여 최종 예측을 수행하는 방법입니다. 결정 트리의 과적합 문제를 완화하며, 특히 특성 선택의 필요성을 줄여줍니다.

 

예제코드:

from sklearn.ensemble import RandomForestClassifier

# 데이터 로딩 및 전처리 생략

# 모델 학습
model = RandomForestClassifier()
model.fit(X_train, y_train)

# 모델 예측
y_pred = model.predict(X_test)

 

[XGBoost]

XGBoost는 Gradient Boosting 알고리즘을 기반으로 한 앙상블 학습 기법 입니다.

Gradient Boosting은 이전 모델의 오차를 보정하는 새로운 모델을 만들어 나가는 방식으로 학습을 진행합니다.

 

예제코드:

import xgboost as xgb

# 데이터 로딩 및 전처리 생략

# XGBoost 데이터 형식인 DMatrix 생성
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test)

# 모델 학습
params = {'objective': 'binary:logistic', 'eval_metric': 'error'}
model = xgb.train(params, dtrain)

# 모델 예측
y_pred = model.predict(dtest)

 

[AdaBoost]

AdaBoost는 약한 학습기(weak learner)를 이용하여 강력한 학습기(strong learner)를 만드는 앙상블 학습 기법입니다.

약한 학습기는 성능이 약간 떨어지는 모델로, 이러한 모델을 순차적으로 조합해 최종 예측을 수행합니다.

 

예제코드:

from sklearn.ensemble import AdaBoostClassifier

# 데이터 로딩 및 전처리 생략

# 모델 학습
model = AdaBoostClassifier()
model.fit(X_train, y_train)

# 모델 예측
y_pred = model.predict(X_test)

 

[LGBM]

LGBM(LightGBM)은 Gradient Boosting 알고리즘을 개선한 기법으로, 더 빠른 학습과 더 적은 메모리 사용을 특징으로 합니다.

 

예제코드:

import lightgbm as lgb

# 데이터 로딩 및 전처리 생략

# 데이터셋 생성
train_data = lgb.Dataset(X_train, label=y_train)

# 모델 학습
params = {'objective': 'binary'}
model = lgb.train(params, train_data)

# 모델 예측
y_pred = model.predict(X_test)

 

[GBM]

GBM은 Gradient Boosting 알고리즘을 의미합니다. 이는 Gradient Descent와 결정 트리를 활용하여 모델을 학습하는 방법입니다.

 

예제코드:

from sklearn.ensemble import GradientBoostingClassifier

# 데이터 로딩 및 전처리 생략

# 모델 학습
model = GradientBoostingClassifier()
model.fit(X_train, y_train)

# 모델 예측
y_pred = model.predict(X_test)

 

[CatBoost]

CatBoost는 범주형 변수를 처리하는 데 특화된 Gradient Boosting 기반의 앙상블 학습 기법입니다. 자동으로 범주형 변수를 처리하고, GPU를 활용하여 빠른 학습을 제공합니다.

 

예제코드:

from catboost import CatBoostClassifier

# 데이터 로딩 및 전처리 생략

# 모델 학습
model = CatBoostClassifier()
model.fit(X_train, y_train)

# 모델 예측
y_pred = model.predict(X_test)

 

 

728x90