[Dataset] MovieLens
- Dominant language
- Python
- Stars
- 14.3k
- Forks
- 3.1k
- PR merge metrics
- No merged PRs in 30d
Description
## 🚀 Feature
MovieLens is a heterogeneous rating graph, assembled by GroupLens Research from the https://movielens.org/. This dataset provides user ratings on movies with side information of users and movies. `users` and `movies` are modeled by nodes and `rates` are ground truth labels for edges between `users` and `movies`. The task on movielens is usually edge(relation) classification. There are two prevalent (sub-)datasets, movielens-100k and movielens-1m, used by four examples in dgl, IGMC, GCMC, TAHIN and PinSAGE. A brief summary of these two datasets is as follows (statistics from IGMC paper):
| Dataset | Users | Items | Ratings | Density | Rating types |
| :---: | :---: | :---: | :---: | :---: | :---: |
| ML-100K | 943 | 1,682 | 100,000 | 0.0630 |1, 2, 3, 4, 5|
| ML-1M | 6,040 | 3,706 | 1,000,209 | 0.0447 |1, 2, 3, 4, 5|
The specific usage of movielens in IGMC, GCMC, TAHIN, PinSAGE and implementations of PyG are slightly different. A simple comparison is as follows:
(Assume that the default mode is to construct initial node features with side information, and the only relation in the dataset is user-movie)
IGMC: Side information is discarded. Initial node features are constructed by a local one-hot encoding. The one-hot encoding is used to differentiate users and movies, and reflect distance between neighbors with the target user-movie pair.
GCMC: default
TAHIN: Side information is used to construct heterogenous nodes. For example, relations provided by TAHIN involve user-age, user-occupation, movie-genre, etc, where age, occupation and genre are side information of users and movies.
PinSAGE: default
PyG: default
There are some slight differences among examples above. These differences mainly consist in 1) how to process/embed text features, such as movie titles, user occupations, etc. 2) using which dataset.
1) For example, GCMC utilizes Glove embeddings, PinSAGE suggest using FastText embeddings, PyG uses SentenceTransformer API to load pre-trained Transformer from HuggingFace and embed texts with the selected Transformer.
2) For example, IGMC supports ml-100k, PinSAGE supports ml-1m, PyG supports ml-latest-small. Note that the official website of movielens dataset [grouplens](https://grouplens.org/datasets/movielens/) suggest people should **NOT** use ml-latest-small for research purpose since it would change over time, though it hasn't been updated for about 5 years. Since specific data structure of movielens datasets are quite different, pre-processing implementations are not uniform.
I'd like to contribute to DGL with a unified interface for movielens dataset.
cc @mufeili
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.