본문 바로가기
728x90
반응형
SMALL

XGBoost19

[Machine Learning] Boosting Methods (2) XGBoost XGBoost (Extreme Gradient Boost)는 2014년 Tianqi Chen에 의해 처음 개발되었으며 그레디언트 부스트보다 훨씬 빠르기 때문에 선호되는 부스팅 방법이다. XGBoost는 확장 가능하고 매우 정확한 그레디언트 부스팅 구현으로 트리 알고리듬을 강화하기 위한 컴퓨팅 성능의 한계를 푸시하며 주로 기계 학습 모델 성능 및 계산 속도를 활성화하기 위해 구축된다. XGBoost를 사용하면 GBDT와 같이 순차적으로 트리가 아닌 병렬로 구축된다. 그것은 그레디언트 값을 스캔하고 이러한 부분 합계를 사용하여 훈련 세트에서 가능한 모든 분할에서 분할의 품질을 평가하는 level-wise (수준별) 전략을 따른다. 포함된 하이퍼파라미터 덕분에 정규화 하이퍼파라미터가 과적합을 방.. 2023. 7. 11.
[Machine Learning] Histogram-Based Gradient Boosting Ensembles Gradient Boosting Ensembles 부스팅은 트리 모델을 순차적으로 앙상블에 추가하는 앙상블 학습 알고리즘의 클래스를 말한다. 앙상블에 추가된 각 트리 모델은 앙상블에 이미 존재하는 트리 모델에 의해 발생한 예측 오류를 수정하려고 시도한다. 그레이디언트 부스팅은 AdaBoost와 같은 부스팅 알고리즘을 통계 프레임워크로 일반화하는 것으로, 훈련 과정을 가법 모델로 처리하고 임의 손실 함수를 사용할 수 있게 하여 기술의 능력을 크게 향상시킨다. 이와 같이 그레이디언트 부스팅 앙상블은 대부분의 구조화된 (ex: 표 형식 데이터) 예측 모델링 작업에 사용되는 기술이다. 그레이디언트 부스팅이 실제로 매우 잘 수행되지만 모델의 교육 속도가 느릴 수 있다. 이는 여러 CPU 코어를 활용하여 앙상블 멤.. 2023. 7. 7.
[XGBoost] 보험료 예측 데이터셋 로드 import pandas as pd df = pd.read_csv('Medical_Insurance_dataset.csv') df.head() 원-핫 인코딩 df = pd.get_dummies(df) df.head() 데이터 전처리 # 훈련 데이터, 검증 데이터, 테스트 데이터 나누기 features = df[df.keys().drop('charges')].values outcome = df['charges'].values.reshape(-1, 1) from sklearn.model_selection import train_test_split train_features, test_features, train_target, test_target = train_test_split(feature.. 2022. 10. 5.
[XGBoost] 심혈관 질환 예측 데이터셋 로드 import pandas as pd df = pd.read_csv('Cardiovascular_Disease_dataset.csv') df.head() df['Presence or absence of cardiovascular disease'].value_counts() 0 35021 1 34979 Name: Presence or absence of cardiovascular disease, dtype: int64 데이터 전처리 # 훈련 데이터, 검증 데이터, 테스트 데이터로 나누기 features = df[df.keys().drop(['id','Presence or absence of cardiovascular disease'])].values outcome = df['Presence o.. 2022. 10. 5.
[XGBoost] 심장 질환 예측 데이터셋 로드 import pandas as pd df = pd.read_csv('Heart_Prediction_Dataset.csv') df.head() 원-핫 인코딩 df = pd.get_dummies(df) df.head() df['HeartDisease'].value_counts() 데이터 전처리 # 훈련 데이터, 검증 데이터, 테스트 데이터 나누기 features = df[df.keys().drop(['HeartDisease'])].values outcome = df['HeartDisease'].values.reshape(-1,1) from sklearn.model_selection import train_test_split train_features, test_features, train_ta.. 2022. 10. 4.
[XGBoost] 위스콘신 유방암 데이터 (3) wpbc 데이터셋 특징은 유방 종괴의 미세 바늘 흡인물 (FNA)의 디지털화된 이미지에서 계산된다. 이것은 이미지에 존재하는 세포 핵의 특성을 설명한다. (https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29) import pandas as pd df = pd.read_csv('wpbc_data.csv', header=None) df.head() # Outcome 값 변경 df.loc[df[1]=='N',1] = 0 df.loc[df[1]=='R',1] = 1 df[1] = df[1].astype('int32') df.describe() # 결측치 제거 및 Outcome 비율 확인 for key in df.keys.. 2022. 10. 4.
[XGBoost] 위스콘신 유방암 데이터 (2) wdbc 데이터셋 특징은 유방 종괴의 미세 바늘 흡인물 (FNA)의 디지털화된 이미지에서 계산된다. 이것은 이미지에 존재하는 세포 핵의 특성을 설명한다. (https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29) import pandas as pd df = pd.read_csv('wdbc_data.csv', header=None) df.head() # Outcome 값 변경 df.loc[df[1]=='B', 1] = 0 df.loc[df[1]=='M', 1] = 1 df[1] = df[1].astype('int32') df.describe() df.isnull().sum() 데이터 전처리 features = df[d.. 2022. 10. 4.
[XGBoost] 위스콘신 유방암 데이터 (1) 위스콘신 유방암 데이터 사이킷런에서는 UCI ML 유방암 위스콘신 (진단) 데이터 세트를 제공한다. 또한, 사본도 다운로드 가능하다. 라이브러리 설치 conda install -c conda-forge xgboost conda install -c conda-forge imbalanced-learn breast-cancer-wisconsin 데이터셋 로드 import pandas as pd df = pd.read_csv('breast-cancer-wisconsin.data.csv', names=['id','Clump Thickness','Uniformity of Cell Size','Uniformity of Cell Shape','Marginal Adhesion','Single Epithelial Cell.. 2022. 10. 4.
[Machine Learning] LightGBM LightGBM LightGBM은 GBM 계열의 트리 분할 방법과 다르게 리프 중심 트리 분할 방식을 사용한다. 기존의 대부분 트리 기반 알고리즘은 트리의 깊이를 효과적으로 줄이기 위한 균형 트리 분할 방식을 사용한다. 리프 중심 트리 분할은 트리의 균형을 맞추지 않고, 최대 손실 값을 가지는 리프 노드를 지속적으로 분할하면서 트리의 깊이가 깊어지고 비대칭적인 규칙 트리가 생성 된다. 예측 오류 손실을 최소화 할 수 있다. LightGBM의 특징 더 빠른 학습과 예측 수행 시간 더 작은 메모리 사용 카테고리형 피처의 자동 변환과 최적 분할 대용량 데이터에 대한 뛰어난 예측 성능 및 병렬 컴퓨팅 기능을 제공 최근에는 GPU까지 지원 XGBoost보다 학습에 걸리는 시간이 훨씬 적으며, 메모리 사용량도 상대.. 2022. 10. 4.
[LightGBM] 매개변수 조정 (Parameters Tuning) (2) Grow Less Trees 모델에 트리 노드를 추가하는 데 필요한 시간을 줄여 학습 시간을 더욱 줄일 수 있다. 아래는 훈련 속도를 높이지만 훈련 정확도를 떨어뜨릴 수 있다. Decrease num_iterations 매개변수 num_iterations는 수행할 부스팅 라운드 수를 제어한다. LightGBM은 의사결정 트리를 학습자로 사용하기 때문에 "트리의 수"로 생각할 수도 있다. num_iterations을 변경하려고 하면 learning_rate도 바꾼다. learning_rate는 훈련 시간에는 영향을 미치지 않지만 훈련 정확도에는 영향을 미친다. 일반적으로 num_iterations를 줄이면 learning_rate을 늘려야 한다. num_iterations와 learning_rate의 올바.. 2022. 7. 4.
728x90
반응형
LIST