Оглавление :
- Введение и рекомендации
- Оценка рекомендательных систем
- Рекомендации на основе содержания
- Совместная фильтрация на основе соседства
- Совместная фильтрация на основе пользователей и элементов
- Рекомендации KNN
- Факторизация матрицы
- Глубокое обучение - Введение
- Ограниченные машины Больцмана
- AutoRecs
- Amazon DSSTNE и Sage Maker
- Реальные вызовы и решения
Совместная фильтрация - хороший метод. Но если это так хорошо, почему мы ищем альтернативный подход?
- Он чувствителен к ШУМОВЫМ ДАННЫМ и РАЗРЕЗНЫМ ДАННЫМ.
- Хорошие результаты получаются только при соблюдении одного из следующих условий.
- Доступен большой набор данных
- Данные аккуратные и чистые
МОДЕЛЬНЫЕ МЕТОДЫ
Вместо поиска элементов или пользователей, похожих друг на друга, мы применяем методы машинного обучения и анализа данных в методах, основанных на моделях. Основные шаги:
- Обучение нашей модели с данными
- Прогнозирование с использованием модели
ФАКТОРИЗАЦИЯ МАТРИЦЫ
- В нем есть много подкатегорий техник.
- Жутко! Умеет самостоятельно находить более широкие характеристики пользователей / предметов (например, «Действие» или «Романтика»). Математика не знает, как называть вновь обнаруженные особенности, которые просто описываются матрицами.
ГЛАВНАЯ ИДЕЯ:
Описывайте пользователей и элементы как комбинации различных количеств друг друга.
Например, мы можем сказать, что Боб любит боевики, а также комедии. То же самое можно сказать как
Боб = 50% боевик + 20% комедия
Сопоставление фильмов для рекомендаций с этими атрибутами - хорошая идея для прогнозов
ОСНОВНОЙ АНАЛИЗ КОМПОНЕНТОВ (PCA) РЕЙТИНГОВ КИНО
PCA - это статистическая процедура, которая уменьшает размер нашей матрицы пользовательских элементов без потери какой-либо важной информации!
Он используется как,
- Инструмент уменьшения размерности (не могу сказать, что означают новые уменьшенные размеры)
- Инструмент извлечения признаков
Примечание. Часто размеры, которые они обнаруживают, соответствуют характеристикам, которые люди научились ассоциировать с предметами (например, насколько "боевик" фильм).
Независимо от того, что связано с фильмами, из-за которых люди оценивают их по-разному, PCA извлекает и находит эти "скрытые особенности".
Если R (исходная матрица) имеет некоторые пропущенные значения, мы можем восстановить R, заполнив пустые значения !!
СИГМА-МАТРИЦА
Это простая диагональная матрица, используемая только для масштабирования значений, которые мы получаем в правильном масштабе -
- Мы можем умножить эту сигма-матрицу на M или U, и все равно R будет просто произведением двух матриц.
- Восстановите R, чтобы получить оценки всех пользователей по всем элементам!
- Мы даже можем прогнозировать рейтинги с помощью скалярных произведений формулы восстановления, описанной выше.
РАЗЛОЖЕНИЕ СИНГУЛЯРНОЙ ЗНАЧЕНИЯ (SVD)
Способ одновременного эффективного вычисления M, Sigma, U-Transpose и получения всех трех факторов за один раз!
- Очень точные результаты
- Широко используется во время розыгрыша призов Netflix
Но ждать! Как поступить с пропущенными значениями непосредственно перед применением PCA к исходной матрице R?
- Вы можете заполнить пропущенные значения каким-нибудь средним значением… но есть способ лучше!
Предположим, у нас есть рейтинги для любой данной строки / столбца в M и U-транспонировании.
- Мы можем рассматривать это как проблему «минимизации прибыли».
- Найдите значения тех полных строк и столбцов, которые наилучшим образом минимизируют ошибки в известных рейтингах R
- Используйте стохастический градиентный спуск (только один способ сделать это)
- Apache Spark использует другую технику, которая называется ALS (чередование наименьших квадратов).
Примечание. Вы можете запутаться здесь, потому что мы говорим об изучении значений как матриц в M и U.
Фактически, мы прогнозируем рейтинги, а не вычисляем их напрямую, что и делает SVD. Мы не выполняем настоящих Рекомендаций по SVD, потому что SVD не может работать с отсутствующими данными. Следовательно, это алгоритм, вдохновленный SVD, а не сама SVD. Победителем приза Netflix стала разновидность SVD под названием SVD ++.
ПОДСКАЗКИ:
- Вы можете увидеть исходный код алгоритма SVD, используемого в surpiselib, в github. Но слишком сложно понять.
- Никогда не пишите свой собственный алгоритм. Слишком высоки шансы, что вы где-то напортачите. Используйте стороннюю библиотеку, которая была использована и проверена другими.
СВД в / с СВД ++
- Функция фактических потерь, используемая во время SGD
- В SVD ++ просто рейтинг элемента является признаком некоторого интереса к этому элементу. Независимо от того, какой был рейтинг!
- SVD ++ превзошел SVD
- Сработало действительно хорошо !!
- Это жутко, потому что мы не понимаем, как работают скрытые функции.
ДАННОЕ ИСПОЛЬЗОВАНИЕ SVD В КОНКУРСЕ NETFLIX И ЭТО УСПЕХ; МНОГО ИССЛЕДОВАНИЙ ПО СВД. НИЖЕ
ПЕРЕЧЕНЬ ЯВЛЯЮТСЯ НЕКОТОРЫМИ ИЗ РАЗРАБОТАННЫХ АЛГОРИТМОВ
Я. Матрицы факторизации
- Хорошо подходит для прогнозирования рейтингов / кликов в системе рекомендаций.
- Больше «общего назначения»
- Легко обрабатывает разреженные данные. В отличие от втягивания себя в такую проблему, как СВД
- Доступно в Amazon Sage
- Только уменьшение размера - РАБОТАЕТ ТОЛЬКО С КАТЕГОРИЧЕСКИМИ ДАННЫМИ!
II. TimeSVD ++
- Используется для прогнозирования следующего элемента в серии событий.
III. Факторизованные персонализированные цепи Маркова
- То же, что и выше. Используется для прогнозирования следующего элемента в серии событий.
IV. PLSA (многообещающе!)
- Извлекает скрытые функции из самого контента
- Используйте PLSA для "названий фильмов" и "описаний" и сопоставьте их с пользователями.
- Поскольку они основаны на содержании, сами по себе они плохо себя чувствуют. Добавьте сюда данные о поведении пользователя.
НАСТРОЙКА ГИПЕРПАРАМЕТРА (СВД)
Гиперпараметры - это параметры, выбранные инженером машинного обучения для получения эффективных прогнозов. Поиск оптимальных гиперпараметров называется настройкой гиперпараметров.
- Большая проблема в ML в целом
- Многие алгоритмы очень чувствительны к таким параметрам, как скорость обучения.
- Гиперпараметры различаются в зависимости от набора данных
В случае СВД гиперпараметры -
- Сколько скрытых факторов нужно извлечь?
- До скольких измерений уменьшить?
Примечание. Оба они зависят от характера имеющихся у нас данных.
Пример кода
Приведенный ниже код помогает нам понять, как можно настроить гиперпараметры в неожиданности с помощью пакета GridSearchCV.
Пакет GridSearchCV,
- Помогает в настройке гиперпараметров
- Определяет сетку различных параметров, для которых вы хотите попробовать разные значения (попробуйте все возможные комбинации)
- «param_grid» определяет, что тестировать.
- «меры» определяют, как тестировать
- ‘cv’ задает количество складок / cross_validation
SLIM - Разреженные линейные методы (2011)
ГЛАВНАЯ ИДЕЯ: «Разреженное агрегирование» других вещей, оцененных пользователем, умноженное на «разреженное агрегирование» весов (волшебство!)
- Отличные результаты!
- Превзошел все остальные рекомендации (рейтинг попаданий в рекомендациях TopN)
- Применимо не только к фильмам, но и к книгам, музыке, кредитным картам и многому другому!
- Поскольку пользователь оценил только некоторые элементы, а веса существуют только для этих элементов, можно рассчитать - «разреженное» агрегирование
- Распространить на всю матрицу рейтинга элементов пользователя с помощью формулы ниже
КАК РАССЧИТАН ВЕС?
- Сложный
- Настолько сложно, что многие не могут реализовать это в коде
- Подобен SVD, но требует более высоких математических концепций, таких как
- Матрица Фробениуса Норма
- Регуляризация нормы L1 - Если на вашем пути появится SLIM, взгляните еще раз - Многообещающий!