Русский
Русский
English
Статистика
Реклама

Коллаборативная фильтрация

Культурные рекомендации опыт московского хакатона

23.02.2021 00:18:51 | Автор: admin

В конце прошлого года я поучаствовал в хакатоне "Лидеры цифровой трансформации" при поддержке Правительства Москвы. Мы решали задачу от Департамента культуры - рекомендательную систему для его услуг, то есть книг в библиотеках, а также кружков и мероприятий в культурных центрах. Особая пикантность в том, что по одним из этих сервисов нужно было рекомендовать другие. Наше решение заняло только второе место, но делать его было познавательно.

Принцип работы нашей системы - и пример кусочка её выдачиПринцип работы нашей системы - и пример кусочка её выдачи

О хакатоне

Вообще, хакатон состоял из 10 направлений, и по каждому направлению первое место получало в награду миллион, а второе - ничего. Так что второе место занять было очень обидно. Сам формат хакатона был стандартный - два дня напряжённой работы в команде, потом презентация. Приятно, что в ходе этих двух дней было несколько регулярных созвонов с организаторами хакатона и авторами задачи. Неприятно, что на всех этих созвонах организаторы наотрез отказывались озвучить критерии оценки или какие-то ожидания от хорошего решения. Довольно сложно соревноваться, когда не понимаешь, чем именно вы соревнуетесь. И ещё не хватило открыть API с этими самыми сервисами, на что изначально организаторы намекали - вместо этого пришлось пользоваться данными, выгруженными в Excel, где, например, не было актуальных мероприятий. Впрочем, список мероприятий мы в итоге сами научились вытягивать с сайта.

Наша команда

Команду мы собрали в соцсетях чисто под этот хакатон: MLщики Тима и Андрей, фронтэндер Игорь, и ваш покорный слуга. Назвались Artificial Intelligentsia. Поскольку типов рекомендуемого контента было несколько, то разделились мы очень органично: Тима сел учиться рекомендовать книги на основе прочитанных книг же, Андрей - рекомендовать кружки по кружкам, а я стал рекомендовать мероприятия. Но поскольку данных по посещению мероприятий людьми нам не дали, рекомендации я строил тоже на основе прочитанных книг. Игорь сделал для всего этого простенький сайтик, и, как водится, к последнему моменту мы собрали всё это воедино. Очень понравилось, что трое из четырех членов команды были в Москве, и мы, несмотря на карантин, смогли собраться в одной квартире - вместе работается гораздо продуктивнее.

Наше решение

По истории взятия книг в библиотеках данных было очень много, едва ли не миллионы. Поэтому Тима реализовал алгоритм коллаборативной фильтрации, когда модель выучивает вкусы читателя на основе прочитанных им книг, а выводы об особенностях книг делает по людям, которые их читают. Звучит как несколько подозрительная рекурсия, но если данных достаточно, такой подход вполне успешен. Чисто математически это работает так: и книги, и читатели представлены числовыми векторами, которые получаются из разложения разреженной матрицы, где каждая строка - читатель, каждый столбец - книга, и единички стоят в клетках, соответствующих реально прочитанным книгам. Тима ещё добавил какую-то хитрую байесовскую функцию потерь, и рекомендации стали довольно осмысленными. В принципе, можно было ещё вместо простых линейных проекций обучить нейронки, но важнее было выкатить полноценный продукт, чем перебирать алгоритмы. Для чистого решения не хватило умной дедупликации: единицей учитываемого контента является печатная книга, и некоторые книги могут содержать одни и те же произведения, но иметь разные заголовки. Важно не порекомендовать "Войну и мир" в первой строке, и "Войну и мир, том 1" - во второй.

Андрей пробовал делать нечто похожее для кружков, но получилось хуже. Во-первых, по кружкам данных меньше: книги люди читают десятками и сотнями, а кружки посещают в единицах. Во-вторых, кружки имеют иерархию: условно, "Аккордеон базовый" можно проходить только после "Аккордеона начального", а "Аккордеон продвинутый 2" - после них обоих и первого продвинутого. В исходных данных такой разметки нет, и, по-хорошему, её надо выучивать из данных самостоятельно. Та же проблема есть и в книгах (трилогии надо читать последовательно), но там она менее выражена.

Для мероприятий я решил делать content-based рекомендации, потому что о них нам известно немного: название, описание, место и время. Из названия и описания я тоже слепил векторные представления, усреднив fasttext-эмбеддинги всех их слов. Справка: fasttext - это векторная модель слов, как word2vec, только ещё способная угадывать смысл незнакомых слов по их написанию, и за счёт этого сжимаемая до весьма малых размеров без существенной потери в точности. Для книг я скачал в интернете базу аннотаций, и слепил из них точно такие же векторные представления. Теперь книги и мероприятия представлены в одном и том же пространстве, и их можно сравнивать друг с другом. Например, если юзер любит исторические книги, их векторы окажутся геометрически близкими к вектору фестиваля реконструкторов, и юзеру можно предложить посетить этот фестиваль. И, конечно, при ранжировании мероприятий надо учитывать географию, отдавая предпочтения тем, что проходят рядом с домом пользователя. К кружкам это тоже относится, а ещё для кружков важен возраст юзера. Поэтому и адрес, и возраст перед началом работы мы спрашиваем.

Чем всё закончилось

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

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

Заключение

В целом, хакатон мне понравился: ворвался в целом новую для меня тему рекомендательных систем (и притащил туда свое любимое NLP), поработал с бодрой командой и довольно интересными данными. Оказалось, что стандартные алгоритмы collaborative filtering действительно работают, это не миф. Оказалось, что систему мультидоменных рекомендаций несложно собрать из подручных материалов. Оказалось, что если собрать команду незнакомых программистов и посадить в одну комнату с неограниченным количеством снеков, то за два дня можно накодить нечто прикольное.

Будем хакатонить дальше!

Подробнее..

Рекомендательные системы как помочь пользователю найти то, что ему нужно?

16.10.2020 10:22:46 | Автор: admin

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

Что такое рекомендательные системы?

Рекомендательная система комплекс алгоритмов, программ и сервисов, задача которого предсказать, что может заинтересовать того или иного пользователя. В основе работы лежит информация о профиле человека и иные данные.

Яркий пример рекомендательной системы Tik-Tok, о котором в последнее время говорят очень много. Первые несколько дней пользователи видят в ленте все подряд, но потом приложение показывает пользователю только интересующее его видео на основе предыдущих оценок.

Даже музыкальные приложения не обходятся без рекомендательных систем. Одной из лучших обладает Spotify, которое недавно пришло в Россию. Через несколько дней после установки программа подбирает для пользователя треки, которые с высокой долей вероятности заинтересуют его.

Типы рекомендательных систем

Существует 4 чипа рекомендательных систем:

  • Коллаборативная фильтрация (collaborative filtering).

  • Основанные на контенте (content-based).

  • Основанные на знаниях (knowledge-based).

  • Гибридные (hybrid).

Давайте подробнее рассмотрим каждый из них.

Коллаборативная фильтрация (collaborative filtering)

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

Простой пример: Гена и Витя любят рыбачить и заказывать пиццу по вечерам. А еще они оба любят BMW и ездят на машинах этой марки. Еще есть Олег, который тоже не прочь посидеть с удочкой на выходных и заказать пиццу после тяжелого рабочего дня. Но о покупке BMW он никогда не задумывался. Так как его интересы (оценки) совпадают с Геной и Витей, ему можно порекомендовать BMW.

По такому принципу работает много сервисов, например, Имхонет или last.fm. Главное преимущество этого типа высокая теоретическая точность. Но есть и минус: показывать хорошие рекомендации новым пользователям не получится, ведь о них нет никакой информации. Из-за этого будет большой процент отказов.

Основанные на контенте (content-based)

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

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

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

Основанные на знаниях (knowledge-based)

Этот тип работает на основе знаний о какой-то предметной области: о пользователях, товарах и других, которые могут помочь в ранжировании. Как и в случае с content-based, оценки других пользователей системы не учитывают. Есть несколько разновидностей: case-based, demographic-based, utility-based, critique-based, whatever-you-want-based и т.д.

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

Например, магазин техники Apple reStore подбирает потенциальным покупателям наборы, в зависимости от просматриваемого товара:

Неплохо работает аналогичная система в интернет-магазине М.Видео:

При выборе новой игровой консоли PS4 посетителю сайта предлагают купить дополнительные геймпады, шлем виртуальной реальности, популярные игры и другие сопутствующие товары. Как итог, человек совершает больше покупок и увеличивает прибыль компании.

Очевидное преимущество системы высокая точность. Рекомендательная система М.Видео показывает товары, которые могут реально заинтересовать посетителя. Было бы странно, если при выборе PlayStation 4 магазин советовал докупить человеку кухонный гарнитур.

Но есть и минус для разработки этой системы требуется много времени и ресурсов. Но результат оправдывает средства.

Гибридные (hybrid)

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

Крупные сервисы и интернет-магазины используют гибридные варианты. Чуть-чуть там, немного здесь и получается уникальная система. Универсальной инструкции и рекомендаций по реализации такого инструмента нет. Все ограничивается возможностями и фантазией разработчиков. Например, у Netflix в рекомендательной системе объединено 27 (!) алгоритмов.

Есть несколько распространенных типов комбинирования:

  • реализация по отдельности коллаборативных и контентных алгоритмов и объединение их предположений;

  • включение некоторых контентных правил в коллаборативную методику;

  • включение некоторых коллаборативных правил в контентную методику;

  • построение общей модели, включающей в себя правила обеих методик.

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

Как работают рекомендательные системы

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

Рекомендательные системы работают на двух уровнях:

  • Глобальные оценки; особенности и предпочтения, не меняющиеся месяцами или годами; интересные страницы; зависимость от характерных пользовательских черт: пол, место проживания и т.п.

  • Кратковременные тренды и быстрые изменения интересов во времени.

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

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

Как и в случае с типами рекомендательных систем, по отдельности способы используют редко. Для получения наилучших результатов их комбинируют.

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

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

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

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

Мифы о рекомендательных системах

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

Сложно собрать и подготовить данные для ИИ

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

ИИ не способен давать качественный результат

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

Нужно много денег на реализацию

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

Во-первых, все зависит от размеров бизнеса. Если сервис, интернет-магазин или другие предприятия небольшие, то и денег на реализацию потребуется немного. Во-вторых, необязательно создавать собственную систему с нуля. Достаточно воспользоваться готовым фреймворком (TensofFlow, Apple Core ML) или внешним решением (Google ML Kit). Это позволит существенно сократить расходы.

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

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

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

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru