С мая я прохожу сертификационный курс по Big Data. Он организован по подразделениям, и сейчас я нахожусь в подразделении рекомендательных систем, продиктованное Денисом Парра.

Я начинаю эту серию публикаций, пытаясь обобщить то, что я узнал, и поделиться своим видением этого.

В этом посте мы поговорим о:

  • Почему нас интересуют рекомендательные системы
  • Как сортировать и ранжировать предметы
  • Классификация систем рекомендаций
  • Краткие скобки: как измерить ошибку прогноза

Без лишних слов, приступим.

Почему нас интересуют рекомендательные системы

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

«Рекомендательные системы призваны помочь пользователю или группе пользователей
выбрать элементы из переполненного элемента или информационного пространства. ”

(Макни и др., 2006 г.)

Теперь мы более подробно рассмотрим один из основных аспектов рекомендательных систем: рейтинги и способы их сортировки.

Как сортировать и ранжировать предметы

Предположим, у нас есть приложение с пользователями, которые оценивают товары. Представьте себе такой сайт, как Netflix или Amazon. Понятно, что нам нужно сравнить все эти элементы, чтобы рекомендовать один. Как мы делаем это? Нам нужна какая-то оценка.

Эван Миллер предложил в своем блоге три возможных решения, как выставлять баллы на основе рейтингов предметов. Два неправильных подхода и одно правильное решение:

  1. Оценка = (Положительные оценки) - (Отрицательные оценки)

Почему это неправильно? Потому что этот алгоритм не учитывает общую сумму оценок. Это не нормализовано. Вот пример из сообщения Эвана Миллера:

«Предположим, у одного товара 600 положительных оценок и 400 отрицательных оценок: 60% положительных. Предположим, что элемент 2 имеет 5 500 положительных оценок и 4 500 отрицательных оценок: 55% положительных. Этот алгоритм ставит элемент два (оценка = 1000, но только 55% положительных результатов) выше элемента 1 (оценка = 200 и 60% положительных результатов) ».

2. Оценка = Средняя оценка = (Положительные оценки) / (Всего оценок)

Почему это неправильно? Это плохо работает, когда у нас небольшое количество наблюдений. Миллер дает нам наглядный пример:

«Средняя оценка работает нормально, если у вас всегда много оценок, но предположим, что элемент 1 имеет 2 положительных и 0 отрицательных оценок. Предположим, что элемент 2 имеет 100 положительных оценок и 1 отрицательную оценку. Этот алгоритм помещает элемент два (тонны положительных оценок) ниже элемента 1 (очень мало положительных оценок) ».

3. Оценка = нижняя граница доверительного интервала оценки Вильсона для параметра Бернулли

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

По словам Миллера:

«Нам необходимо сбалансировать долю положительных оценок с неопределенностью небольшого количества наблюдений. К счастью, математика для этого была разработана в 1927 году Эдвином Б. Уилсоном. Мы хотим спросить: Учитывая мои оценки, существует 95% -ная вероятность того, что «реальная» доля положительных оценок равна по крайней мере какой? Уилсон дает оценку отвечать. Принимая во внимание только положительные и отрицательные оценки (т. Е. Не пятизвездочную шкалу), нижняя граница доли положительных оценок определяется следующим образом:

«(Используйте минус там, где указано« плюс / минус », чтобы вычислить нижнюю границу.) Здесь - наблюдаемая доля положительных оценок, z α / 2 - это (1-α / 2) квантиль стандартного нормального распределения, а n - общее количество оценок ».

После этого анализа того, как сравнивать элементы, мы можем глубже изучить различные существующие рекомендательные системы.

Классификация систем рекомендаций

Прежде чем перейти к более конкретным вопросам, нам нужно понять, какие классификации может иметь RecSys.

Учитывая использованные данные:

  1. На основе правил (дерево решений)
  2. На основе содержания
  3. Совместная фильтрация

Учитывая модель:

  1. На основе памяти (KNN) (модель не обучена, но плохо масштабируется)
  2. На основе модели (SVC, логистическая регрессия) (обучение модели дорого, но дает быстрые рекомендации)

Мы рассмотрим каждый из них более подробно в следующих публикациях.

Подвести итог

Мы увидели, зачем нам нужны рекомендательные системы, и увидели подводные камни, которых нужно избегать, чтобы получить хороший рейтинг. Мы также говорили о различных классификациях, которые может иметь RecSys.

В следующем посте я продолжу эту серию, более подробно расскажу о пользовательской совместной фильтрации.