Регистрация

Рекомендательные интернет-сервисы

5
0
345 0
Аудио Текст
6 ноября 2012

Алгоритмы рекомендаций, которые советуют пользователям товары или контент, могут стать полезной частью интернет-магазина или другого сервиса. Насколько сложно стартапу построить собственный алгоритм рекомендаций, можно ли взять стороннее решение, как оценить точность алгоритма, рассказывает директор по исследованиям компании SurfingBird Сергей Николенко.

Из программы вы узнаете:
— как оценить эффективность своей рекомендательной системы;
— как выбрать правильные метрики для оптимизации алгоритма;
— насколько серьезной проблемой является переобучение;
— чем полезны рекомендательные системы для маркетинга и рекламы;
— насколько готовы пользователи к персонализации Веба, к повсеместным рекомендациям;
— какие рекомендательные алгоритмы используются в SurfingBird;
— почему SurfingBird вынужден показывать пользователям только действительно интересную рекламу;
— почему не взлетели социальные закладки.

Михаил Боде: Добрый день, друзья! В эфире канал SeoPult.TV. С вами я, Михаил Боде. Алгоритмы рекомендаций в интернете советуют нам практически все: какие фильмы посмотреть, какие товары купить, кого добавить во френды, какие сайты, в конце концов, посещать. Чем могут быть полезны такие алгоритмы и как они устроены изнутри, нам расскажет человек, который на них специализируется. У меня в гостях сегодня Сергей Николенко, директор по исследованиям компании SurfingBird.

Сергей Николенко, директор по исследованиям Surfingbird.ru
Родился в 1984 году.
Выпускник Санкт-Петербургского государственного университета и University High School в Колорадо.
С 2006 по 2007 год проходил инженерную стажировку в петербургском офисе Google.
С 2008 по 2010 год — старший научный сотрудник Центра речевых технологий.
С 2011 года — младший научный сотрудник Лаборатории математической логики ПОМИ РАН, старший научный сотрудник Лаборатории биоинформатики Академического университета.
С 2011 года — директор по исследованиям SurfingBird.

М. Б.: Сергей, привет!
Сергей Николенко: Привет!
М. Б.: Сергей, мы знаем, что помимо работы в SurfingBird ты занимаешься научной деятельностью в Санкт-Петербургском государственном академическом университете, да?
С. Н.: Да.
М. Б.: Расскажи немножко подробнее, что ты там делаешь, какой наукой занимаешься.
С. Н.: Я работаю в лаборатории биоинформатики. Это одна из лабораторий, организованных в программе мегагрантов под руководством Павла Певзнера, выдающегося биоинформатика, и мы там в основном занимаемся сборкой геномов, так или иначе.
М. Б.: Ну, о том, насколько твоя работа коррелирует с тем, чем ты занимаешься в SurfingBird, насколько удачно получается собрать «рекомендательный геном», мы сейчас поговорим. Если посмотреть на вопрос широко, то выходит, что рекомендательные алгоритмы нас преследуют в Вебе, в мобильном интернете — практически везде. Как я говорил, в интернет-магазинах нам подсовывают товары, которые «брали вместе с этим», в Facebook говорят: «Возможно, вы знаете этих людей», — и мы действительно их, вероятно, знаем, вот сюрприз! Скажи, пожалуйста, это все явления одного порядка или абсолютно по разным принципам построенные рекомендательные механизмы?
С. Н.: Как правило, примерно одинаково.

В массе своей рекомендательные системы основаны на одних и тех же принципах.

И база любой рекомендательной системы — это, если не ударяться в математику, так называемый принцип гомофилии — звучит по-русски не очень. Если людям нравятся примерно одни и те же вещи, то мы можем ожидать, что в будущем им будут тоже нравиться примерно одни и те же вещи. И мы можем рекомендовать человеку то, что понравилось другим людям из того, что ему нравилось в прошлом.
М. Б.: Ну, о том, каким образом происходит расчет: на основании ли поведения пользователя, близких ему социальных групп, его френдов, — мы поговорим чуть позже. А сейчас давай обратимся к тому, какие задачи вообще выполняют эти рекомендательные алгоритмы, чем они могут быть полезны. На мой взгляд, взгляд профана, они используются в основном для двух вещей. Во-первых, для поиска нового: «Я хочу получить новую информацию по этой теме, пожалуйста, подсуньте мне сайты, расширьте мои горизонты и т. д.». А второе — это выбор лучшего: какой товар купить, какой фильм посмотреть. А с твоей точки зрения, на какие типы рекомендательные алгоритмы делятся функционально?
С. Н.: Совершенно верно. Основной класс алгоритмов — рекомендации того, что, скорее всего, больше всего понравится. К тому, что ты сказал, можно добавить немножко другой тип рекомендательных систем — такие, в которых мы стараемся непосредственно показать что-то наиболее интересное пользователю. Например, домашняя страница крупного портала вроде Yahoo!: там он показывает новости разные, и, когда ты заходишь на Yahoo, на самом деле он понимает, кто к нему зашел, и старается делать персонализированную выдачу под того, кто зашел, чтобы вероятность клика по новости была максимальной.
М. Б.: Алгоритм рекомендации— это достаточно сложная математика. Мы сейчас не будем вдаваться в детали, но можешь нам рассказать хотя бы тезисно, на чем базируются эти системы?
С. Н.: Давай я просто опишу самый простой метод рекомендаций, с которого обычно все начинают и который на самом деле не так плохо работает, — так называемый метод ближайших соседей. Его сравнительно просто объяснить без формул, на пальцах, и для него не нужны никакие данные, кроме какой-то информации о том, что пользователям нравилось в прошлом. В контексте рекомендаций благодаря Netflix, про который мы, наверное, еще поговорим, удобно рассуждать в терминах фильмов и звездочек, которые ставят пользователи фильмам. Если, предположим, ты зашел на Netflix и хочешь, чтобы он тебе порекомендовал новый фильм, Netflix в первую очередь посмотрит на историю тех рейтингов, того числа звездочек, которые ты поставил другим фильмам в прошлом, и подыщет других пользователей, у которых вкусы максимально похожи на твои. Если ты поставил пять звездочек «Властелину колец», две «Титанику» и три «Андрею Рублеву», то наверняка где-то найдутся 100-200 пользователей, у которых точно такие же оценки там, где они с тобой пересекаются. И это твои ближайшие соседи, и тебе будут пытаться предложить те фильмы, которые эти пользователи в среднем выше всего оценивали в прошлом, — то, что они успели посмотреть, а ты нет.
М. Б.: Это, я так понимаю, наиболее просто технически реализуемый алгоритм. А что можно еще в него включить? Или какие-то более сложные алгоритмы есть?
С. Н.: Не совсем верно, что он наиболее просто технически реализуем, потому что поиск ближайших соседей — сложная задача. Его очень легко объяснить, но именно алгоритмически вычислительная сложность его не такая уж маленькая. Другой класс алгоритмов, которые все время применяются в рекомендательных системах, основан на методе разложения матрицы. Давай я не буду вдаваться в подробности, но, в общем, в результате из матрицы рейтингов, из того, какие пользователи какую оценку поставили и каким продуктам, мы для каждого пользователя формируем его набор факторов, которые, условно говоря, описывают его вкусы. На самом деле это абстрактные цифры, которые иногда могут иметь смысл, но далеко не обязательно. Просто какой-то абстрактный набор из 5-10 цифр. И аналогичные факторы выделяются у продуктов. И потом просто мы смотрим, где факторы пользователя наиболее похожи на факторы продукта, и там предсказывается наивысший рейтинг.
М. Б.: А касаемо двух перечисленных тобой методов можно ли вообще говорить, какой из них точнее?
С. Н.: Трудно. Все зависит от конкретной задачи, и в любой более или менее сложной задаче используется и тот и другой.

Любая рекомендательная система — гигантский ансамбль из тысячи моделей, которые основаны на десятках разных идей.

Про две из них я сказал. Вернее, это два класса идей, в которых будет много вариантов. И есть еще какая-то модель сверху, которая берет предсказание каждой из них, пытается их как-то обобщить и выдать единую оценку.
М. Б.: А зависит ли устройство алгоритма рекомендательной системы от типа объектов, с которыми она работает? Подбор товаров, подбор ссылок, релевантных твоим интересам, подбор фильмов или подбор людей, с которыми ты мог бы подружиться, насколько зависит от типа объекта?
С. Н.: Сама наука практически не зависит. Естественно, у каждого типа объектов будут свои свойства, которые можно добавить в базовую модель, и будут свои варианты, о которых я говорил, которые будут добавлять другие инструменты в общий ансамбль. И естественно, результаты обучения будут в разных предметных областях совершенно разными. Но, в принципе, математика везде одна и та же.
М. Б.: Грубо говоря, можно сделать рекомендательный сервис и потом приспосабливать его подо что угодно и продавать на аутсорс?
С. Н.: Да, есть и такие стартапы, я слышал про них.
М. Б.: А SurfingBird не собирается заниматься подобным или вы планируете развивать исключительно свою систему и завлекать в нее людей?
С. Н.: Ну, пока мы развиваем свою систему, но вполне возможно, что будем и предлагать рекомендательные сервисы другим.
М. Б.: Знаешь, многие исследования показали, что люди зачастую ведут себя крайне иррационально. Нам бы было удобно описывать их исключительно с помощью математики, но часто они лайкают не потому, что им это на самом деле нравится, они зачастую реже проявляют позитивные чувства — это просто закон психологии, — реже пишут: «Ах, как мне понравилось», что тоже нужно учитывать. Как человеческим фактором работают рекомендательные системы? Они вообще в состоянии его учесть сегодня?
С. Н.: Конечно.
М. Б.: Как?
С. Н.: Сейчас расскажу. Люди разные, и продукты тоже разные, и, естественно, в любой рекомендательной системе выделяются так называемые базовые предикторы, выделяются какие-то общие оценки, скажем так, «доброты» пользователя или общего качества товара.
М. Б.: «Доброты»? Это научный термин?
С. Н.: Ну, это не научный термин. Скажем так, средний рейтинг, который от него можно ожидать.

Ты зашел на SurfingBird, и ты «добрый», лайкаешь 70% того, что тебе показывают, а я «злой», я лайкаю 25%, но на самом деле все равно и мне и тебе SurfingBird будет стараться повысить вероятность этого лайка.

Нужно просто нормализовать, вычесть нашу «доброту» из наших оценок и поработать дальше.
М. Б.: А учитывают ли системы алгоритма рекомендаций социальные связи, связи между пользователями?
С. Н.: Да, конечно, у нас рекомендательная система учитывает социальный граф. И да, всегда есть в той или иной степени выраженный эффект, что если что-то очень заинтересовало твоих друзей, то хотя бы потому, что они твои друзья, тебе тоже это будет чуть более интересно, чем в среднем. Но это индивидуально, и, естественно, рекомендательная система будет стараться для каждого пользователя оценить, насколько именно для него важно соотношение между социальной рекомендацией и общей коллаборативной фильтрацией, о которой я говорил.
М. Б.: А как это сделать — оценить для каждого пользователя, насколько для него социальный вес важен или коллаборативная фильтрация?
С. Н.: Если очень условно говорить, тоже по его истории. Если, скажем, пользователь на Netflix будет смотреть каждый фильм, который порекомендовали ему трое друзей, то, наверное, социальная составляющая для него более важна, чем его собственные вкусы. Он будет их старательно смотреть, а потом на них ругаться, но все равно продолжать в том же духе. И наоборот, если он плевать хотел на «лайки» своих друзей, но у него есть четко обрисованные вкусы и он понимает, что ему нравится авторское французское кино 1960-х, то почему бы ему его и не показывать.
М. Б.: О’кей. Мне известно, что в системах рекомендаций есть одна маленькая проблема: пользователь только приходит в такой сервис, он для него terra incognita, сервис о нем абсолютно ничего не знает. Что-то, может быть, ему способен предложить, но, возможно, все первые выстрелы будут вхолостую. Вот как начинается работа с таким пользователем и насколько быстро система рекомендации может что-то узнать о нем?

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

Когда у пользователя есть богатая история, то с ним работать легко, более или менее любой разумный алгоритм выдаст ему хорошие рекомендации. Но, когда пользователь только приходит, если про него совсем ничего не известно, значит, совсем ничего не сделать. Однако, как правило, когда пользователь приходит, про него уже какая-то вторичная информация есть: может быть, его возраст, пол, место жительства, может быть, он пришел и залогинился через Facebook и мы знаем его друзей, его социальный граф. Тогда можно пытаться выдавать обобщенные рекомендации для той или иной социальной группы, группы пользователей, пытаться нового пользователя помещать в эту группу и выдавать ему то, что больше нравится этой группе. Конечно, все равно можно промахнуться. Это с одной стороны. А с другой — проблема «холодного старта» существует и у продуктов: когда выходит новый фильм на Netflix или когда добавляют новую страничку к нам, в SurfingBird, у нее нет еще никакой истории, никакой истории оценок, и тоже нужно как-то кому-то начать ее показывать. И здесь могут быть те же самые методы, но, естественно, в отличие от пользователей, в случае с продуктами можно как-то пытаться анализировать контент. Скажем, Netflix будет знать жанр фильма, какие-то его данные, страну выпуска, еще что-то, будет знать его популярность в кинотеатре и сможет как-то это использовать. Мы можем прочитать страничку, посмотреть, о чем она, постараться распознать автоматически какие-то темы, которые там затронуты, и рекомендовать его тем людям, которые интересовались этими темами в прошлом.

М. Б.: Давай представим, что мы имеем дело с пользователем, который уже как-то проявил свои интересы, выказал их, и, положим, SurfingBird о нем все знает и прекрасно ему дает точные рекомендации. Это вполне возможный случай, но здесь всплывает другая проблема: не приводит ли излишняя заботливость систем к тому, что человек начинает консервироваться в своих вкусах? Ведь, как мы говорили, одна из функций систем рекомендаций— приоткрывать новые горизонты человеку. А так он сказал, что любит русский рок, слушал его, и ему продолжают подсовывать все новые и новые образчики русского рока 1980-х, 1990-х и больше ничего. Нужно ли с этим бороться, можно ли с этим бороться в рекомендательных системах?
С. Н.: Эффект, который ты описал, обычно называют filter bubble — «мыльный пузырь фильтрации». Это та же фильтрация, которая коллаборативная. Такая проблема существует, и действительно в рекомендательных системах стараются с ней бороться, пытаются как-то искусственно делать рекомендации более разнообразными. Для этого нужно просто немножко переопределить целевую функцию. Я говорил в самом начале, что, когда ты заходишь на SurfingBird, мы стараемся максимизировать вероятность лайка, вероятность того, что тебе понравится новая страница. Но если добавить в эту целевую функцию что-нибудь новое, например, максимизировать вероятность лайка, но при условии, что следующая страница будет не слишком похожа на предыдущую, то система будет давать более разнообразные рекомендации.
М. Б.: А правильно ли предположение, что с распространением соцсетей, в частности Facebook, информации о пользователях стало гораздо больше, в том числе для рекомендательных систем, потому что Facebook с помощью своего социального графа щупальцами опутывает весь Веб: на сайтах стоят кнопки и т. д. И, в принципе, благодаря тому, что разные сайты, так или иначе, соединены с Facebook, по этой сети может распространяться информация о поведении пользователя: он ведет себя как-то на одном сайте, и в теории эту информацию можно получить на другой сайт.
С. Н.: Гипотетически можно. На самом же деле у самого Facebook, безусловно, очень много информации о поведении пользователей, но в реальности сторонним предложениям, которые просто используют, скажем, Facebook Login, Facebook так уж много информации не сообщает. Естественно, было бы некорректно по отношению к пользователям рассказывать нам о том, что ему понравилось на каком-то стороннем порносайте.
М. Б.: Ну что же, Сергей, большое спасибо за то, что рассказал нам о том, как в целом устроены рекомендательные системы, чем они могут быть полезны. Остальные подробности и более детальное углубление в эту тему наши зрители смогут увидеть в следующей передаче с твоим участием, а пока, дорогие зрители, оставайтесь с нами, ждите наших следующих программ, следите за нашими анонсами и не переключайте канал. Пока!

Развернуть текстовую версию
Комментарии
Похожие видео