This project implements a community detection and user recommendation system for a dating app using Graph Neural Networks (GNNs).
The system performs the following steps:
-
Community Detection:
- Identifies communities of users based on shared interests, such as communication, friendship, relationships, and sex.
-
User Ranking:
- For each user, ranks other users within their respective communities to identify the top N most relevant matches.
-
Graph Representation:
- Nodes: Represent individual users.
- Edges: Created between users based on:
- Cosine similarity of their profile embeddings (text descriptions).
- Mutual interests such as age, sex, location, etc.
-
Profile Embedding:
- Users' profile descriptions are embedded into a vector space. Cosine similarity is used to calculate the distance between users' embeddings.
-
Interest Matching:
- Additional features (age, sex, location, etc.) are used to enhance the edge creation between users with similar interests.
-
Graph Neural Networks:
- GNNs are applied to detect communities within the user graph and rank the most relevant users for recommendations.
To install and run this project, clone the repository and install the required dependencies:
git clone https://github.com/Skripkon/DatingGNN
cd DatingGNN
pip install -r requirements.txt- Install the necessary libraries for development:
pip install -r requirements_dev.txt- Before pushing any changes, format your code using
autopep8:
autopep8 --in-place $(git ls-files '*.py' '*.ipynb')This will automatically apply PEP 8 style formatting to all Python (.py) and Jupyter Notebook (.ipynb) files.
@article{article,
author = {Kim, Albert and Escobedo-Land, Adriana},
year = {2015},
month = {07},
pages = {},
title = {OkCupid Data for Introductory Statistics and Data Science Courses},
volume = {23},
journal = {Journal of Statistics Education},
doi = {10.1080/10691898.2015.11889737}
}