MyMediaLite
3.08
|
Shrunk Pearson correlation for rating data. More...
Public Member Functions | |
void | AddEntity (int entity_id) |
Add an entity to the ICorrelationMatrix by growing it to the requested size. | |
float | ComputeCorrelation (IRatings ratings, EntityType entity_type, int i, int j) |
Computes the correlation of two rating vectors. | |
float | ComputeCorrelation (IRatings ratings, EntityType entity_type, IList< Tuple< int, float >> entity_ratings, int j) |
Compute correlation between two entities for given ratings. | |
void | ComputeCorrelations (IRatings ratings, EntityType entity_type) |
Compute the correlations for a given entity type from a rating dataset. | |
override IMatrix< T > | CreateMatrix (int num_rows, int num_columns) |
Create a matrix with a given number of rows and columns. | |
Pearson (int num_entities, float shrinkage) | |
Constructor. Create a Pearson correlation matrix. | |
override void | Resize (int size) |
Resize to the given size. | |
void | Resize (int num_rows, int num_cols) |
Grows or shrinks the matrix to the requested size, if necessary. | |
SparseMatrix (int num_rows, int num_cols) | |
Create a sparse matrix with a given number of rows. | |
SymmetricSparseMatrix (int dimension) | |
Create a symmetric sparse matrix with a given dimension. | |
virtual IMatrix< T > | Transpose () |
Get the transpose of the matrix, i.e. a matrix where rows and columns are interchanged. | |
void | Write (StreamWriter writer) |
Write out the correlations to a StreamWriter. | |
Protected Attributes | |
internal List< List< int > > | index_list = new List<List<int>>() |
List of lists that stores the column indices of the entries. | |
internal List< List< T > > | value_list = new List<List<T>>() |
List of lists that stores the values of the entries. | |
Properties | |
override bool | IsSymmetric [get] |
returns true if the matrix is symmetric, which is generally the case for similarity matrices | |
override IList< Tuple< int, int > > | NonEmptyEntryIDs [get] |
The row and column IDs of non-empty entries in the matrix. | |
int | NumberOfColumns [get, set] |
The number of columns of the matrix. | |
override int | NumberOfNonEmptyEntries [get] |
The number of non-empty entries in the matrix. | |
int | NumberOfRows [get] |
The number of rows of the matrix. | |
int | NumEntities [get, set] |
Number of entities the correlation is defined over. | |
float | Shrinkage [get, set] |
shrinkage parameter, if set to 0 we have the standard Pearson correlation without shrinkage | |
override T | this[int x, int y] [get, set] |
Access the elements of the sparse matrix. | |
Dictionary< int, T > | this[int x] [get] |
Get a row of the matrix. |
Shrunk Pearson correlation for rating data.
The correlation values are shrunk towards zero, depending on the number of ratings the estimate is based on. Otherwise, we would give too much weight to similarities estimated from just a few examples.
http://en.wikipedia.org/wiki/Pearson_correlation
We apply shrinkage as in formula (5.16) of chapter 5 of the Recommender Systems Handbook. Note that the shrinkage formula has changed betweem the two publications. It is now based on the assumption that the true correlations are normally distributed; the shrunk estimate is the posterior mean of the empirical estimate.
Literature:
Pearson | ( | int | num_entities, |
float | shrinkage | ||
) | [inline] |
Constructor. Create a Pearson correlation matrix.
num_entities | the number of entities |
shrinkage | shrinkage parameter |
void AddEntity | ( | int | entity_id | ) | [inline, inherited] |
Add an entity to the ICorrelationMatrix by growing it to the requested size.
Note that you still have to correctly compute and set the entity's correlation values
entity_id | the numerical ID of the entity |
Implements ICorrelationMatrix.
float ComputeCorrelation | ( | IRatings | ratings, |
EntityType | entity_type, | ||
int | i, | ||
int | j | ||
) | [inline] |
Computes the correlation of two rating vectors.
ratings | the rating data |
entity_type | the entity type, either USER or ITEM |
i | the ID of the first entity |
j | the ID of the second entity |
Implements IRatingCorrelationMatrix.
float ComputeCorrelation | ( | IRatings | ratings, |
EntityType | entity_type, | ||
IList< Tuple< int, float >> | entity_ratings, | ||
int | j | ||
) | [inline] |
Compute correlation between two entities for given ratings.
ratings | the rating data |
entity_type | the entity type, either USER or ITEM |
entity_ratings | ratings identifying the first entity |
j | the ID of second entity |
Implements IRatingCorrelationMatrix.
void ComputeCorrelations | ( | IRatings | ratings, |
EntityType | entity_type | ||
) | [inline] |
Compute the correlations for a given entity type from a rating dataset.
ratings | the rating data |
entity_type | the EntityType - either USER or ITEM |
Implements IRatingCorrelationMatrix.
override IMatrix<T> CreateMatrix | ( | int | num_rows, |
int | num_columns | ||
) | [inline, virtual, inherited] |
Create a matrix with a given number of rows and columns.
num_rows | the number of rows |
num_columns | the number of columns |
Reimplemented from SparseMatrix< T >.
Reimplemented in SkewSymmetricSparseMatrix.
override void Resize | ( | int | size | ) | [inline, inherited] |
void Resize | ( | int | num_rows, |
int | num_cols | ||
) | [inline, inherited] |
Grows or shrinks the matrix to the requested size, if necessary.
The new entries are filled with zeros. Obsolete entries are removed.
num_rows | the number of rows |
num_cols | the number of columns |
Implements IMatrix< T >.
SparseMatrix | ( | int | num_rows, |
int | num_cols | ||
) | [inline, inherited] |
Create a sparse matrix with a given number of rows.
num_rows | the number of rows |
num_cols | the number of columns |
SymmetricSparseMatrix | ( | int | dimension | ) | [inline, inherited] |
Create a symmetric sparse matrix with a given dimension.
dimension | the dimension (number of rows/columns) |
virtual IMatrix<T> Transpose | ( | ) | [inline, virtual, inherited] |
Get the transpose of the matrix, i.e. a matrix where rows and columns are interchanged.
Implements IMatrix< T >.
void Write | ( | StreamWriter | writer | ) | [inline, inherited] |
Write out the correlations to a StreamWriter.
writer | A StreamWriter |
Implements ICorrelationMatrix.
internal List<List<int> > index_list = new List<List<int>>() [protected, inherited] |
List of lists that stores the column indices of the entries.
internal List<List<T> > value_list = new List<List<T>>() [protected, inherited] |
List of lists that stores the values of the entries.
override IList<Tuple<int, int> > NonEmptyEntryIDs [get, inherited] |
The row and column IDs of non-empty entries in the matrix.
The row and column IDs of non-empty entries in the matrix
Reimplemented from SparseMatrix< T >.
int NumberOfColumns [get, set, inherited] |
override int NumberOfNonEmptyEntries [get, inherited] |
The number of non-empty entries in the matrix.
The number of non-empty entries in the matrix
Reimplemented from SparseMatrix< T >.
int NumberOfRows [get, inherited] |
int NumEntities [get, set, inherited] |
Number of entities the correlation is defined over.
Implements ICorrelationMatrix.
float Shrinkage [get, set] |
shrinkage parameter, if set to 0 we have the standard Pearson correlation without shrinkage
override T this[int x, int y] [get, set, inherited] |
Access the elements of the sparse matrix.
x | the row ID |
y | the column ID |
Reimplemented from SparseMatrix< T >.
Reimplemented in SkewSymmetricSparseMatrix.
Dictionary<int, T> this[int x] [get, inherited] |
Get a row of the matrix.
x | the row ID |