SVD++ refers to amatrix factorization model which makes
use of implicit feedback information.In general, implicit feedback can refer to any kinds ofusers'
history information that can help indicate users' preference.
Model Formalization
The SVD++ model is formally described as following equation:
where
is the set of implicit information( the set of items user u rated
).
General Formalization for User Feedback Information
A more general form of utilizing implicit/explicit information as user factor can be described in following equation
Here
is the set of user feedback information( e.g: the web pages the
user clicked, the music on users' favorite list, the movies user watched, any kinds of information that can be used to describe the user).
is afeature weight associateswith the user feedback information. With the most two common choices: (1)
for implicit feedback, (2)
for explicit feedback.
Learning
SVD++ can be trained usingALS.
It is slow to train a SVD++-style model usingstochastic
gradient descent due to the size of user feedback information, however, an efficient SGD training algorithm can be used.[1] describes
efficient training with user feedback information in section 4
Literature
Yehuda Koren:
Factorization meets the neighborhood: a multifaceted collaborative filtering model, KDD 2008,
http://portal.acm.org/citation.cfm?id=1401890.1401944
Implementations
The GraphLab Collaborative Filtering Library has implemented SVD++ for multicore:http://graphlab.org/pmf.html
SVDFeature is a toolkit designed for feature-based matrix factorization, can be used to
implement SVD++ and its extensions.
LibFM can also be used
to implement SVD++
wooflix is a (not very fast)Python
implementation of SVD++