เท่าที่ฉันรู้ในการฝึกอบรมการเรียนรู้เพื่อจัดอันดับแบบจำลองคุณต้องมีสามสิ่งในชุดข้อมูล:
- ป้ายกำกับหรือความเกี่ยวข้อง
- รหัสกลุ่มหรือแบบสอบถาม
- คุณสมบัติเวกเตอร์
ตัวอย่างเช่นชุดข้อมูล Microsoft Learning to Rankใช้รูปแบบนี้ (ป้ายกำกับ, id กลุ่มและคุณสมบัติ)
1 qid:10 1:0.031310 2:0.666667 ...
0 qid:10 1:0.078682 2:0.166667 ...
ฉันลอง xgBoost ที่ใช้ GBM เพื่อทำการจัดอันดับแบบคู่ พวกเขามีตัวอย่างสำหรับงานการจัดอันดับที่ใช้โปรแกรม C ++ เพื่อเรียนรู้เกี่ยวกับชุดข้อมูล Microsoft ดังกล่าวข้างต้น
อย่างไรก็ตามฉันใช้ตัวห่องูหลามและไม่สามารถหาตำแหน่งที่ฉันสามารถป้อนรหัสกลุ่ม ( 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]