Let's say I am building a recommender system where items change through time. We suppose that each transaction is composed of :

  • an item $i$ in list of items $(i_1, i_2, i_3, .., i_m)$.
  • a user $u$ in list of users $(u_1, u_2, u_3, ..., u_n)$.
  • a date $t$ in list of dates $(t_1, t_2, ... t_k)$.

We suppose that items have underlying features that change over time.For example, If we consider retail products, underlying features could be :

  • The discount level that is applied on the item when the customer has purchased the transaction (5%, 10%, 20%, 30%, ...).

An other example, if we consider financial stocks, underlying features that change over time could be :

  • The stock situation at time of the transaction (underpriced or overpriced).
  • The stock's central bank politics at time of the transaction (low interest rates, medium interest rates, high interest rates).

We suppose that these underlying features have a strong impact on users. It completly drives their decisions to buy or not an object. If we consider two items $i_1$ and $i_2$, at time $t_1$, a given user $u_1$ could prefer $i_1$ over $i_2$ because $i_1$'s underlying features are more interesting than $i_2$'s. If we consider a different time, maybe $u_1$ could be more interested in $i_2$ than $i_1$.

My question is : how to take into account underlying features that change over time in recommender systems such as user-user collaborative filtering, SVD, ALS... ?.


2 Answers 2


You will have look for incremental, online, or dynamic versions of classic recommender system algorithms. Those are the terms associated with changes over time.

Another option is to reinforcement learning. The reinforcement learning framework can also model changes over time. The most work has been done in multi-arm bandits for recommendations.


In the case of collaborative filtering where everything is done based on a rating matrix, then a change in the product's features should first be reflected into the new ratings of your users and therefore to the final recommendation.

This is done in the same way a user changes its preferences in time. usually two approaches are followed, creating time aware models (timeSVD++) where the rating drifts is modeled in time or through a time decaying function on the ratings. A good resource on the first opnes can be found here

If you are using a classification approach i.e if a user will use a product, then this should not be an issue.


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.