# Feature-based matrix factorization

**Feature-based matrix factorization** is an abstract matrix factorization model that uses features to describe the global bias and user/item factors.
The the model allows development of new model simply by feature defining. We can incorporate information such as temporal information, neighborhood information,
taxonomy information into feature-based matrix factorization to make the model *informative*.
If we have a solver for feature-based matrix factorization, we only need to design context-aware or informative collaborative filtering(or ranking) models by feature-defining,
without engineering efforts for writing codes for each new model.

## Contents

## Model Formalization

The feature-based matrix factorization model can be formalized as follows:

<math>y = \mu+\left(\sum_j \gamma_j b^g_j +\sum_j \alpha_j b^u_j + \sum_j \beta_j b^i_j\right) +\left(\sum_j \alpha_j p_j\right)^T\left( \sum_j \beta_j q_j\right)</math>

We call <math>\gamma </math> global feature, <math>\alpha </math> user feature and <math>\beta </math> item feature. Defining different kinds of features will result in different variants of models. We can add global bias effects to global feature, use user feature to describe user preference and use item feature to describe aspects about the item

## Example Information that can be Incorporated into the Model

- Neighborhood information( global feature )
- Global item temporal bias( global feature )
- Item taxonomy information( item feature )
- User temporal factor( user feature )
- User implicit/explicit feedback( user feature )

## Related Models

- Factorization Machine: feature-based matrix factorization can be viewed as a restricted case of factorization machine to distinguish different types of features, allowing us to overcome some shortcomings of FM(e.g: including neighborhood information, exact implementation of rank,svd++ ). We call the model feature-based matrix factorization instead of restricted FM because the idea descends more naturally from matrix factorization using features.

## Implementation

- SVDFeature is an efficient and scalable implementation of feature-based matrix factorization.

## References

- Tianqi Chen, Zhao Zheng, Qiuxia Lu and Yong Yu: Feature-based Matrix Factorization, http://arxiv.org/abs/1109.2271