Постановка задачі
Об’єктом дослідження є процес побудови персоналізованих рекомендацій музичного контенту на основі багатовимірного набору ознак з використанням Spotify API. Метою роботи є розробка та реалізація архітектури рекомендаційної системи, що базується на принципах «воронки» фільтрації: від початкової генерації кандидатів до етапу важкого ранжування.
Підходи до рекомендацій
- Content-based (CB) – це метод пошуку інформації, який використовує характеристики елементів для вибору та повернення елементів, релевантних запиту користувача. Цей метод часто враховує характеристики інших елементів, якими користувач висловлює інтерес. Однак термін «на основі контенту» є дещо неправильним. Деякі алгоритми рекомендацій на основі контенту зіставляють елементи відповідно до описових характеристик (таких як метадані), доданих до елементів, а не до фактичного вмісту елемента (що ми і будемо використовувати в роботі). З мінусів методу є можливість опинитись в бульбашці-фільтрації, коли система рекомендує лише схожий контент в рамках одного кластеру (жанру).
- Collaborative Filtering (CF) – це метод пошуку інформації, який рекомендує елементи користувачам на основі того, як інші користувачі зі схожими вподобаннями та поведінкою взаємодіяли з цим елементом. Іншими словами, алгоритми колаборативної фільтрації групують користувачів на основі поведінки та використовують загальні характеристики групи для рекомендації елементів цільовому користувачеві. Системи колаборативної рекомендації працюють за принципом, що схожі користувачі (за поведінкою) мають схожі інтереси та смаки. Найефективніший при великій базі користувачів, при цьому не підходить для малих проектів. (Не підходить для нашого проекту)
- Hybrid — комбінація CB + CF через усереднення. (Можлива реалізація, але з більшим коефіцієнтом на CB)
- Session / sequence models — це content-based модель, що поділяється на два типи: рекомендації на основі сеансу та рекомендація з урахуванням сеансу.
- Рекомендації на основі сеансу: У цьому сценарії до взаємодій або сеансів не прив'язані ідентифікатори користувачів. Це означає, що персоналізація рекомендацій відповідно до довгострокових уподобань неможлива (що для нас не підходить, адже ми хочемо враховувати смак користувача.
- Рекомендація з урахуванням сеансу: У цьому випадку до взаємодій або сеансів прив’язані ідентифікатори користувачів, що дозволяє враховувати довгострокові уподобання під час рекомендацій.
Послідовність підбору рекомендацій
Послідовність базується на принципах воронки продаж:
- Побудова векторного простору (Embedding Generation): Перш ніж переходити до роботи з алгоритмами, ми маємо перетворити сирі дані про пісні та дії користувача у математичні об'єкти (embeddings), це робиться для уніфікація представлень (для оперування різного роду даними, наприклад числа і категорії) і видобутку додаткових залежностей між початковими ознаками. Саме цей етап забезпечує передбачувану роботу моделі, адже таким чином будується спільний латентний простір для наступних етапів.
- Генерація кандидатів – це процес генерації початкових кандидатів з усього пулу. Скажімо, на YouTube мільярди відео, вони використовуватимуть цілий комплекс генераторів кандидатів, щоб відсіяти їх до кількох тисяч, можливо, десяти тисяч.
- Фільтрація – це процес, коли застосовується певна логіка для фільтрації поганих кандидатів за допомогою правил. Це може бути мовний фільтр, фільтр віку (наприклад, контент занадто старий). Деякі базові перевірки стану та якості. Решта кандидатів: зазвичай кілька тисяч.
- Легке ранжування – це також називається попереднім ранжуванням. Легка модель (або кілька) швидко оцінить решту кандидатів. Ці моделі зазвичай навчаються за допомогою методів дистиляції знань. Рештою кандидатів на цей момент буде кілька сотень.
- Важке ранжування – це “основна” прогностична модель. У деяких системах є лише одна важка модель, в інших системах є багато важких моделей, залежно від програми. Вони, по суті, генерують остаточних кандидатів, яких налічується десятки.
- Перерахунок кандидатів – іноді потрібно перерахувати кандидатів, наприклад, щоб запобігти появі занадто великої кількості публікацій від одного автора поруч.
Побудова векторного простору