File size: 5,370 Bytes
3cb5cce |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
---
license: apache-2.0
---
Here’s a draft for a model card that you can use for Hugging Face, detailing the purpose, training data, architecture, and intended use of your recommendation model:
---
# Model Card: Profile-Based Movie Recommendation Model
## Model Overview
This model is a **profile-based movie recommendation system** designed to recommend movies based on user demographics and genre preferences. It was trained on the [MovieLens 1M dataset](http://files.grouplens.org/datasets/movielens/ml-1m.zip) and uses demographic and genre preferences to create user profiles through clustering. By leveraging user profiles and movie embeddings, the model provides movie recommendations tailored to each user’s interests.
## Model Architecture
The model is built using **TensorFlow** and **Keras** and employs an **embedding-based architecture**:
1. **User Profiles and Clustering**: User demographics and genre preferences are clustered into a specified number of profiles using **KMeans** clustering. This results in profile IDs that capture user similarities based on age, occupation, gender, and preferred movie genres.
2. **Embedding Layers**:
- The **user profile IDs** are embedded in a lower-dimensional space using a trainable embedding layer.
- Similarly, **movie IDs** are embedded into a separate lower-dimensional space.
3. **Dot Product for Recommendation**: The model computes the dot product between the profile embedding and movie embedding, resulting in a similarity score. The higher the score, the more relevant the movie is predicted to be for the user profile.
## Training Dataset
The model was trained on the [MovieLens 1M dataset](http://files.grouplens.org/datasets/movielens/ml-1m.zip) by GroupLens. The dataset contains **1 million ratings** from **6,040 users** on **3,900 movies**.
- **Users**: Contains demographic information such as age, gender, and occupation.
- **Ratings**: Provides ratings from users for different movies.
- **Movies**: Includes movie titles and genres (e.g., Action, Comedy, Romance).
### Dataset Preparation
- **Preprocessing**:
- User demographic data was one-hot encoded to include age, occupation, and gender.
- User genre preferences were extracted by identifying each user's top-rated genres, with genres being split and exploded for individual assignment.
- **Clustering**: User profiles were clustered into 10 groups using KMeans clustering based on demographic and genre features.
- **Embedding Preparation**: Profile IDs and Movie IDs were prepared for embedding layers.
## Training Configuration
- **Optimizer**: Adam
- **Loss Function**: Mean Squared Error (MSE)
- **Metric**: Mean Absolute Error (MAE)
- **Epochs**: 10
- **Batch Size**: 256
- **Embedding Dimension**: 64
## Intended Use
This model is intended to provide **movie recommendations** based on user profile clusters. By embedding user profiles and movies into a shared space, it provides recommendations by finding the best matching movies for a particular user profile.
### Use Cases
- **Personalized Movie Recommendations**: For streaming platforms, this model can serve as the core recommendation engine for suggesting movies tailored to user preferences based on demographics and past high-rated genres.
- **User Segmentation**: The model clusters users based on demographic and genre preferences, which can also be used for analysis and targeted advertising.
### Limitations
- **Cold Start Problem**: The model may not perform optimally for new users without enough past ratings or for movies without sufficient interaction data.
- **Demographic Constraints**: Recommendations are influenced heavily by demographic data and may not fully capture nuanced user preferences.
- **Genre Limitation**: Genre preferences are based on past ratings, which may not always reflect the user’s evolving interests.
## How to Use
To use this model, you'll need:
1. **Profile ID**: Identify or calculate the user’s profile ID based on demographics and genre preferences.
2. **Movie ID**: Specify the movie IDs you want to score for a particular profile.
```python
from tensorflow import keras
import numpy as np
# Load the trained model
model = keras.models.load_model("profile_based_recommendation_model.keras")
# Example: Generate recommendations for a user with profile_id 3 for movies with IDs 10, 50, and 100
profile_id = np.array([3])
movie_ids = np.array([10, 50, 100])
# Predict scores
predictions = model.predict([profile_id, movie_ids])
# Display predicted scores for each movie
for movie_id, score in zip(movie_ids, predictions):
print(f"Movie ID: {movie_id}, Predicted Score: {score}")
```
## Dataset Citation
If you use this model or the dataset, please cite the MovieLens dataset as follows:
```
@article{harper2015movielens,
title={The MovieLens datasets: History and context},
author={Harper, F Maxwell and Konstan, Joseph A},
journal={ACM Transactions on Interactive Intelligent Systems (TIIS)},
volume={5},
number={4},
pages={1--19},
year={2015},
publisher={ACM New York, NY, USA}
}
```
## Acknowledgments
Thanks to **GroupLens Research** for providing the MovieLens dataset and the open-source tools that make it accessible for research purposes.
---
This model card can be customized further if you want to add more specific instructions or additional use cases. |