lyst / lyst/lightfm

user bias term for WARP loss

Open
#545 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
5.1k
Forks
724
PR merge metrics
No merged PRs in 30d

Description

Hi,
This is not a question for this particular codebase, but I am just wondering how you achieve this.

Recently I notice that if you are doing a collaborative filtering algorithm and using any kind of WARP-like loss function and if your final output layer is just a linear activation, then the user bias term would have no update. This is not hard to understand after some thought and experiment, it turns out that because `value = Eu * Ei + bu + bi` and if you take the negative samples from the same user, bias term `bu` would be perfectly canceled off by the positive and negative samples (because they are the same user). However, for WARP loss, it is suggested that we do not use sigmoid or any of those rescale activation because we are not really fitting 0/1 classes but trying to maximize the penalty of wrong ranking. I tried sigmoid for prediction activation with WARP, the gradient seems to diminish quite fast. It looks like most scores would be close to 1 so the rank penalty is too small.

However, by checking lightfm model's user bias term, it seems that it is updating with WARP and obviously there is no sigmoid like activation for the final prediction (because it is not bounded by 1), so my question is what kind of activation function or any other trick that makes this happen?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files, tests, or entry points and explicitly asks for a conceptual explanation rather than a code change. Begin by locating the WARP loss and bias-gradient implementation, then verify how user bias updates are computed for positive and negative samples. Done should be a confirmed explanation or a clearly scoped, reproducible defect.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
machine-learning
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.