내가 아는 한, 모델 순위를 정하는 학습을 훈련 시키려면 데이터 세트에 세 가지가 있어야합니다.
- 라벨 또는 관련성
- 그룹 또는 쿼리 ID
- 특징 벡터
예를 들어 Microsoft Learning to Rank 데이터 세트 는이 형식 (레이블, 그룹 ID 및 기능)을 사용합니다.
1 qid:10 1:0.031310 2:0.666667 ...
0 qid:10 1:0.078682 2:0.166667 ...
GBM을 사용하여 쌍별 순위를 지정하는 xgBoost를 시도하고 있습니다. 위와 같이 C ++ 프로그램을 사용하여 Microsoft 데이터 집합을 학습 하는 순위 지정 작업 의 예가 있습니다.
그러나 Python 래퍼를 사용하고 있으며 그룹 ID를 입력 할 수있는 곳을 찾을 수없는 것 같습니다 ( qid
위). 기능과 관련성 점수 만 사용하여 모델을 학습 할 수 있지만 무언가 빠진 것 같습니다.
다음은 샘플 스크립트입니다.
gbm = XGBRegressor(objective="rank:pairwise")
X = np.random.normal(0, 1, 1000).reshape(100, 10)
y = np.random.randint(0, 5, 100)
gbm.fit(X, y) ### --- no group id needed???
print gbm.predict(X)
# should be in reverse order of relevance score
print y[gbm.predict_proba(X)[:, 1].argsort()][::-1]
또한이 문제를 겪지 만 함수에 어떤 종류의 set_group을 전달해야합니까? 숫자 또는 목록을 만들 때 다음과 같은 오류가 발생합니다. d : \ build \ xgboost \ xgboost-git \ dmlc-core \ include \ dmlc \ ./ logging.h : 235 : [12:03:09] D : \ 빌드 \ xgboost \ xgboost-git \ src \ c_api \ c_api.cc : 342 : 확인 실패 : (src.info.group_ptr.size ()) == (0) 슬라이스가 그룹 구조를 지원하지 않습니다 @amyrit
—
user2404620