I am having some trouble designing a recommender or predictor system for the following problem.

Consider a system where each user can create custom labels for content. I would like to recommend to each user, which label they might use for new content.

I think it's easiest to explain at the hand of an example, in this case, word tags for email:
User A might label email using their tags: important, later, junk etc.
User B might use completely different labels of their own creation: work, home, family etc.

Based on the content I would like to predict or recommend to the user their labels most likely suited to their content.
E.g. in the email example, for a new email, recommend to User B labels: work, project based on the content of the email.

A collaborative filtering approach to the problem (using all users and all known tags) would potentially recommend tags that are not the user's own for labeling content, i.e. recommend label important to User B, which is not a valid recommendation.

The only idea I have is to build/train a personalized model for each user based on their own data and labels.

Any help is appreciated.


1 Answer 1


As a first impression, one might think that user A labels (important, later, junk) may be somehow orthogonal to user B labels (work, home, family). If they really are, the collaborative filtering can't help. But actually even if they seem to be orthogonal, they may not be: hopefully junk is negatively correlated to family for example.

The collaborative approach will be especially useful when labels are correlated, typically user A (work, home, family) being essentially renaming of user B (job, house, wife&kids).

How can you know that "work" and "job" are the same labels? Hopefully, you can use the textual content of the mail: these labels tend to be used for similar mails. You can try to define a similarity between labels: two labels would be similar if correlated to the same words.

If you want to use a word/word method (like word2vec or SVD dimension reduction on word/word matrix) labels can be managed almost exactly like usual words of the mail: you just create bag of words that contain both words in the mail and labels, labels being possibly prefixed with "L[userID]_" to avoid identifying them with the words and keeping the specificity of what the user means with his label.

These method will result in a distance between words/labels that can be used by the predictor. When reading a mail, you just compute the distance from each user's label to the words in the mail.

  • $\begingroup$ Thank you for the response. If the labels are textual, I think your approach would work, an model could learn the correlation between labels for each user and a suggestion could be made based on which label has the highest correlation. In a more general sense, if labels are uncorrelated or can't be correlated (maybe the labels aren't words), is the only option left to create personalized models? $\endgroup$
    – avanwyk
    Commented Nov 21, 2017 at 11:20
  • $\begingroup$ You don't need the labels to be words with this method. You just transform them into words (that actually mean nothing and whose textual content is not used) as a trick in order to use the dimension reduction together with the real words. If the labels were IDs like "L248503", this would work just the same. $\endgroup$ Commented Nov 21, 2017 at 11:38
  • $\begingroup$ Thank you for your feedback, I haven't considered it like that. I will design an experiment to test the methodology, but will accept your answer in the mean time :-) $\endgroup$
    – avanwyk
    Commented Nov 22, 2017 at 9:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.