Reranking ให้อัลกอริทึมเพื่อจัดอันดับรายการที่จัดอันดับใหม่ให้กับการกระจายแอตทริบิวต์รายการที่ระบุใด ๆ
แพ็คเกจนี้สามารถใช้เป็นโมดูลาร์โพสต์การประมวลผลของระบบแนะนำหรือเครื่องมือค้นหา
แรงบันดาลใจจากการจัดอันดับความเป็นธรรมกระดาษในระบบการค้นหาและคำแนะนำพร้อมแอปพลิเคชันเพื่อค้นหาความสามารถพิเศษของ LinkedIn
การ "แนะนำผู้สมัครให้กับนายหน้า" เป็นตัวอย่าง (นี่เป็นกรณีของบริการนายหน้า LinkedIn เน้นในกระดาษ) การจัดอันดับเครื่องมือค้นหาจะได้รับการจัดอันดับใหม่โดยการแจกจ่ายคุณลักษณะที่ได้รับการป้องกันเช่นเพศและความเท่าเทียมทางประชากรในการพิจารณาการแสดงที่ยุติธรรมของผู้สมัคร
ตัวอย่างเช่นเมื่อเราแนะนำผลิตภัณฑ์ให้กับผู้ใช้การกระจายการตั้งค่าผลิตภัณฑ์สำหรับผู้ใช้แต่ละคน (ซึ่งสามารถรับได้โดยบันทึกการซื้อหรือบันทึกการดู) สามารถใช้เพื่อจัดอันดับการจัดอันดับรายการอีกครั้งโดยระบบแนะนำเพื่อรับคำแนะนำส่วนบุคคลมากขึ้น
$ 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 ) rerank_indices คือ [0, 3, 1, 7, 2, 8, 4, 5, 6, 9] ซึ่งเป็นรายการดัชนีรายการหลังจากจัดอันดับใหม่โดยการแจกแจงที่ต้องการ รายการด้านบนของรายการที่จัดอันดับใหม่จะมีการกระจายเช่นเดียวกับการแจกแจงที่ต้องการหากมีรายการที่ต้องการเพียงพอ ( item_attribute มีลำดับเดียวกันกับรายการรายการดังนั้นจึงมีข้อมูลอันดับ/คะแนน)
# 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 } " ) before และ after คือ 0.412 และ 0.172 ตามลำดับซึ่งเป็น KL-Divergence (NDKL) ลดราคาปกติของการแจกแจงแอตทริบิวต์รายการอันดับและการแจกแจงที่ต้องการ (ต่ำกว่าดีกว่า)
ตัวอย่างเพิ่มเติมสามารถพบได้ที่นี่