У попередній частині ми розглянули механіку рекомендаційних систем на основі пам’яті і створили рекомендаційну систему для користувача колаборативної фільтрації. Сьогодні ми вивчимо рекомендаційну систему Python застосуємо “вбудовані” рекомендації з популярних Python-модулів, оцінимо їх ефективність та спробуємо деякі методи для поступового покращення алгоритмів рекомендаційних систем прогнозування сингулярного розкладання, відомого як призер стрімінгової компанії Netflix. Тому ми докладно розповімо про рекомендаційну систему Netflix. В RBC Group ми відкриті для обміну досвідом у розробці так званих мета-гібридних рекомендаційних двигунів для вирішення реальних бізнес-проблем.
Магія рекомендаційної мережі на основі пам’яті полягає в декількох кроках:
Це говорить про те, що підвищення точності рекомендаційної системи колаборативної фільтрації включає:
Ці покращення перетворять вашу рекомендаційну систему на основі “чистої” пам’яті на гібридну, що означає неминучу втрату простоти моделі та потреби у зовнішніх джерелах даних (у зв’язку з матрицею рейтингу), тобто даних з профілів користувачів, онлайн-сесій та/або текстовий та візуальний зміст товарів.
Тут, у RBC Group, ми розробили та успішно прийняли дещо своєрідну техніку, щоб зберегти баланс між складністю рекомендаційних систем, інтерпретованістю та ресурсоефективністю, позначаючи наше відкриття як мета-гібридну рекомендаційну систему.
Цей метод обмежений (1) попередньою кластеризацією товарів на основі їх зазначених характеристик (метадані) і (2) подальшою обробкою (завершенням) матриць кластерно-атомізованих оцінок за допомогою рекомендаційної системи колаборативної фільтрації.
У цьому сценарії межі кожного користувача ефективно коригуються за рахунок побудови часткових векторів ознак на основі оцінок елементів одного кластера. Такі часткові вектори мають меншу дисперсію, оскільки користувачі, як очікується, оцінюватимуть аналогічні товари (в рамках кластера) однаковим чином. Таким чином, часткові вектори, як правило, краще відображають фактичні переваги/антипатію користувачів.
Крім того, запропонована методика істотно знижує споживання пам’яті при встановленні моделі та складанні прогнозів. Ось чому ми описуємо таку мета-гібридну рекомендаційну систему як ефективну з погляду пам’яті.
Як і раніше в цій серії публікацій, ми продовжимо демонструвати всі ці можливості, використовуючи набір даних “ml-laest-small” із 5-зірковими рейтингами та довільними тегами активності від “MovieLens”. Ми будемо використовувати всі ці дані для початкової кластеризації набору даних, тобто фільмів у ньому.
По-перше, давайте перетворимо жанрову інформацію на фіктивні змінні:
Як один із провісників, ми також витягли рік випуску фільму та перетворили його за допомогою методу часткового кодування.
Давайте витягнемо і створимо деякі корисні провісники з тегів. Після комбінування списку тегів із текстом заголовка ми можемо використовувати цю комбінацію для побудови векторів TD-IDF:
Всі основні етапи попередньої обробки, включаючи зниження розмірності, упаковані в конвеєр даних:
Перед застосуванням простого методу кластеризації k-середніх ми визначили оптимальну кількість кластерів:
Давайте надамо довільні мітки кластерам і подивимося на розподіл фільмів:
Схоже, ми готові провести наш головний експеримент. Ми збираємося застосовувати алгоритм сингулярного розкладання (від Python-модуля surprise) до (1) вихідних даних, а потім до (2) кожного сегменту кластеризованих даних у циклі. Щоразу ми будемо вимірювати розподіл точності та згадувати для порівняння результатів:
Очевидно деяку перевагу мета-гібридної рекомендаційної системи. Крім того, такий підхід також ефективний з точки зору пам’яті, як було зазначено раніше:
Для кращого розуміння того, що відбувається всередині механізму рекомендаційної системи в цьому конкретному прикладі, вам слід переглянути весь код.
Висновки
Таким чином, наш головний посил досить простий, але важливий: коли ви починаєте думати про (колаборативну фільтрацію) рекомендаційний механізм як алгоритм, який оцінює взаємодію користувача А з невідомим товаром Х (рейтинг товару) на основі подібності користувача А з іншими користувачами, які вже мали досвід взаємодії з товаром Х. Ви відразу зрозумієте, що таке колаборативна фільтрація та наскільки точність цієї оцінки має залежати від точності виміру подібності між користувачами. Одним із способів підвищення точності вимірювання такої подібності (не укладається в рамки суто математичних методів) є обмеження набору користувачів, котрих ви збираєтеся порівнювати з якоюсь високорівневою підмножиною (метакластером), що має загальні характеристики. Те саме можна сказати, якщо ви віддаєте перевагу (мета-) кластер ваш набір товарів, а також запустити ваш рекомендаційний механізм ітеративно. Такий простий підхід може значно підвищити загальну ефективність будь-якого вбудованого рекомендаційного алгоритму.