Reranking proporciona algoritmos para volver a clasificar los elementos clasificados a cualquier distribución de atributos de elementos especificados.
Este paquete se puede utilizar como un modular posterior al procesamiento de sistemas de recomendación o motores de búsqueda.
Inspirado en la clasificación de la justicia en papel en los sistemas de búsqueda y recomendación con aplicación a la búsqueda de talentos de LinkedIn.
Tomando "recomendar candidatos a los reclutadores" como el ejemplo (este es el caso del servicio de reclutador de LinkedIn estresado en el documento), las clasificaciones de motores de búsqueda se vuelven a clasificar por la distribución de los atributos protegidos como el género y la paridad demográfica en consideración de la exhibición justa de los candidatos a los reclutadores.
Por ejemplo, cuando recomendamos productos a los usuarios, la distribución de preferencias de producto para cada usuario (que puede obtenerse por el registro de compra o el registro de vista) se puede utilizar para volver a clasificar las clasificaciones de artículos mediante sistemas de recomendación para obtener una recomendación más personalizada.
$ 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 ) El rerank_indices es [0, 3, 1, 7, 2, 8, 4, 5, 6, 9] , que es la lista de índices de elementos después de volver a clasificar por la distribución deseada. Los elementos principales de la lista de clasificación tendrán la misma distribución que la distribución deseada si hay suficientes elementos deseados. ( item_attribute tiene el mismo orden con la lista de elementos para que contenga información de rango/puntaje).
# 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 } " ) El before y el after son 0.412 y 0.172 respectivamente, que son la divergencia KL acumulada con descuento normalizada (NDKL) de la distribución de atributos de elementos clasificados y la distribución deseada. (Lower es mejor).
Se pueden encontrar más ejemplos aquí.