Лучшие вопросы
Таймлайн
Чат
Перспективы

Slope One

Из Википедии, свободной энциклопедии

Remove ads

Slope One — семейство алгоритмов для коллаборативной фильтрации (используемой в рекомендательных системах) для анализа различных мнений и пожеланий пользователей и выработки персональных рекомендаций.

Существует как минимум 2 класса коллаборативной фильтрации:

  • фильтрация по схожести пользователей (англ. user-based filtration), базирующаяся на измерении подобия пользователей;
  • фильтрация по схожести предметов (англ. item-based filtration), сравнивающая оценки, данные различными пользователями.

Slope One был представлен в статье Slope One Predictors for Online Rating-Based Collaborative Filtering Даниелем Лемайром (англ. Daniel Lemire) и Анной Маклахлан (англ. Anna Maclachlan). Утверждается, что это один из самых простых способов коллаборативной фильтрации по схожести предметов на основании оценок пользователей. Эта простота значительно облегчает внедрение данных алгоритмов, а их точность сравнима с точностью более сложных и ресурсоёмких алгоритмов[1]. Slope One также часто дополняет другие алгоритмы.[2][3].

Remove ads

Фильтрация по схожести предметов и переобучение

Суммиров вкратце
Перспектива

Если доступны оценки предмета - к примеру, пользователям дана возможность проголосовать за предмет (например, выставить оценку от 1 до 5), - то коллаборативная фильтрация пытается предсказать оценку, которую даст пользователь новому предмету на основании его предыдущих оценок и базы данных оценок других пользователей.

Пример: Можем ли мы предсказать оценку конкретного пользователя на новый альбом Селин Дион, если мы знаем, что он оценил The Beatles на 5 баллов?

В этом случае коллаборативная фильтрация по схожести предметов[4][5] предсказывает оценку предмета на основе оценок другого предмета, используя чаще всего регрессионный анализ (). Следовательно, если имеется 1000 предметов, то может быть до 1000000 линейных регрессий для изучения и до 2000000 регрессоров. Такой подход может быть неэффективным из-за переобучения[1], поэтому необходимо выбирать пары предметов, для которых известны оценки нескольких пользователей.

Лучшей альтернативой может быть использование упрощённого предиктора (например, ): экспериментально показано, что использование такого простого предиктора (называемого Slope One) иногда превосходит[1] регрессионный анализ, при этом имея в два раза меньше регрессоров. К тому же у этого способа низкие требования к памяти и большая скорость.

Коллаборативная фильтрация по схожести предметов — это только один вид коллаборативной фильтрации. В случае использования коллаборативной фильтрации по схожести пользователей, анализируются отношения между пользователями, выясняется подобие их интересов. Но фильтрация по схожести предметов менее ресурсоёмка и имеет бо́льшую эффективность при наличии большого числа пользователей.

Remove ads

Коллаборативная фильтрация по предметам на основании статистики покупок

Суммиров вкратце
Перспектива

Далеко не всегда у пользователей есть возможность выставлять оценки предметам. То есть для коллаборативной фильтрации могут быть доступны всего лишь двоичные данные (покупал пользователь предмет или нет). В таких случаях Slope One и другие алгоритмы, зависящие от оценок предметов, неэффективны.

Примером алгоритма коллаборативной фильтрации по предметам, работающего с двоичными данными, является запатентованный[6] алгоритм Item-to-Item использующийся в онлайн-магазине Amazon[7]. Этот алгоритм рассчитывает подобие предметов как косинус между векторами покупок в матрице пользователей и предметов[8]:

Этот алгоритм, возможно, даже проще чем Slope One. Рассмотрим его работу на примере:

Подробнее Покупатель, Предмет 1 ...

В этом случае косинус между «Предмет 1» и «Предмет 2» рассчитывается так:

,

между «Предмет 1» и «Предмет 3»:

,

и между «Предмет 2» и «Предмет 3»:

.

Таким образом, пользователь, находящийся на странице описания «Предмета 1», получит «Предмет 3» в качестве рекомендации; на странице «Предмета 2» — «Предмет 3» и на странице «Предмета 3» — «Предмет 1» (и затем «Предмет 2»). В данном алгоритме используется один коэффициент на каждую пару предметов (косинус), на основании которого и создаются рекомендации. То есть для n предметов потребуется рассчитать и сохранить n(n-1)/2 косинусов.

Remove ads

Коллаборативная фильтрация Slope One для предметов с оценками

Суммиров вкратце
Перспектива

Для существенного уменьшения эффекта переобучения, увеличения производительности и облегчения внедрения было предложено семейство алгоритмов Slope One. Основное отличие от регрессионного анализа отношения рейтингов двух предметов () состоит в использовании упрощённой формы регрессии всего с одним предиктором (). Таким образом, предиктор - это просто средняя разница между оценками обоих предметов. Авторы продемонстрировали, что такой подход в некоторых случаях более точный, чем линейная регрессия[1] и требует в 2 раза меньше памяти.

Thumb

Пример:

  1. Джо выставил оценку 1 для Селин Дион и 1.5 для Линдси Лохан.
  2. Джил оценила Селин Дион на 2 балла.
  3. Какую оценку выставит Джил для Линдсм Лохан?
  4. Ответ алгоритма Slope One: 2.5 (1.5-1+2=2.5).

Рассмотрим более сложный пример:

Подробнее Посетитель, Предмет 1 ...

Согласно этой таблице, средняя разница в оценках предмета 1 и 2 равна (2+(-1))/2=0.5. Таким образом, в среднем предмет 1 оценивается на 0.5 балла выше, чем предмет 2. Аналогично и для предметов 3 и 1: средняя разница в оценках 3.

Если сейчас мы попробуем предсказать оценку Люси для предмета 1, используя её оценку для предмета 2, мы получим 2+0.5 = 2.5. Аналогично предсказываем её оценку для предмета 1, используя оценку, данную предмету 3: 5+3=8. Поскольку у нас есть несколько предполагаемых оценок (Люси голосовала 2 раза), итоговую оценку мы получим как взвешенное среднее. Для весовых коэффициентов будем использовать количество пользователей, давших оценку предмету:

Чтобы применить алгоритм Slope One для заданных n предметов, надо рассчитать и сохранить среднюю разницу и количество голосов для каждой из n² пар предметов.

Remove ads

Оценка сложности алгоритма

Рекомендательные системы, использующие Slope One

Программное обеспечение с открытым исходным кодом, использующее Slope One

Python:

Java:

PHP:

Erlang:

Haskell:

Visual Basic:

  • Таблица (недоступная ссылка) Microsoft Excel реализующая Slope One при помощи VBA (требуется включить макросы).

C#:

T-SQL:

Remove ads

Примечания

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads