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

Комментарии 15

Очень интересно получается если разделить информацию/данные и алгоритм оценки этой информации.
Новый фильм — данные, но его нужно предлагать тем, чей алгоритм оценки может сработать на покупку. ( можете надеяться на похожесть, на куки, на положение луны и т.д, — всё полезно, но лучше знать откуда чел берет свои алгоритмы и какой фреймворк и понять, который из имеющихся будет применен)
Данные и алгоритмы распространяются приблизительно одинаково, но из разных источников.
Алгоритмы аналог моды, зачастую иррациональны. Но их тоже можно правильно раскладывать и потом использовать.
И когда алгоритмы оценки уже диагностированы, то достаточно просто сделать прогноз реакции.
И тут самая интересная задачка — вывести новый товар, когда нет алгоритмов его оценки совсем.

Очень хорошо, что нет ни слова про A/B тесты!!!

Любопытно, а чем Вам A/B тесты не угодили?
Так ими очень легко манипулировать. Вы же сами пишете про trust based, и наверно из всего потока информации ( данные+алгоритмы ) люди доверяют очень немногим источникам.
Вот тётенька с миллионом фолловеров попала в А или не попала и как зависит результат от этого разбиения? Зная мнение таких тётенек можно нарисовать любой результат A/B теста и таких тётенек очень мало, а статистика классическая позволяет отбросить/добавить пару другую точек из множества.
Да и методологически неверно. Выборка не должна изменять состояние изучаемого объекта(толпы).
Это же не болты, изъял на эксперимент сотню, так остальные не изменились. А у людей не так, изыми из толпы зачинщиков — так мнение всей толпы поменяется.
При определенном умении ими легко манипулировать, пожалуй соглашусь. Только зачем это делать, если вы как владелец сервиса первый, кто заинтересован в корректности результата? Вашей цели (удовлетворения пользователя) можно добиться, только если запущенный алгоритм прогнозирования интереса действительно оптимален.

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

Соглашусь, что A/B тесты штука сложная и требующая учета множества факторов, но при должной подготовке данных и достаточном объеме тестовой выборки, тест вполне себе быстро сходится к статистически достоверным результатам, а иногда вообще является единственным эффективным способом тестирования.
Теорвер придумали во времена пром революции, когда миллионы болтов стало невозможно контролировать, потом перенесли на людей и работало, когда были утренняя и вечерняя газеты и парикмахер один на округу и мода менялась раз в пару лет. А/В тест был в пределах погрешности.
С тех пор скорость и сложность информации выросли существенно, бренды выпускаются в год по дюжине и погрешность A/B, его методологические пороки не поволяют применять при выпуске нового товара, продукта, услуги. А они сейчас уже почти все новые.
Поэтому если мерять круглые/острые углы у кнопки — годится. А если мерять «выстрелят ли красные труселя» — A/B тесту нет никакой веры, совсем.
Спасибо за статью.
Как у джуна, у меня есть вопрос: возможно ли в методе коллаборативной фильтрации в вектор пользователя добавить «нетоварные» фичи, вроде региона, языка, может браузера и т.п.. Существуют ли такие подходы?
Или, как я понял, эти фичи работают только на холодном старте, а дальше уже рассчитываются только товарные предпочтения?
Да, конечно можно добавить. Если задача решается «в лоб» по принципу k ближайших соседей, то «нетоварные» фичи просто добавляются в меру близости. В остальном алгоритм тот же.

Если решается задача матричного разложения (эту задачу тоже относят к классу коллаборативной фильтрации, о ней буду во второй части статьи подробнее писать), здесь чуть сложнее — нужно «нетоварные» фичи встроить в матрицу предпочтений, которую мы раскладываем. Например, можно добавить к матрице еще одно измерение и раскладывать 3-мерный тензор вместо матрицы. Можно поискать по словосочетанию Tensor factorization / Tensor ALS. Есть алгоритмы, которые это делают.
Explicit отклик пользователей уже не в моде, вот implicit больше применяется, гораздо больше задач с ним. Это не мое мнение, а инженеров Netflix, которые рассказывали на одной из конференций, где я был.
Да, это так. Не то что не в моде, просто это объективная реальность.

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

Во-вторых, мы живем в эпоху Big Data и вполне стандартными инструментами можем фиксировать огромное количество факторов, говорящих об отношении клиента к продукту. Вплоть до того, сколько времени он читает описание товара и как водит курсором. Отсюда такое разнообразие постоянно появляющихся новых методик и алгоритмов (хотя казалось бы задача давно известна, что там можно придумать нового).
я написал это к тому, что алгоритмы для implicit рекомендаций посложнее, чем для explicit. Одна развесовка событий по типам много стоит. Сам занимаюсь уже этой темой последние 8 лет на огромных масштабах. C explicit оценками так и не удалось поработать.
Да, cбор и комбинирование неявных факторов это две большие дополнительные задачи, которые появляются при использовании implicit. У меня в принципе такие же наблюдения, 90% бизнесов не собирает и не использует explicit оценки (в моей практике правда это по большей части были offline бизнесы по своей природе).

Но это не значит что их нет совсем. Если это например какой-нибудь интернет-портал рекомендаций, там без explicit просто ничего не получится. В идеале как раз хорошо комбинировать явные рейтинги с неявными.
Спасибо за статью, было интересно. Есть два вопроса. 1. Матрица предпочтений обычно большая и сильно разряженная. Есть ли какие-то специальные алгоритмы или математические трюки для оптимального обхода таких матриц? 2. Вам встречались какие-нибудь нестандартные применения рекомендательных систем? Например, при исследовании профориентации.
1. Я так понимаю, речь идет скорее о расчете и хранении, а не обходе (обход то, мне кажется, штука тривиальная). Я об этом планирую чуть подробнее написать во второй части статьи. Если коротко, те оптимизации, которые приходят в голову:
— Использовать итеративные реализации матричного разложения типа ALS
— Использовать item-based вариант коллаборативной фильтрации (продуктов почти всегда меньше пользователей)
— Использовать технологии параллельной обработки (Hadoop, Spark итд)
— При добавлении оценок, обновлять матрицу инкрементально вместо полного пересчета
— Рассматривал возможность использования приближенных kNN (на базе LSH), но пришел к выводу, что на типичных матрицах предпочтений никакого выигрыша нету

2. Насчет нестандартных применений, любопытно было узнать, что применяются не только ритейле, но и там где изначально продуктов мало и покупаются они редко. Например, банковский или страховой бизнес. Интересно, что сайты знакомств во многом используют те же подходы. Чего-то более нестандартного на практике не встречалось.

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

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

В обоих случаях термин «рекомендация» используется в более широком смысле (не продуктовом). Здесь скорее имеется в виду «оптимизация».
Зарегистрируйтесь на Хабре, чтобы оставить комментарий