2016-06-21 2 views
8

아래의 xgboots sklearn 인터페이스를 사용하여 xgb model-1을 생성하고 교육합니다. 원본 xgboost와 sklearn XGClassifier의 차이점

clf = xgb.XGBClassifier(n_estimators = 100, objective= 'binary:logistic',) 
clf.fit(x_train, y_train, early_stopping_rounds=10, eval_metric="auc", 
    eval_set=[(x_valid, y_valid)]) 

그리고 xgboost 모델

은 모델이 다음과 같이 원래의 xgboost에 의해 만들 수 있습니다

param = {} 
param['objective'] = 'binary:logistic' 
param['eval_metric'] = "auc" 
num_rounds = 100 
xgtrain = xgb.DMatrix(x_train, label=y_train) 
xgval = xgb.DMatrix(x_valid, label=y_valid) 
watchlist = [(xgtrain, 'train'),(xgval, 'val')] 
model = xgb.train(plst, xgtrain, num_rounds, watchlist, early_stopping_rounds=10) 

나는 모든 매개 변수가 모델 1과 모델 2와 같은 생각합니다. 그러나 유효성 검사 점수는 다릅니다. 모델 -1과 모델 -2의 차이점은 무엇입니까?

+2

. 몇 시간 동안 모든 문서 및 모든 코드를 살펴보고 모든 매개 변수를 동일하게 설정 한 다음 교육을 받았습니다. 여전히, 나는'xgb.XGBClassifier'가 0.51 auc를주고'xgb.train'이 0.84 auc를 준다는 것을 알았습니다. 나는 이유를 모른다. – josh

+1

'sklearn'인터페이스에는 몇 가지 옵션이 없습니다. 예를 들어'skreearn' 인터페이스에는 순위 지정에 중요한'DMatrix' 클래스의'set_group' 메소드가 있습니다. – xolodec

답변

1

결과는 XGBClassifier과 같아야합니다. sklearn의 인터페이스는 결국 xgb 라이브러리를 호출합니다.

동일한 결과를 얻으려면 두 방법 모두에 동일한 seed을 추가 할 수 있습니다. 예를 들어, sklearn의 인터페이스 : 내가 알고있는 것처럼

clf = xgb.XGBClassifier(n_estimators = 100, objective= 'binary:logistic',seed=1234) 
+0

나는 이것을했지만 여전히 운이 없다. 질문에 대한 의견보기 – josh

3

은 XGB과의 sklearn 인터페이스의 기본 매개 변수 사이에는 많은 차이가있다. 예 : 기본값 xgb는 eta = 0.3이고 다른 것은 eta = 0.1입니다. 각 여기에 구현의 당신은 기본 매개 변수에 대한 자세한 내용을 볼 수 있습니다 : 저도 같은 문제가 있었다

https://github.com/dmlc/xgboost/blob/master/doc/parameter.md http://xgboost.readthedocs.io/en/latest/python/python_api.html#module-xgboost.sklearn

+0

@ gofr1 : 필수적인 부분은 두 개의 도구가 다른 기본 매개 변수를 가지고 있다는 것입니다. 나는 또한 예를 든다. 문안 인사, –