recommendation_system_of_posts
Проект ML-приложения для рекомендации постов в социальной сети
Задача
Сделать приложение, которое по api получает user_id, в ответ отправляет post_id пяти постов.
Цель
Пользователь лайкает хотя бы один из пяти рекомендованных постов (1 рекомендация состоит из 5 постов, требование - 52% рекомендаций получают хотя бы один лайк).
Исходные данные
Доступна следующая база данных:
user_data - таблица с пользователями и их данными;
post_text_df - таблица с постами (тема, текст);
feed_data - таблица с действиями пользователей (просмотр или лайк).
Краткое описание решения
- Формирование виртуального окружения (requirements.txt).
- Сначала работа в Jupyter Notebook (data_prepair_and_model_train.ipynb). Загрузка 5 млн строк действий пользователей (просмотр или лайк поста).
- Очищение таблицы от дублирующих строчек, сортировка по дате и времени, разделение на train и test.
- Векторизация постов (заголовок + 1 абзац) через tfidf.
- One-hot encoding для пользовательских фичей.
- Объединение таблиц в train и test.
- Обучение градиентного бустинга (CatBoost).
- Написание метода под метрику.
- Сохранение модели в файл.
- Сохранение полученных фичей на сервер для быстрого доступа.
- Начало разработки приложения (app_main_file.py) - проверка подключения к БД через psycopg2 и sqlalchemy.
- Проверка загрузки модели.
- Написание основного и дополнительных эндпоинтов.
- Написание приложения для FastAPI.
- Запуск приложения через uvicorn, проверка работы через Postman.
- Тест на новых данных - получено требуемое качество (0.608) за требуемое время.
Описание
ML-приложение для рекомендации постов в социальной сети
Языки
Jupyter Notebook
- Python