RecallGain metric
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Stale
- Domain
- machine-learning
Research direction
The issue proposes changes to metric calculation and cross validation, but names no files, tests, or entry points. Start by locating the existing metric implementations and the calc_metrics and cross_validate APIs. Done means RecallGain works for a single reference model and multiple reference models, with the proposed per-user and cross-validation behavior.
Written by the indexing model from the issue text.
Description
Feature Description
Given test interactions, we can exclude all Positives that would have been recommended by the reference model (e.g. popular model). After that we can calculate Recall as usual. Resulting metrics is interpreted as a gain to overall Recall which is achieved by the new algorithm in comparison with the reference algorithm.
Why this feature?
Useful for both candidate-generators selection and simple validation protocol in case of strong popularity bias in data (e.g. calculating RecallGain from a Popular model).
Additional context
recall_gain = RecallGain(k=10, k_ref=20)
# one metric
value = recall_gain.calc(reco=recos, ref_recos=ref_recos)
per_user = recall_gain.calc_per_user(reco=recos, ref_recos=ref_recos)
# calc_metrics
calc_metrics(
metrics = {"precision": precision, "intersecton": intersecton, "recall_gain": recall_gain},
reco=recos,
interactions=df_test,
ref_recos: Union[pd.Datafame, Dict[Hashable, pd.DataFrame]]=ref_recos
)
# here we can pass multiple models with:
ref_recos = {"one": ref_recos_one, "two": ref_recos_two}
# result dict will have `intersecton_one`, `intersecton_two`, `recall_gain_one`, `recall_gain_two` as keys
# cross_validate
cv_results = cross_validate(
dataset=dataset,
splitter=splitter,
models=models,
metrics=metrics,
k=10,
filter_viewed=True,
ref_models=["one", "two"], # just selecting keys from `models` argument
validate_ref_models=False # optionally exclude ref_models from other metrics
)
- Dominant language
- Python
- Stars
- 457
- Forks
- 55
- PR merge metrics
- No merged PRs in 30d
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from MTSWebServices/RecTools
-
good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
MTSWebServices/RecTools#330 ·
-
Is it not possible to `load` transformer model on cpu onlyPossibly taken @maxteneff claimed this 22 days ago. Openbug good first issue
Difficulty 3/5 1-2 days Newbie friendliness 35/100
MTSWebServices/RecTools#286 · 3 comments ·
-
bug good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 35/100
MTSWebServices/RecTools#269 · 4 comments ·
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 25/100
MTSWebServices/RecTools#249 ·
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 25/100
MTSWebServices/RecTools#243 ·
All issues in MTSWebServices/RecTools
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 87/100
Maintainers usually reply within 7 days
-
area: web priority: P1 story
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
nfiasco/Quant-Time-Machine#151 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
autowarefoundation/autoware_carla_scenario#2019 ·
Maintainers usually reply within 1 day
-
docs pydanty:is-working
Difficulty 1/5 1-3 hours Newbie friendliness 85/100
pydantic/pydantic-ai#12892 ·
Maintainers usually reply within 1 day