일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- API
- top_k
- gather_nd
- tensorflow text
- API Gateway
- Airflow
- 유튜브 API
- flask
- requests
- BigQuery
- XAI
- session 유지
- subdag
- airflow subdag
- integrated gradient
- TensorFlow
- 공분산
- youtube data
- 상관관계
- Retry
- Counterfactual Explanations
- GCP
- login crawling
- UDF
- hadoop
- chatGPT
- grad-cam
- spark udf
- correlation
- GenericGBQException
- Today
- Total
데이터과학 삼학년
히스토그램 기반 그래디언트 부스팅 트리(Histogram Gradient Boosting Tree) 본문
히스토그램 기반 그래디언트 부스팅 트리(Histogram Gradient Boosting Tree)
- 히스토그램 기반 그래디언트 부스팅 트리는 앙상블 학습 방법 중 하나로, 여러 개의 결정 트리를 조합하여 예측 모델을 구축하는 알고리즘 - 트리 기반의 모델인 그래디언트 부스팅 트리(Gradient Boosting Tree)를 기반으로 함
- 특히 데이터를 히스토그램으로 변환하여 학습 및 예측에 활용하는 점이 특징
동작 원리
1. 데이터의 특성을 이해하기 위해 먼저 히스토그램으로 변환 -> 이를 위해 입력 데이터를 여러 개의 구간(bin)으로 나누고, 각 구간에 속하는 데이터 포인트의 개수를 기록
2. 초기에는 단 하나의 트리로 시작하며, 이 트리는 모든 데이터를 하나의 잎(leaf)에 할당
3. 그 다음으로, 그래디언트 부스팅의 핵심 원리인 그래디언트 부스팅 기준(gradient boosting criterion)에 따라 새로운 트리를 추가 -> 히스토그램을 이용하여 데이터의 분포를 고려하며, 각 구간의 예측값을 조정해 나가는 방식으로 트리를 구성
4. 트리의 구성이 완료되면, 새로운 트리에 의한 예측값과 실제값 사이의 오차(residual)를 계산 -> 이 오차를 이용하여 다음 트리를 학습시키는 과정을 반복
5. 모든 트리를 학습한 후, 각 트리의 예측값을 결합하여 최종 예측값을 얻음
>> 오차 학습 트리가 연속적으로 생기는 구조
장점
- 효율적인 계산: 히스토그램을 이용하여 데이터를 변환하므로, 원래 데이터의 크기보다 훨씬 작은 메모리를 요구 -> 따라서, 대용량 데이터셋에 대해서도 빠른 속도로 학습과 예측을 수행
- 상대적으로 낮은 과적합 경향: 히스토그램 기반의 변환은 일종의 데이터 요약 방법이기 때문에, 과적합을 완화하는 효과가 있음
- 범주형 변수 처리: 히스토그램 기반 그래디언트 부스팅 트리는 범주형 변수를 처리하는 데에도 우수한 성능을 보임
코드 예시
from sklearn.experimental import enable_hist_gradient_boosting
from sklearn.ensemble import HistGradientBoostingClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 데이터셋 로드 및 전처리
# X: 입력 특성, y: 타겟 변수
# 예시 데이터셋은 X와 y가 이미 정의되어 있다고 가정합니다.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 히스토그램 기반 그래디언트 부스팅 분류기 객체 생성
model = HistGradientBoostingClassifier()
# 모델 학습
model.fit(X_train, y_train)
# 테스트 데이터에 대한 예측
y_pred = model.predict(X_test)
# 정확도 평가
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
'Machine Learning' 카테고리의 다른 글
catboost encoder 방식 (CatBoostEncoder in categorical-encodings) (0) | 2023.06.26 |
---|---|
[AutoML] Auto-sklearn (0) | 2023.06.19 |
LightGBM vs CatBoost vs XGBoost (0) | 2023.05.12 |
LGBM(LightGBM) (0) | 2023.05.10 |
Pandas-AI (pandas 활용을 chatGPT 명령에 따라 실행) (0) | 2023.05.08 |