Skip to main content

additive_multi_task

Function additive_multi_task 

Source
pub fn additive_multi_task<I: Clone + Eq + Hash>(
    results_a: &[(I, f32)],
    results_b: &[(I, f32)],
    config: AdditiveMultiTaskConfig,
) -> Vec<(I, f32)>
Expand description

Additive multi-task fusion (ResFlow-style).

Additive fusion of multi-task scores: α·score_a + β·score_b.

ResFlow (arXiv:2411.09705) shows additive outperforms multiplicative for e-commerce ranking tasks. The optimal formula is typically CTR + CTCVR × 20, where CTR and CTCVR are normalized scores from different tasks.

§Algorithm

  1. Normalize each list using the specified normalization method
  2. Compute weighted sum: α·norm_a + β·norm_b
  3. Sort by combined score (descending)

§Example

use rankops::{additive_multi_task, AdditiveMultiTaskConfig};

let ctr_scores = vec![("item1", 0.05), ("item2", 0.03), ("item3", 0.01)];
let ctcvr_scores = vec![("item1", 0.02), ("item2", 0.01), ("item3", 0.005)];

// ResFlow optimal: CTR + CTCVR × 20
let config = AdditiveMultiTaskConfig::new((1.0, 20.0));
let fused = additive_multi_task(&ctr_scores, &ctcvr_scores, config);