250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- airflow subdag
- API
- subdag
- top_k
- login crawling
- API Gateway
- hadoop
- gather_nd
- BigQuery
- integrated gradient
- correlation
- 유튜브 API
- chatGPT
- session 유지
- GenericGBQException
- flask
- grad-cam
- spark udf
- 공분산
- Retry
- Counterfactual Explanations
- XAI
- GCP
- tensorflow text
- UDF
- Airflow
- TensorFlow
- youtube data
- 상관관계
- requests
Archives
- Today
- Total
데이터과학 삼학년
LightGBM vs CatBoost vs XGBoost 본문
반응형
LightGBM, CatBoost, XGBoost는 모두 gradient boosting 알고리즘을 기반으로 한 머신러닝 라이브러리
이들의 공통점은 모두 다양한 데이터 타입(범주형, 연속형)의 feature를 다룰 수 있으며, 빠른 속도로 대용량 데이터셋을 처리할 수 있음
LightGBM
- Leaf-wise tree growth 알고리즘 사용
- 데이터 셋의 크기가 큰 경우에 유리
- 예측 성능이 뛰어나며, 빠른 속도로 학습 가능
- GPU 가속도 지원
- 카테고리형 특성 자동 처리 기능 지원
CatBoost
- Category Boosting 알고리즘 사용
- 카테고리형 특성 자동 처리 기능 지원
- Overfitting 방지를 위한 자체 규제 기능 제공
- 빠른 속도와 높은 정확도 보장
- GPU 가속도 지원
- 대용량 데이터 학습에도 뛰어난 성능을 발휘
XGBoost
- Depth-wise tree growth 알고리즘 사용
- 예측 성능이 뛰어나며, 빠른 속도로 학습 가능
- 병렬 처리 기능을 사용하여 높은 속도 보장
- GPU 가속도 지원
- 규제 기능과 이상치 처리 기능 제공
- 높은 정확도와 일반화 성능 보장
알고리즘 방식
- XGBoost: Gradient Boosting 알고리즘을 기반으로 하되, regularization과 다양한 loss function 등의 기능이 추가된 알고리즘입니다.
- LightGBM: Decision Tree를 기반으로 한 Gradient Boosting 알고리즘으로, Leaf-wise Tree Growth 방식을 사용하여 학습을 진행합니다.
- CatBoost: 대부분의 머신러닝 알고리즘에서 처리하기 어려운 카테고리형(categorical) 특징을 효과적으로 처리할 수 있도록한 알고리즘입니다.
속도
- LightGBM > XGBoost > CatBoost:
종합 비교
코드 예시
LightGBM
import lightgbm as lgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Load iris dataset
iris = load_iris()
X, y = iris.data, iris.target
# Split dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create LightGBM dataset
lgb_train = lgb.Dataset(X_train, y_train)
lgb_test = lgb.Dataset(X_test, y_test, reference=lgb_train)
# Set parameters
params = {
'boosting_type': 'gbdt',
'objective': 'multiclass',
'num_class': 3,
'metric': 'multi_logloss',
'num_leaves': 31,
'learning_rate': 0.05,
'feature_fraction': 0.9
}
# Train model
model = lgb.train(params, lgb_train, num_boost_round=100)
# Predict on test set
y_pred = model.predict(X_test)
y_pred = [list(x).index(max(x)) for x in y_pred]
# Calculate accuracy
accuracy = accuracy_score(y_test, y_pred)
print('LightGBM Accuracy:', accuracy)
CatBoost
import catboost as cb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Load iris dataset
iris = load_iris()
X, y = iris.data, iris.target
# Split dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create CatBoost dataset
cb_train = cb.Pool(X_train, y_train)
cb_test = cb.Pool(X_test, y_test)
# Set parameters
params = {
'iterations': 100,
'learning_rate': 0.05,
'depth': 6,
'loss_function': 'MultiClass',
'eval_metric': 'Accuracy'
}
# Train model
model = cb.train(params, cb_train)
# Predict on test set
y_pred = model.predict(cb_test)
y_pred = [int(round(x)) for x in y_pred]
# Calculate accuracy
accuracy = accuracy_score(y_test, y_pred)
print('CatBoost Accuracy:', accuracy)
XGBoost
pythonCopy code
import xgboost as xgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Load iris dataset
iris = load_iris()
X, y = iris.data, iris.target
# Split dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create XGBoost dataset
xgb_train = xgb.DMatrix(X_train, label=y_train)
xgb_test = xgb.DMatrix(X_test, label=y_test)
# Set parameters
params = {
'objective': 'multi:softmax',
'num_class': 3,
'max_depth': 6,
'learning_rate': 0.05,
'subsample': 0.9,
'colsample_bytree': 0.9
}
# Train model
model = xgb.train(params, xgb_train)
# Predict on test set
y_pred = model.predict(xgb_test)
y_pred = [int(round(x)) for x in y_pred]
# Calculate accuracy
accuracy = accuracy_score(y_test, y_pred)
print('XGBoost Accuracy:', accuracy)
728x90
반응형
LIST
'Machine Learning' 카테고리의 다른 글
[AutoML] Auto-sklearn (0) | 2023.06.19 |
---|---|
히스토그램 기반 그래디언트 부스팅 트리(Histogram Gradient Boosting Tree) (0) | 2023.05.25 |
LGBM(LightGBM) (0) | 2023.05.10 |
Pandas-AI (pandas 활용을 chatGPT 명령에 따라 실행) (0) | 2023.05.08 |
[Tensorflow] tf.math.top_k을 이용해서 probs, indices를 한번에! (0) | 2023.03.18 |
Comments