私はXGBoostのpython実装を使用します。目的の1つはrank:pairwise
そしてそれはペアワイズ損失を最小化します( ドキュメント )。ただし、出力の範囲については何も述べていません。 -10から10までの数字が表示されますが、原則として-infからinfにすることはできますか?
良い質問。 kaggleコンペティション :をご覧ください。
実際、Learning to Rankフィールドでは、特定のクエリに対する各ドキュメントの相対スコアを予測しようとしています。つまり、これは回帰問題や分類問題ではありません。したがって、クエリに添付されたドキュメントが負の予測スコアを取得した場合、それは、他のドキュメントと比較した場合、正のスコアでクエリに比べて比較的少ないことを意味します。
ランキングの予測スコアを示します。ただし、スコアは自分のグループでのみランク付けするために有効です。したがって、入力データのグループを設定する必要があります。
Esayのランキングについては、私のプロジェクトを参照してください xgboostExtension
私があなたの質問を正しく理解している場合、あなたは_rank:pairwise
_を使用して適合されたモデルでのpredict
関数の出力を意味します。
Predict
は、予測変数(_y_hat
_)を示します。
これは_reg:linear
_/_binary:logistic
_などでも同じです。唯一の違いは、_reg:linear
_がMin(RMSE(y, y_hat))
にツリーを構築するのに対し、_rank:pairwise
_はMax(Map(Rank(y), Rank(y_hat)))
。ただし、出力は常に_y_hat
_です。
従属変数の値に応じて、出力は何でもかまいません。しかし、私は通常、出力の分散が従属変数よりもはるかに小さいと予想しています。これは通常、極端なデータ値を適合させる必要がないために当てはまります。ツリーは、グループの最初/最後にランク付けされるのに十分な大きさ/小ささの予測子を生成する必要があります。