기계 학습 알고리즘 - XGBoost
주요 혁신 점:
링크:https://www.jianshu.com/p/a62f4dce3ce8
2. 원리
XGBoost 는 CART 회귀 트 리 와 같은 생각 을 사용 하고 탐욕 알고리즘 을 이용 하여 모든 특징의 모든 특징 구분 점 을 옮 겨 다 니 며 사용 하 는 목표 함수 가 다르다.구체 적 인 방법 은 분 단 된 목표 함수 값 이 단자 잎 노드 의 목표 함수 보다 이득 을 얻 는 동시에 나무의 성장 이 너무 깊 은 것 을 제한 하기 위해 한도 값 을 추가 하고 이득 이 이 한도 값 보다 클 때 만 분열 하 는 것 이다.따라서 계속 분열 되 어 한 그루 의 나 무 를 형성 하고 한 그루 의 나 무 를 형성 하 며 매번 에 지난번 의 예측 을 바탕 으로 가장 좋 은 분열 / 나 무 를 구축한다.
3. XGBoost 의 장단 점
GBDT 와 비교
CART
, XGBoost 지원
은 L1 과 L2 정규 항 을 가 진 논리 회귀 (분류 문제) 와 선형 회귀 (회귀 문제) 에 해당 한다.
만 사 용 했 고 XGBoost 는 목표 함수
를 진행 했다. 그 밖 에 XGBoost 지원
은 손실 함수 2 단계 만 유도 할 수 있다
에서
정규 항 은
과 L2
를 포함한다.트 리 구 조 를 제약 함으로써 모델 의 방 차 를 낮 추고 의합 을 방지한다.
, 분열 방향 자동 학습
,
후속 모델 로 하여 금 더욱 큰 최적화 공간 을 가지 게 하고 과 의합 을 방지 하도록 한다.
효율 적 인 분할 점 을 생 성 하 는 데 사용 된다. 즉, 분 단 된 특정한 값 으로 분 단 전의 특정한 값 을 뺀 것 이다.이득 을 얻 고 나무의 성장 을 제한 하기 위해 한도 값 을 도입 하여 이득 이 한도 값 보다 클 때 분열 한다.LightGBM 과 비교 4.API
데이터 읽 기
dtrain = xgb.DMatrix(‘demo/data/agaricus.txt.train’)
dtest = xgb.DMatrix(‘demo/data/agaricus.txt.test’)
map 를 통 해 매개 변 수 를 지정 합 니 다.
param = {‘max_depth’:2, ‘eta’:1, ‘silent’:1, ‘objective’:‘binary:logistic’ }
num_round = 2
bst = xgb.train(param, dtrain, num_round)
예측 하 다.
preds = bst.predict(dtest)
DMatrix 대상 에 numpy 의 배열 을 불 러 오 려 면 코드 는 다음 과 같 습 니 다.
import numpy as np
import xgboost as xgb
data = np.random.rand(5,10) # 5 entities, each contains 10 features
label = np.random.randint(2, size=5) # binary target
dtrain = xgb.DMatrix( data, label=label)
->data
array([[4.58112586e-01, 5.15109055e-01, 9.49322368e-01, 4.12068451e-01,
9.07828945e-01, 6.01836350e-01, 2.67689084e-02, 8.71999699e-01,
9.70469774e-01, 4.08043402e-01],
[3.84152246e-01, 3.33657143e-01, 5.09202802e-01, 7.49937855e-01,
6.76731623e-01, 5.98826160e-01, 8.87044516e-01, 2.42738478e-01,
5.54069014e-01, 7.31676395e-01],
[4.31604612e-04, 2.37646980e-01, 7.08828313e-01, 2.97212746e-01,
7.08635495e-01, 5.25163997e-01, 3.93572198e-01, 9.49710807e-01,
7.81015022e-01, 2.29557159e-01],
[7.72886296e-01, 2.38108229e-01, 1.25507593e-01, 2.79567575e-01,
2.82561160e-02, 7.04470072e-01, 2.61917976e-01, 5.98723606e-01,
6.72975320e-01, 7.21076548e-01],
[2.88186647e-01, 6.24797266e-01, 5.15669053e-01, 8.68095215e-01,
4.43562171e-01, 5.07861559e-01, 6.53741982e-01, 9.29474058e-01,
7.91150281e-02, 1.52469552e-01]])
-> label
array([1, 1, 1, 0, 0])
-> dtrain
import scipy
csr = scipy.sparse.csr_matrix((dat, (row, col)))
dtrain = xgb.DMatrix(csr)
dtrain = xgb.DMatrix(‘train.svm.txt’)
dtrain.save_binary(“train.buffer”)
dtrain = xgb.DMatrix(data, label=label, missing = -999.0)
w = np.random.rand(5, 1)
dtrain = xgb.DMatrix(data, label=label, missing = -999.0, weight=w)
param = {'bst:max_depth':2, 'bst:eta':1, 'silent':1, 'objective':'binary:logistic' }
param['nthread'] = 4
param['eval_metric'] = 'auc'
param[‘eval_metric’] = [‘auc’, ‘ams@0’]
#alternativly:
#plst = param.items()
#plst += [(‘eval_metric’, ‘ams@0’)]
evallist = [(dtest,‘eval’), (dtrain,‘train’)]
num_round = 10
bst = xgb.train( plst, dtrain, num_round, evallist )
bst.save_model(‘0001.model’)
#
bst.dump_model(‘dump.raw.txt’)
#
bst.dump_model(‘dump.raw.txt’,‘featmap.txt’)
bst = xgb.Booster({‘nthread’:4}) #init model
bst.load_model(“model.bin”) # load data
boosting rounds( )
을 찾 는 것 을 미리 중단 할 수 있 습 니 다. 미리 중단 하려 면 최소한 하나의 evals
집합 이 필요 합 니 다. 여러 개가 있 으 면 마지막 을 사용 합 니 다. train(…, evals=evals, early_stopping_rounds=10)
이 모델 은 점수 가 올 라 갈 때 까지 훈련 을 시작 합 니 다. 검증 오 류 는 적어도 한 개 early_stopping_rounds
씩 줄 여 훈련 을 계속 해 야 합 니 다.미리 멈 추 면 모델 은 세 개의 추가 필드 가 있 습 니 다.
bst.best_score, bst.best_iteration bst.best_ntree_limit.
주의 하 십시오 train()
는 지난번 교체 에서 가장 좋 은 것 이 아니 라 모델 을 되 돌려 줍 니 다. 이것 은 두 개의 도량형 기준 과 함께 사용 하여 (RMSE, )
과 (MAP, NDCG, AUC)
에 달 합 니 다. 여러 개의 평가 기준 을 지정 하면 param [‘eval_metric’]
중의 마지막 하 나 는 미리 멈 추 는 데 사 용 됩 니 다.#7 , 10
data = np.random.rand(7, 10)
dtest = xgb.DMatrix(data)
ypred = bst.predict(xgmat)
훈련 중 미리 멈 추 면 쓸 수 있다
bst.best_ntree_limit
최 적 교체 에서 예측 결 과 를 얻 었 다. ypred = bst.predict(xgmat,ntree_limit=bst.best_ntree_limit)
훈련 정밀도 가 높 은 것 을 관찰 했 지만 테스트 정밀도 가 낮 을 때
문제 에 부 딪 혔 을 것 이다.일반적으로 xgboost 의 과 의합 을 제어 할 수 있 는 두 가지 방법 이 있다.첫 번 째 방법 은 모델 의 복잡 도 를 직접 통제 하 는 것 이다. 이 는 max_depth, min_child_weight gamma
두 번 째 방법 은 무 작위 성 을 증가 시 키 고 훈련 이 소음 에 강 한 것 을 포함한다 subsample, colsample_bytree
. 걸음 길 이 를 줄 일 수 있다 eta
. 그러나 이렇게 할 때 증가 하 는 것 을 기억 해 야 한다 num_round
. (AUC)
을 통 해 균형 scale_pos_weight
과 positive
의 가중치 에 만 관심 이 있다 면.negative
를 유한 한 숫자 (예 를 들 어 1) 로 설정 하면 max_delta_step
원본 링크:https://blog.csdn.net/weixin_40083227/article/details/103610953
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.