데이터 마이닝 알고리즘 및 실습 (18) : 통합 학습 알고리즘 (Boosting, Bagging)

이전에는 단일 머신 러닝 알고리즘에 대한 이해와 사용을 주로 소개했는데, 실제 시나리오에서는 최적의 결과를 얻기 위해 통합 학습, 즉 결합 된 마이닝 알고리즘이 자주 사용됩니다. 통합 학습에는 Boosting과 Bagging의 두 가지 유형이 있습니다. 전자는 여러 직렬 약한 학습자를 통해 얻습니다. 강력 학습자 (GBDT, XoostGB, LightGBM)는 다중 의사 결정 트리 투표를 통해 최적의 모델 (랜덤 포레스트 RF)을 병렬로 구현하고 일반적으로 경쟁에서 직접 통합 학습을 사용하기 때문에 모델이 성능은 최대한 보장 될 수 있습니다.

실제 장면과 대회는 일반적으로 통합 알고리즘을 직접 사용합니다. 왜냐하면 단일 알고리즘은 실제로는 하나의 의사 결정자와 같기 때문입니다. 오류가 발생하기 쉽습니다. 통합 알고리즘은 데이터 / 특징을 샘플링하거나 의도적으로 모델 오류율을 줄여 최종 모델 오류를 최소화합니다. ① 약한 학습자간에 강한 의존성이 있고 직렬화 직렬화 방식이어야 함, 대표 : 부스팅, ② 약한 학습자간에 강한 의존성이 없음, 동시에 생성 할 수있는 병렬화 방법, 대표 : Bagging 및 Random Forest (Random Forest), sklearn 중국어 커뮤니티 : 통합 학습 알고리즘 세부 사항을 참조 할 수 있습니다.

1. 포대기와 랜덤 포레스트

배깅 배깅 방식 통합 학습, 샘플링 샘플 / 데이터 세트를 통해 약한 학습자를 병렬로 훈련시키는 전략 기능은 일련의 약한 학습자를 훈련 한 후 특정 조합 전략 (투표 또는 평균화 메커니즘)을 사용하여 평균 제곱 오차를 최소화하는 것입니다. a model 결과적으로 Random Forest는 데이터 / 특성을 대체하여 샘플링하여 더 높은 정확도의 모델을 형성하기위한 병렬 의사 결정 트리를 구성하는 것으로 알고리즘 흐름은 다음과 같습니다.

Bagging은 무작위 샘플링 (bootsrap)을 사용하여 교체가 포함 된 훈련 세트에서 고정 된 m 개 샘플을 샘플링하고 T 회를 그립니다. 매번 그려진 m 개 샘플의 내용이 다릅니다. 1 개 샘플에 대해 무작위 샘플링으로 수집 될 확률은 1입니다. / m, 수집되지 않을 확률은 1−1 / m, T 샘플을 수집하지 않으면 확률은 (1−1 / m) ^ T, T → ∞, (1−1m) ^ m → 1 일 때 /e≃0.368. 즉, 배깅의 랜덤 샘플링의 각 라운드에서 학습 세트에있는 데이터의 약 36.8 %가 샘플링되지 않습니다.이 부분에서는 샘플링되지 않은 데이터의 약 36.8 %를 OOB (Out Of Bag)라고합니다. 이 데이터는 학습 세트 모델의 피팅과 관련이 없으므로 모델의 일반화 능력을 감지하는 데 사용할 수 있습니다.

    Adaboost와 마찬가지로 배깅은 약한 학습자에 대한 제한이 없습니다. 의사 결정 트리와 신경망이 일반적으로 사용됩니다. 동시에 배깅의 조합 전략은 비교적 간단합니다. 분류 문제는 간단한 투표 방법을 사용합니다. 카테고리 또는 카테고리 중 하나 가장 많은 표를 얻은 것이 최종 모델 출력입니다. 회귀 문제는 간단한 평균 방법을 사용하여 T 약한 학습자가 얻은 회귀 결과를 산술 평균하여 최종 모델 출력을 얻습니다. Bagging 알고리즘은 학습 모델을 샘플링하므로 강력한 일반화 능력이 있습니다. 모델의 분산을 줄이는 데 매우 효과적입니다.

Random Forest (Random Forest)는 CART 의사 결정 트리를 약한 학습자로 사용하는 GBDT와 유사한 Bagging의 진화입니다. 둘째, RF는 의사 결정 트리의 일부 기능 중 가장 큰 Gini 계수 기능을 분류 기준으로 사용합니다. 포인트, RF 및 일반 배깅 알고리즘은 다르지 않습니다.

2, 부스팅 및 GBDT, XGBoost, LightGBM

Boosting 알고리즘 전략은 먼저 초기 가중치로 약한 학습자 1을 훈련하고, 학습 오류가 높은 학습 샘플의 가중치가 가리 키도록 약 학습의 학습 오류율에 따라 훈련 샘플의 가중치를 업데이트하는 것입니다. 이전 약한 학습자의 비율이 높아져서 이러한 오류가 발생합니다. 비율이 높은 포인트는 나중에 약한 학습자에서 더 많은주의를 받고 가중치를 조정 한 후 설정된 훈련에 따라 약한 학습자를 훈련합니다. 약한 학습자는 미리 지정된 숫자 T에 도달하고 마지막으로 T에 도달합니다. 약한 학습자는 설정된 전략을 통해 통합되어 최종 강력한 학습자를 획득하여 다음 네 가지 문제를 해결합니다. ① 학습 오류율을 계산하는 방법은 무엇입니까? ② 약한 학습자의 가중치 계수는 어떻게 구합니까? ③ 샘플 무게 업데이트는 어떻게하나요? ④ 어떤 조합 전략이 사용됩니까?

GBDT는 의사 결정 트리 학습자를 기반으로하는 반복 알고리즘입니다. GBDT의 의사 결정 트리는 분류 트리가 아닌 회귀 트리입니다. 부스트는 "부스팅"을 의미합니다. 일반적으로 부스팅 알고리즘은 반복 프로세스입니다. 교육은 결과를 향상시키는 것입니다. 마지막으로. GBDT의 핵심은 각 트리가 모든 이전 트리 결론의 합계의 잔차를 학습한다는 것입니다.이 잔차는 예측 값을 더한 후 실제 값을 얻을 수있는 누적량입니다. 예를 들어 A의 실제 연령은 18 세이지 만 첫 번째 나무의 예상 연령은 12 세이고 차이는 6 세, 즉 잔차는 6 세입니다. 두 번째 트리에서 A의 나이를 6 세로 설정하여 학습하고 두 번째 트리가 A를 6 년된 잎 노드로 실제로 나눌 수 있다면 두 그루의 나무를 더한 결론은 A의 실제 나이입니다. 두 번째 트리의 결론이 5 년이면 A는 여전히 1 년의 잔여 오차를 갖고 세 번째 트리의 A의 나이는 1 년이되고 계속 학습합니다.

참조 : 자세한 설명

XGBoost University of Washington 알고리즘 : ① GBDT에 가지 치기를 추가하여 모델의 복잡성을 제어합니다 .② 기본 분류 선택을 증가시킵니다 .③ 병렬을 지원할 수 있습니다.

# xgb参数
params = {
    'booster':'gbtree',
    'min_child_weight': 100,
    'eta': 0.02,
    'colsample_bytree': 0.7,
    'max_depth': 12,
    'subsample': 0.7,
    'alpha': 1,
    'gamma': 1,
    'silent': 1,
    'objective': 'reg:linear',
    'verbose_eval': True,
    'seed': 12
}

LightGBM : Microsoft의 오픈 소스 알고리즘은 XGBoost의 개선 된 버전입니다. XGboost의 주요 단점은 다음과 같습니다. ① 각 반복에서 전체 학습 데이터를 여러 번 통과해야합니다. 전체 학습 데이터가 메모리에로드되면 학습 데이터의 크기가 제한되고, 메모리에로드되지 않으면 학습 데이터를 반복적으로 읽고 쓰는 데 많은 시간이 소요됩니다. 정렬 방법은 많은 시간과 공간을 소비합니다.

LightGBM은 히스토그램을 기반으로 희소 기능을 최적화하여 병렬 통신 오버 헤드를 줄이면서 동시에 데이터 분할의 복잡성을 낮 춥니 다.

# lgb的参数
params = {
    'task': 'train',
    'boosting_type': 'gbdt',  # 设置提升类型
    'objective': 'regression', # 目标函数
    'metric': {'l2', 'auc'},  # 评估函数
    'num_leaves': 31,   # 叶子节点数
    'learning_rate': 0.05,  # 学习速率
    'feature_fraction': 0.9, # 建树的特征选择比例
    'bagging_fraction': 0.8, # 建树的样本采样比例
    'bagging_freq': 5,  # k 意味着每 k 次迭代执行bagging
    'verbose': 1 # <0 显示致命的, =0 显示错误 (警告), >0 显示信息
}

추천

출처blog.csdn.net/yezonggang/article/details/112675370