Настройка алгоритма TF-IDF для обслуживания рекомендаций по продуктам

Почему TF-IDF

TF-IDF - это супер-интуитивно понятный инструмент для определения ключевых слов в тексте, изначально предназначенный для улучшения индексации документов корпуса. TF-IDF имеет множество различных применений и вариаций, например TF-ICF, который представляет собой оптимизацию для классификации текста. По своей сути задача TF-IDF состоит в том, чтобы идентифицировать ключевые сущности (токены) с учетом суб (текстов) и общего (корпуса) контекста. Благодаря своей ценности и простоте, мы можем использовать возможности TF-IDF не только для текстовых, но и для других доменов. Что необходимо, так это перевести в наш домен его ключевые особенности - сущности, суб и общий контекст. Соответствующим примером является статья Ди Рокко, в которой они используют TF-IDF для создания встраиваемых репозиториев исходного кода, чтобы включить рекомендации по темам (TF = если тема была упомянута для репо, IDF = скорость репозиториев с этот тег). Используя аналогичную интуицию, мы можем использовать TF-IDF для создания рекомендаций по продуктам.

Рекомендации 101

Рекомендации имеют множество подходов, начиная от наивных, таких как всегда предлагать наиболее распространенные, до более сложных, основанных на глубоком обучении. Общая мотивация - предоставлять более релевантный контент, чтобы повысить вовлеченность. Что касается рекомендаций по продуктам, мы также предполагаем, что это побудит клиентов покупать больше. Вызов Netflix в 2006 году стал одной из основных вех на пути к вынесению рекомендаций на передовую; Netflix предложила приз в 1 миллион долларов за алгоритм, который превзойдет их механизм рекомендаций по фильмам. Участвовало более сотни команд, и в 2009 году победившей команде удалось повысить точность Netflix более чем на 10%. Идея, лежащая в основе этих алгоритмов рекомендаций, называется коллаборативная фильтрация; предполагая, что лучшие рекомендации будут аналогичны тем, которые уже отдали предпочтение пользователям. Есть два основных подхода к измерению подобия:

  1. На основе пользователя; подскажите, что нравится подобным пользователям. Сходство, основанное на характеристиках пользователей, покупательских привычках, сходстве корзины и т. Д. Главный недостаток - фонема холодный старт; Рекомендации первого дня невозможны, поскольку до этого необходимо собрать данные о пользователях. Проблема в том, что это классический парадокс курицы и яйца, поскольку рекомендации должны быть основным фактором трафика.
  2. На основе предмета; предлагать товары, похожие на те, что нравятся пользователям. Сходство по описанию товара, категории, изображению и т. Д. Главный недостаток - сужение возможностей; пользователям, купившим определенную футболку, может быть предложена аналогичная футболка, но соответствующая пара обуви, вероятно, выходит за рамки.

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

Анализ рыночной корзины

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

Где нарушаются рекомендации по продуктам

Хотя это интуитивно понятное решение, остается главный вопрос: насколько вероятно, что покупатель купит предложенные товары?. Анализ корзины имеет тенденцию выделять общие продукты (поскольку критерии поддержки), и поэтому такие продукты, как молоко и хлеб (самые популярные товары в супермаркетах), скорее всего, будут предлагаться вместе с любой корзиной. Поскольку покупатель, вероятно, уже знает об этих продуктах и ​​решил не покупать их, насколько вероятна рекомендация изменить их? Это выявляет более неотъемлемую проблему с оценкой систем рекомендаций в целом - поскольку мы предполагаем, что у них много отсутствующих корзин (поскольку клиенты, не имеющие рекомендаций, не знали, что еще покупать, и поэтому их корзины частично отсутствуют), полагаясь на купленные История корзин приведет нас к тому, что мы предпочтем предлагать более распространенные элементы (где точность и отзывчивость на тестовом сплите будут выше). Но что, если только часть наших клиентов добавила носки при покупке кроссовок, и мы хотим поощрять такое поведение? (предложите носки и другим покупателям). Возможным решением может быть другой путь; поиск продуктов с аномальными соединениями в качестве возможного индикатора рекомендации. Предполагая, что продукты, которые сильно связаны друг с другом, могут быть хорошими кандидатами на рекомендацию. Рекомендация на основе логарифмического отношения правдоподобия (LLR) является примером такой реализации. Возвращаясь к тому, с чего мы начали, TF-IDF также может удовлетворить аналогичную потребность.

Модификация TF-IDF для анализа корзин

TF-IDF измеряет, насколько сильна связь объекта (термина) с субконтекстом (текстом) с учетом более широкого контекста (корпуса). В TF-ICF мы настроили TF-IDF для соответствия задачам классификации, установив подконтекст для конкатенированных текстов классов и более широкий контекст для конкатенированных текстов всех классов. Таким образом, мы измерили отношение термина к классу с учетом текстов других классов. В рекомендациях корзины мы ищем пары продуктов с сильной взаимосвязью с другими возможными парами. Например, [milk: product_n] - пара, которая, вероятно, существует для каждого product_n в каталоге, но поэтому она не является аномально сильной. Для достижения этого с помощью TF-IDF мы могли бы описать нашу область данных как отношения сущности (product_x) к субконтексту (продукты, которые были куплены с помощью product_x) с учетом более широкого контекста (для каждого product_n в каталоге, какие продукты были куплены вместе с ним) . Более конкретно алгоритм, которому нужно следовать:

For each product_i in the products catalog:
    Initialize product_i_purchased_together text
    For each basket_i in the purchases that includes product_i:
        For each product_j in basket_i:
            Append product_j to product_i_purchased_together
Calculate TF-IDF (terms=products, corpus=purchased_together texts)
For each product_i in the products catalog:
    Sort product_i_purchased_together terms by their TF-IDF scores
    Product_i recommendations = the top_k terms (products)

Практические советы

  • TF-IDF разоблачает нетривиальные отношения продуктов, такие как [hamburger_bun: hamburger] вместо [hamburger_bun: milk].
  • Важный нюанс, о котором следует помнить, заключается в том, что отношения не симметричны, что имеет смысл (хотя hamburger_bun может указывать на вероятность покупки гамбургера, противоположное отношение может иметь более слабое отношение, не всем нравится есть их бургер в булочке).
  • Поскольку супер-распространенные продукты, такие как молоко, вероятно, будут получать оценки, аналогичные стоп-словам (совсем не значимы), имеет смысл применить некоторый порог оценки значимости перед рекомендациями по подаче и, возможно, вообще игнорировать такие продукты (не включать в расчетные продукты, которые слишком распространены).
  • Поскольку прямое измерение прошлых корзин не является релевантным KPI (мы предполагаем, что это состояние должно быть исправлено), наиболее распространенным способом оценки алгоритма является его AB-тест.

Заключительные примечания

TF-IDF - это классический интуитивно понятный алгоритм выделения ключевых сущностей в тексте. Даже в наши дни, имея множество других продвинутых подходов (особенно в мире НЛП), важно познакомиться со строительными блоками этой области. Более того, меня вдохновляет найти способы использовать классические подходы для решения сегодняшних задач. Будем рады услышать, как вы настроили TF-IDF для ваших особых случаев использования.