Tanto quanto eu sei, para treinar o aprendizado para classificar modelos, você precisa ter três coisas no conjunto de dados:
rótulo ou relevância
ID do grupo ou da consulta
vetor de recurso
Por exemplo, o conjunto de dados Microsoft Learning to Rank usa esse formato (rótulo, ID do grupo e recursos).
Estou experimentando o xgBoost que utiliza GBMs para fazer uma classificação pareada. Eles têm um exemplo para uma tarefa de classificação que usa o programa C ++ para aprender sobre o conjunto de dados da Microsoft como acima.
No entanto, estou usando o wrapper Python e não consigo encontrar onde posso inserir o ID do grupo ( qidacima). Posso treinar o modelo usando apenas os recursos e as pontuações de relevância, mas sinto que estou perdendo alguma coisa.
Aqui está um exemplo de script.
— tokestermw
Também me deparei com esse problema, mas que tipo de set_group devo passar para a função? quando construo um numpy ou lista, recebo um erro como este: d: \ build \ xgboost \ xgboost-git \ dmlc-core \ include \ dmlc \ ./ logging.h: 235: [12:03:09] D: \ Build \ xgboost \ xgboost-git \ src \ c_api \ c_api.cc: 342: Falha na verificação: (src.info.group_ptr.size ()) == (0) a fatia não suporta a estrutura do grupo @amyrit
— user2404620
De acordo com a documentação do XGBoost , o XGboost espera:
os exemplos de um mesmo grupo para serem exemplos consecutivos,
uma lista com o tamanho de cada grupo (que você pode definir com o set_groupmétodo DMatrixem Python).
— amyrit
Obrigado, parece que a API para model buildling ( sklearn.py) está um pouco incompleta para o pacote Python.
set_groupé muito importante para a classificação, porque apenas as pontuações em um grupo são comparáveis. Você pode classificar os dados de acordo com suas pontuações em seu próprio grupo.