Мы все знаем о Netflix, крупнейшем в мире поставщике услуг потокового вещания в Интернете и онлайн-проката DVD-фильмов.

  • Основана 29 августа 1997 года в Лос-Гатос, Калифорния, Марком и Ридом.
  • У него 69 миллионов участников в более чем 60 странах, которые смотрят более 100 миллионов часов телешоу и фильмов в день.
  • Наибольший успех в : шоу "Карточный домик"

Netflix — просмотр рекомендаций

Netflix формулирует это следующим образом:Премия Netflix стремится существенно повысить точность прогнозов того, насколько кому-то понравится фильм, исходя из их предпочтений в отношении фильмов. Улучшите его достаточно, и вы выиграете один (или несколько) Призов. Победа в премии Netflix повышает нашу способность знакомить людей с любимыми фильмами, — www.netlfixprize.com

Так чего же они хотят? Улучшение их существующей системы, за которую они заплатили 1 миллион долларов.

Мы получили предысторию и теперь давайте перейдем к просмотру цели и наборов данных.

Цель:«Какой фильм вам понравится», учитывая, что вы смотрели «Темную ночь», «Бэтмен: Начало», «Ананасовый экспресс»?

Как мы это понимаем?

Предположение. У нас есть набор данных о рейтингах фильмов Netflix и установленная R-studio.

Сначала давайте уделим некоторое время алгоритмам кластеризации.

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

Типы кластеризации:

  1. K- означает — Частичная кластеризация
  • Метод на основе памяти, который измеряет расстояние между экземпляром запроса (идентификатор фильма, идентификатор пользователя) и каждым экземпляром в обучающем наборе. Мы находим K учебных экземпляров с наименьшим расстоянием от экземпляра запроса и усредняем рейтинг. Это прогнозируемый рейтинг для экземпляра запроса. Мы можем использовать формулы «Евклидово расстояние, Манхэттенское расстояние, расстояние Минковского или расстояние Махаланобиса», чтобы найти расстояние. Используемая формула полностью зависит от типа набора данных.
  • Мы можем спросить, насколько важна эта мера расстояния?

Очень важно нормализовать характеристики. Например: что, если я был слишком великодушен в отношении рейтинга фильма, а кто-то другой слишком консервативен? Мы сравниваем с очень высокими личными предубеждениями, что может привести к некорректному показателю сходства. Решение для этого состоит в том, чтобы нормализовать данные.

  • Тогда мы можем спросить, что это за нормализация? как это изменит мои оценки и не потеряет ли это первоначальную оценку?

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

Воображаемый пример:

  • Предположим, у нас есть набор данных для 3 пользователей (Джон, Крис, Вики) вместе с их идентификатором пользователя и рейтингами фильмов.
  • Мы вычисляем средний и sd вектора.
  • Мы нормализуем данные.
  • поэтому наш экземпляр запроса q(John, Batman) — Здесь мы хотим рассчитать, насколько Джону понравится Бэтмен по шкале от 1 до 5.
  • Чтобы определить это, нам нужно определить соседей Джона, которые оценили этот фильм.
  • Пользователи, которые оценили этот фильм, — Крис и Вики. Мы находим, что ближайшим соседом является Крис, исходя из форумала расстояния. (скажем — 0,756)
  • Это выходное значение прогноза находится в нормализованной форме. Чтобы получить фактический рейтинг прогноза, мы используем — (0,756 * sd) + средний рейтинг.

2. Агломеративный — иерархическая кластеризация

  • Подход ближайшего соседа на основе кластеризации для получения жанра для каждого фильма из внешних источников. Мы создаем вектор, представляющий каждый жанр в виде одной ячейки, и подсчитываем количество фильмов, которые пользователи оценили в этом конкретном жанре. Это коллективное мнение пользователей.
  • При задании экземпляра запроса q(MovieID,userID) мы находим все жанры этого фильма. Для каждого жанра мы вычисляем расстояние фильма от центров кластеров для жанра и объединяем два кластера с наименьшим расстоянием до центра тяжести. Мы усредняем прогнозируемый рейтинг по жанру и получаем прогнозируемые рейтинги для q.

Воображаемый пример:

  • Мы используем тот же пример из приведенного выше. (Предположим, у нас есть набор данных для 3 пользователей (Джон, Крис, Вики) вместе с их идентификатором пользователя и рейтингами фильмов.)
  • Мы находим жанр для каждого фильма.
  • Преобразуем данные (пользователь — фильм) в (пользователь — жанр).
  • Мы объединяем пользователей в два кластера.
  • Экземпляр запроса в последний раз — q(John, Movie1).
  • Кластер по жанрам выглядит следующим образом (Жанры фильма 1).
  • Например, если у нас есть два выходных жанра «Триллер» и «Ужасы», и Джон оценивает фильмы «Триллер», мы пытаемся найти один (k = 1) ближайший кластер для жанра триллер.

Набор данных Netflix и алгоритм кластеризации с пошаговым кодом/процессом для работы с использованием R-studio можно найти по ссылке ниже.