- requirements.txt - библиотеки Python, необходимые для работы проекта, а также их версии
- music_covers.ipynb - рабочая тетрадь с исследованиями, визуализациями и текстовыми описаниями
- research_class.py - файл, содержащий класс для проведения исследования
- assets - директория с сохранёнными артефактами
- run_mlflow_server.sh - скрипт для запуска mlflow server
Разработка ML-модели для сопоставления текстов музыкальных произведений и для поиска каверов (вариации обработки оригинала с элементами новой аранжировки) по их текстам
- Необходимо разработать ML-продукт, который:
- Находит все кавер-треки и/или исходники к заданному треку в датасете
- Перечисляет все кавер-треки и/или оригиналы к заданному, указывает положение данного трека в цепочке каверов
- Предобработка данных
- Разделение на выборки
- Применение техник кодирования с учётом моделей, которые будут использованы
- Масштабирование данных (при необходимости)
- Обучение трёх моделей на тренировочной выборке (подбор гиперпараметров)
- Выбор оптимальной модели
- Проверка качества лучшей модели на тестовой выборке, выявление важности признаков
- Отчёт
- PostgreSQL,
- MLflow,
- Python: pandas, numpy, matplotlib, seaborn, sentence_transformers, torch, sklearn, catboost
- в решении поставленной задачи основными признаками приняты текст и дата появления трека
- целевой метрикой выбрана roc-auc, т.к. она устойчива к дисбалансу классов, который присущ предоставленным данным
- при кодировании текстов использованы два трансформера: SentenceTransformer, Bert transformer
- для обучения использовались признаки: дата выхода трека, эмбеддинги
- целевой признак - метка оригинал/кавер
- удалённые признаки:
- ID треков и текстов (чтобы модель была более универсальной)
- текст - удалён, т.к. есть его эмбеддинги
- язык, продолжительность, жанр - удалены, т.к. сами по себе данные признаки не информативны для решения поставленной задачи
- при обучении выбирали лучшую из моделей: XGBoost, CatBoost, LogisticRegression
- наилучший результат по выбранной метрике показала модель: CatBoost на эмбеддингах, полученных через Bert Transformer
- не реализованные идеи:
- пробовали использовать библиотеку MusicMetaLinker для обогащения предоставленных данных, но для полноценного использования не хватило отведённого времени
- рассматривали алгоритм Doc2Vec, для полноценного изучения не хватило времени
- кластеризация данных библиотекой DBScan, для полноценного изучения не хватило времени