Reranking menyediakan algoritma untuk menunggang ulang item peringkat ke distribusi atribut item yang ditentukan.
Paket ini dapat digunakan sebagai modular pasca-pemrosesan sistem rekomendasi atau mesin pencari.
Terinspirasi oleh peringkat yang sadar keadilan kertas dalam sistem pencarian & rekomendasi dengan aplikasi untuk pencarian bakat LinkedIn.
Mengambil "merekomendasikan kandidat kepada perekrut" sebagai contoh (ini adalah kasus LinkedIn Recruiter Service yang ditekankan di koran), peringkat mesin pencari diperingkat ulang oleh distribusi atribut yang dilindungi seperti gender dan paritas demografis dengan pertimbangan tampilan yang adil dari para kandidat untuk perekrut.
Misalnya, ketika kami merekomendasikan produk kepada pengguna, distribusi preferensi produk untuk setiap pengguna (yang dapat diperoleh dengan log pembelian atau log view) dapat digunakan untuk menata ulang peringkat item dengan sistem rekomendasi untuk mendapatkan rekomendasi yang lebih personal.
$ 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 adalah [0, 3, 1, 7, 2, 8, 4, 5, 6, 9] yang merupakan daftar indeks item setelah peringkat ulang dengan distribusi yang diinginkan. Item teratas dari daftar peringkat ulang akan memiliki distribusi yang sama dengan distribusi yang diinginkan jika ada cukup barang yang diinginkan. ( item_attribute memiliki pesanan yang sama dengan daftar item sehingga berisi informasi peringkat/skor.)
# 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 dan after adalah 0.412 dan 0.172 masing-masing yang merupakan diskon kumulatif KL-divergensi (NDKL) yang dinormalisasi dari distribusi atribut item peringkat dan distribusi yang diinginkan. (Lebih rendah lebih baik.)
Lebih banyak contoh dapat ditemukan di sini.