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

Пролог

Я случайно встретил своего нынешнего босса. Я навещал своего индонезийского друга в его общежитии. В то время я ел свой шашлык и размышлял о более фундаментальном вопросе о жизненном кризисе, который не выходил у меня из головы (пролистывая пост в Instagram с кошкой). Затем он рассказывал о своем недавнем общении в LinkedIn с одним из основателей компании. Я в шутку сказал ему: «Чувак, ты должен рассказать ему и обо мне», что, по всей видимости, он позже и сделал. Затем я обменялся несколькими электронными письмами с моим (нынешним) боссом, и, к моему удивлению, он был очень мил, он предложил нам возможность реализовать главный проект в его компании - работу над клиентским проектом (назовем его «XYZ»). Интернет-магазин) в построении моделей прогнозирования оттока клиентов.

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

Введение

Рекомендации к покупке на основе неявных отзывов

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

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

Совместная фильтрация

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

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

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

Фильтрация на основе содержимого

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

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

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

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

Гибридный подход

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

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

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

Особенности элементов на основе сходства

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

Конечно, эти сочетания от совершенства. Но учитывая, что эти характеристики могут объяснить взаимосвязь между товарами и предпочтениями клиентов, результаты достаточно хороши. Другой подход, который я могу придумать, - это, возможно, использование скрытого распределения Дирихле, графической модели, которая может изучать смеси «информации» в каждом элементе.

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

Стратегия разделения данных

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

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

Схема отрицательной выборки

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

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

Обучение с данными о прошлых покупках

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

Мы ищем модели с высокими баллами по AUROC и Sensitivity. Чувствительность можно интуитивно воспринимать как показатель точности для положительных событий. Он соответствует доле результатов индивидуальных прогнозов, которые правильно предсказаны для всех положительных выборок. Проще говоря, мы хотим, чтобы набор созданных нами функций мог объяснить отношения между товаром и покупателем - независимо от того, имеет ли товар высокую вероятность быть купленным или нет.

Мы экспериментировали с четырьмя алгоритмами машинного обучения, в которых алгоритмы стохастического градиентного усиления работают лучше всего - 72% и 89% по шкале чувствительности и AUC соответственно. Полученные модели также превзошли базовую модель: популярные товары на 3,5%. Чтобы получить максимальную производительность модели, мы использовали поиск по сетке для настройки шести параметров моделей SGD, включая скорость обучения, максимальную глубину трех, количество раундов и т. Д.

Заключение

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

Есть несколько потенциальных идей, которые стоит изучить. Помимо использования LDA для извлечения текстовой информации, доступной на веб-сайте, как я упоминал ранее, одно улучшение может быть сделано путем изучения дополнительных способов определения других способов отбора отрицательных выборок для обучения и тестирования. Заинтересованные читатели могли ознакомиться с творчеством Рон Панг и все 2008.

Stream Intelligence - отличное место для работы. Культура способствует отличному командному сотрудничеству, и самое крутое то, что они очень поддерживают своих сотрудников, чтобы они посетили конференцию и представили свои работы. В прошлом месяце я представлял диссертацию на Региональной статистической конференции ISI 2017 года на Бали. В целом, для меня было отличным опытом встретиться с лидерами в своей области - Агусом Судджианто, специалистом по моделированию корпоративного управления рисками. У меня также была возможность встретиться с моим научным руководителем бакалавриата, доктором Думарией Тампуболоном, который познакомил меня с профессором Кеном Сен Тангом. Он является ведущим исследователем в области актуарных наук в Университете Ватерлоо, чьи работы я использовал в качестве справочных материалов, поэтому сейчас отличный момент увидеть кого-то, чьи работы мне действительно нравятся.

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