XgBoost'ta ikili sıralama modellerine nasıl uyulur?


14

Bildiğim kadarıyla, modelleri sıralamak için öğrenmeyi eğitmek için veri kümesinde üç şeye sahip olmanız gerekir:

  • etiket veya alaka düzeyi
  • grup veya sorgu kimliği
  • özellik vektörü

Örneğin, Microsoft Öğrenme Sıralaması veri kümesi bu biçimi (etiket, grup kimliği ve özellikler) kullanır.

1 qid:10 1:0.031310 2:0.666667 ...
0 qid:10 1:0.078682 2:0.166667 ...

Ben ikili sıralaması yapmak için GBM kullanan xgBoost deniyorum. Yukarıdaki gibi Microsoft veri kümesinde öğrenmek için C ++ programını kullanan bir sıralama görevi için bir örnek var .

Ancak, kendi Python sarıcı kullanıyorum ve ( qidyukarıda) grup kimliği girebilirsiniz nerede bulamıyorum görünmüyor . Modeli sadece özellikleri ve alaka düzeyi puanlarını kullanarak eğitebilirim ama bir şeyleri özlediğimi hissediyorum.

İşte örnek bir komut dosyası.

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]

Ben de bu sorunla karşılaşıyorum, ama işleve ne tür set_group geçmeliyim? bir numpy veya liste oluşturduğumda şu hatayı alıyorum: d: \ build \ xgboost \ xgboost-git \ dmlc-core \ include \ dmlc \ ./ logging.h: 235: [12:03:09] D: \ Derleme \ xgboost \ xgboost-git \ src \ c_api \ c_api.cc: 342: Kontrol başarısız oldu: (src.info.group_ptr.size ()) == (0) dilim grup yapısını desteklemiyor @amyrit
user2404620

Yanıtlar:


9

Göre XGBoost belgelerinde , XGboost bekler:

  • aynı grubun örneklerini birbirini izleyen örnekler olmak,
  • her grubun büyüklüğüne sahip bir liste ( Python'da set_groupyöntemiyle ayarlayabilirsiniz DMatrix).

1
Teşekkürler, model oluşturma API'sı ( sklearn.py) Python paketi için biraz eksik gibi görünüyor .
tokestermw

4

set_groupsıralama için çok önemlidir, çünkü sadece bir gruptaki puanlar karşılaştırılabilir. Verileri kendi gruplarındaki puanlarına göre sıralayabilirsiniz.

Kolay sıralama için xgboostExtension'ımı kullanabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.