2017-03-28 2 views
2

나는 scikit-learn을 사용하여 XGBoost 모델을 구축했으며 매우 만족합니다. 오버 피팅 (overfitting)을 피하기 위해 미세 튜닝을 해보고 싶습니다. 일부 기능의 단조 로움을 보장하기 위해 일부 어려움에 직면하기 시작합니다 ...ScikitLearn을 사용하여 XGBoost에서 단조로운 구속 조건을 적용하는 방법은 무엇입니까?

scikit에는 xgboost에 대한 설명서가 없습니다. 이 상황이 몇 달 동안 계속된다는 것을 알면 정말 놀랐습니다.) 내가 찾은 유일한 문서는 바로 위에 있습니다 http://xgboost.readthedocs.io

이 웹 사이트에서는 "monotone_constraints"옵션을 사용하여 단조 로움을 적용 할 수 있음을 알았습니다. 나는 Scikit이-알아에서 사용하려고 노력하지만 오류 메시지 "형식 오류 : 초기화()를 가지고 예기치 않은 키워드 인수 'monotone_constraints'"가지고

당신이 그것을 할 수있는 방법을 알고 계십니까?

grid = {'learning_rate' : 0.01, 'subsample' : 0.5, 'colsample_bytree' : 0.5, 
    'max_depth' : 6, 'min_child_weight' : 10, 'gamma' : 1, 
    'monotone_constraints' : monotonic_indexes} 
#'monotone_constraints' ~ = "(1,-1)" 
m07_xgm06 = xgb.XGBClassifier(n_estimators=2000, **grid) 
m07_xgm06.fit(X_train_v01_oe, Label_train, early_stopping_rounds=10, eval_metric="logloss", 
    eval_set=[(X_test1_v01_oe, Label_test1)]) 

답변

0

XGBoost 현재 API를 Scikit이-알아보기 (0.6a2) monotone_constraints을 지원하지 않습니다 여기에

은 (스파이더를 사용) 내가 파이썬에서 쓴 코드입니다. 대신 Python API을 사용할 수 있습니다. example을 살펴보십시오.

의 예에서이 코드는 제거 할 수 있습니다 :

params_constr['updater'] = "grow_monotone_colmaker,prune" 
+0

단조 로움 제약이 지금은 효과가없는 것처럼 보입니다. 나는 이것 [여기] (https://github.com/dmlc/xgboost/issues/1514#issuecomment-307567705)에 대해 질문했다. @chapelon이 당신에게 효과가 있습니까? –

0

가 어떻게 모노톤 제약 응답이 2 개 이상의 레벨을 가질 수있는 일반적인 분류 문제에 대한 작업을 기대? 이 기능과 관련된 모든 예는 회귀 문제입니다. 분류 응답에 2 단계 만있는 경우 지표 변수에 대한 회귀 분석으로 전환 한 다음 분류에 적합한 점수 임계 값을 선택하십시오.

이 기능은 XGB 분류기가 아닌 XGBregressor를 사용하고 kwargs를 통해 monotone_constraints를 설정하면 최신 xgboost/scikit-learn에서 작동하는 것으로 보입니다.

구문은 다음과 같은 것이다 :

이 예에서
params = { 
    'monotone_constraints':'(-1,0,1)' 
} 

normalised_weighted_poisson_model = XGBRegressor(**params) 

는, 훈련 데이터에 1 열의에 부정적인 제약 컬럼 2에 아무런 제한하고,이 칼럼 (3)에 양의 제한이있다 이름으로, 위치에 의해서만 열을 참조 할 수 없으며, 학습 데이터의 모든 열에 대해 제약 튜플에 항목을 지정해야합니다.