RERANKING fournit des algorithmes pour ré-classez les éléments classés à toute distribution d'attribut d'élément spécifié.
Ce package peut être utilisé comme modulaire post-traitement des systèmes de recommandation ou des moteurs de recherche.
Inspiré par le classement de l'équité en papier dans les systèmes de recherche et de recommandation avec une application à LinkedIn Talent Search.
Prenant «recommander des candidats aux recruteurs» comme l'exemple (c'est le cas du service de recruteur LinkedIn souligné dans le document), le classement des moteurs de recherche est recommandé par la distribution des attributs protégés comme la parité entre les sexes et la démographie en considération de la justice des candidats aux recruteurs.
Par exemple, lorsque nous recommandons des produits aux utilisateurs, la distribution des préférences du produit pour chaque utilisateur (qui peut être obtenue par le journal d'achat ou le journal de vue) peut être utilisée pour ré-classez le classement des articles par des systèmes de recommandation pour obtenir une recommandation plus personnalisée.
$ pip install reranking import reranking
item_attribute = [ "a1" , "a1" , "a1" , "a2" , "a1" , "a1" , "a1" , "a2" , "a2" , "a1" ]
desired_distribution = { "a1" : 0.5 , "a2" : 0.5 }
rerank_indices = reranking . rerank (
item_attribute , # attributes of the ranked items
desired_distribution , # desired item distribution
max_na = None , # controls the max number of attribute categories applied
k_max = None , # length of output, if None, k_max is the length of `item_attribute`
algorithm = "det_greedy" , # "det_greedy", "det_cons", "det_relaxed", "det_const_sort"
verbose = False , # if True, the output is with detailed information
)
print ( rerank_indices ) Le rerank_indices est [0, 3, 1, 7, 2, 8, 4, 5, 6, 9] qui est la liste des indices d'articles après la réévaluation par la distribution souhaitée. Les meilleurs éléments de la liste recommandée auront la même distribution que la distribution souhaitée s'il y a suffisamment d'éléments souhaités. ( item_attribute a le même ordre avec la liste des éléments afin qu'il contient des informations de classement / score.)
# Evaluate the before&after of the re-ranking result above
item_attribute_reranked = [ item_attribute [ i ] for i in rerank_indices ]
before = reranking . ndkl ( item_attribute , desired_distribution )
after = reranking . ndkl ( item_attribute_reranked , desired_distribution )
print ( f" { before :.3f } , { after :.3f } " ) Les before et after sont respectivement 0.412 et 0.172 qui sont la divergence cumulative cumulative (NDKL) de la distribution d'attribut d'articles classées et la distribution souhaitée. (Plus bas est meilleur.)
Plus d'exemples peuvent être trouvés ici.