From 6f3127d57f7926422534a5a85ef89306ab7212a9 Mon Sep 17 00:00:00 2001 From: bkersbergen Date: Tue, 15 Mar 2022 19:53:35 +0100 Subject: [PATCH] add support for disabling idf using idf_weighting=0 --- src/vmisknn/mod.rs | 9 +++++++-- src/vmisknn/vmis_index.rs | 7 ++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/vmisknn/mod.rs b/src/vmisknn/mod.rs index f21728e..e63b2a2 100644 --- a/src/vmisknn/mod.rs +++ b/src/vmisknn/mod.rs @@ -143,8 +143,13 @@ pub fn predict( for item_id in training_item_ids.iter() { let item_idf = index.idf(item_id); - *item_scores.entry(*item_id).or_insert(0.0) += - session_weight * item_idf * scored_session.score; + if item_idf > 0.0 { + *item_scores.entry(*item_id).or_insert(0.0) += + session_weight * item_idf * scored_session.score; + } else { + *item_scores.entry(*item_id).or_insert(0.0) += + session_weight * scored_session.score; + } } } diff --git a/src/vmisknn/vmis_index.rs b/src/vmisknn/vmis_index.rs index 0eb3c3d..9eb5b66 100644 --- a/src/vmisknn/vmis_index.rs +++ b/src/vmisknn/vmis_index.rs @@ -506,13 +506,10 @@ pub(crate) fn prepare_hashmap( item_to_top_sessions_ordered.insert(*current_item, current_item_similar_sessions_id_sorted); // Store (item, idf score) in second hashmap // let idf_score = (current_item_timestamps.len() as f64 / historical_sessions_values_sorted.len() as f64).ln(); - let idf_score = if idf_weighting > 0.0 { + let idf_score = (historical_sessions_values_sorted.len() as f64 / current_item_timestamps.len() as f64) - .ln() * idf_weighting - } else { - 1.0 - }; + .ln() * idf_weighting; item_to_idf_score.insert(*current_item, idf_score); let attributes = ProductAttributes { is_adult: false,