Как стать автором
Обновить
23
0

Пользователь

Отправить сообщение

А скиньте в личку id аккаунта. Посмотрим, что могло пойти не так.

Ощущение, что этот пост писал GPT-3

а в каком году видели :)?
Все так, но переходить на новый фреймворк ради документации не очень хотелось :)
А других причин как-то не было
N^3 * K присутствует только в вариации Hnrm. Для нормализации, после выбора каждой сцены, необходимо находить самое оптимальное разбиение фильма на сцены с учетом выбранной сцены. В итоге получается, что каждый раз решается полная задача оптимизации, что и приводит к высокой вычислительной стоимости. Можно воспользоваться различными оптимизациями (типа memoization или замена рекурсии на итеративность и последующее распараллеливание), но все равно алгоритм достаточно медленный.
А как это все крашится? Если с импортированной моделью пошло что-нибудь не так, есть ли инструменты в Vertica для сбора читабельных и понятных разработчику модели на R логов?
Хорошие наблюдения суровой реальности. Возможно стоит добавить, что в реальности, особенно в вещах связанных с деньгами, сложные и неинтерпретируемые модели интересны только на первых этапах.

Не думал, что напишу это, но куда полезнее распознать процессы, влияющие на изменение цены, чем предсказание следующего значения в последовательности. Ведь на подобной последовательности модель сломается: www.ino.com/img/sites/ino/email/6155.jpg
  1. Кофаундер не захотел лайки/дизлайки :). Шутка. Мы хотели градацию оценок. Их существует 3 основных: 3, 5 и 10. 10 — плохо помещается на экран смартфона, 3 — лимитировано, поэтому 5
  2. Хотим, чтобы была только минимально нужная информация (для всего остального есть Wiki, IMDB, KP)
  3. Сложно когда франшиза. На постерах франшизы название серии обычно написано маленьким шрифтом (сложно увидеть)
  4. Не хотим, пусть пользователь видит и положительное и отрицательное
Сервисов «машинно» рекомендующих фильмы на основе вашей истории просмотров/рейтингов/тегов/и т.д. очень много, вот вам три из них: Movielens, Netflix, ivi.ru.
Последние два, так вообще, предлагают посмотреть фильм прямо у них на сервисе :).

Идея приложения была именно в социальности.
Во-первых, есть люди, которым интересно наблюдать за тем, что посмотрели другие (конкретные) люди. Другие конкретные люди: кинокритики, ваш друг киноман, и т.д. В Raters можно подписаться на этих конкретных людей и следить за их обновлениями в ленте (этакий кино-инстаграм).

Во-вторых, людям интересно обсуждать фильмы, которые они посмотрели, с людьми, которых они знают (такая неавтоматизированная trust-based recommender system). При этом не хочется писать и читать длинные опусы как на KP или IMDB.

В-третьих, к моему разочарованию, не все люди готовы довериться машине. Поэтому мы и решили капнуть именно в эту сторону и посмотреть, что получиться.
Отношение сходства симметрично, каковы преимущества отхода от симметрии?

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

Соответственно, во втором варианте не требуется(но ничего не мешает) по особенному относиться к случаю b=0(фильм популярный).

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


Пока все банально просто. Рекомендатели имеют свои приоритеты.Возможны два варианта:
  • рекомендатель с более высоким приоритетом ничего не нашел — тогда отрабатывает рекомендатель с менее высоким приоритетом
  • рекомендатель с более высоким приоритетом нашел что-то — тогда результат добирается объектами рекомендателя с менее высоким приоритетом


То есть в итоге это не список рекомендаций, а срез каталога по какому либо признаку (например по неперсонализированному рейтингу). И в случае новичков на сервисе (но не новичков в просмотре кино) мы можем получить список из фильмов, которые они уже смотрели.


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

Классный вопрос :). На деле у нас несколько рекомендателей (как персонализированных так и неперсонализированных). К каждому рекомендателю есть требования по количество возвращаемых рекомендаций и по минимальному значению веса рекомендации. Если рекомендатель A не набрал нужного количества рекомендаций, либо веса рекомендаций не прошли проверки, то система пытаемся получить рекомендации из рекомендателя B, C и т.д. Последним в каждой группе рекомендателей является рекомендатель-заглушка. Он отдает популярный контент разных жанров независимо от того смотрел пользователь его или нет. Таким образом система всегда возвращает рекомендации.

Есть еще второй аспект. Каталог ivi довольно большой и часто обновляется. Вероятность, что пользователь посмотрел все в пределах минимальной схожести, на мой взгляд, мала. Но заглушка помогает исключить и эту вероятность.
Возможно когда-нибудь вынесем в отдельный пост. Сейчас эта информация является конфиденциальной.
Сейчас основной язык разработки Python. Но также есть разработка на Go, php и JS
В качестве начального baseline действительно разумно построить неперсонализированные похожести и показывать в блоке top-k. У вас сейчас так?

В блоке похожее (в карточке фильма) обычная неперсонализированная top-k похожесть.

По опыту скажу, что если добавить в такой блок персонализацию, можно получить заметный профит. Если совсем грубо, то можно например брать top-2k похожих (неперсонализированно), а из них брать k лучших для этого пользователя. Пробовали что-то подобное?

Полноценную персонализацию в похожее, своеобразную сортировку фильмов по релевантности для пользователя, сознательно пока не добавлял. Но она есть в планах. Пока что только отдельный блок персональных рекомендаций. Возможно стоит попробовать скрестить его с неперсональными на A/B и сравнить, что и как.

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

Спасибо за замечания, постараюсь учесть в будущем.

Данные использованные в примерах где-нибудь доступны?

К сожалению нет
Ок, рассмотрим ситуацию. Есть контент, который вам совсем не нравится. И, так как вы его не ищите и не смотрите, оценка у него — None. Усредненное значение рейтинга — это попытка найти границу между тем, что вам нравится или не нравится. Т.е указание некоторого безразличия относительно объекта. Таким образом мы строим вам рекомендации, основываясь на фильме, который система считает нейтральным, а вам он не нравится. Мне кажется, что это так себе решение.

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

При подсчете схожести важно, чтобы похожими считались фильмы у которых почти одинаковые наборы пользователей. При этом важно избежать «эффекта Гарри Поттера», когда фильм, который просмотрели все пользователи был бы сильно похож на каждый фильм в коллекции.

В обоих предложенных вариантах(заполнять нулями или брать только позиции заполненные в обоих векторах) при вычислении косинусной меры числитель будет одинаковым. Знаменатель будет разный, но только в первом случае он позволит избежать описанные выше эффект.
Ассоциативные правила обычно используются для определения какие объекты смотрятся совместно с каким-то (т.е ассоциируются). Поэтому ассоциативные правила чаще используют для построения неперсонализированных рекомендаций. А в топике описана только персонализированная RS.

Про FPG до это не слышал, буду благодарен, если поделитесь ссылкой.
Если пользователь — залогиненный юзер, то у него есть «постоянная» история просмотров/рейтингов/и т.д… Если история действий достаточно информативна, то персонализированные рекомендации строятся по ней.

Если пользователь не залогинен, то у него «временная» история, которая истечет по завершению сессии. Рекомендации строятся по «временной» истории, если она достаточно информативна.

Если истории не информативна или ее нет, то вместо персонализированных рекомендаций обычно используют тематические блоки или «популярное».
1

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность