Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Кластеризация волатильных объявлений с помощью ...

AvitoTech
February 27, 2018

Кластеризация волатильных объявлений с помощью EM-алгоритма — Василий Лексин (Avito)

Расскажу, как можно делать unsupervised кластеризацию короткоживущих объявлений на примере Avito. Данный подход позволяет получить устойчивых кластеры товаров для последующего применения в алгоритмах рекомендаций. Представлю оптимизированный EM-алгоритм, способный эффективно обрабатывать огромные массивы данных. Расскажу про методики оценки качества кластеризации и о прикладных применениях алгоритма.

Avito Data Science Meetup: Personalization
27/02/2018
https://avitotech.timepad.ru/event/665814/

AvitoTech

February 27, 2018
Tweet

More Decks by AvitoTech

Other Decks in Technology

Transcript

  1. 2 2 2 • 53 миллионов активных объявлений • 32

    миллиона активных пользователей в месяц (каждый 4-ый житель России пользуется Авито каждый месяц) • 4 платформы: avito.ru, m.avito.ru, Android, iOS С какими объемами данных мы имеем дело?
  2. 4 4 4 • User-to-item: • Объявления, которые в настоящий

    момент ищет пользователь • Дополняющие товары/услуги • User-to-category: • Категории текущих интересов пользователя • Кросс-категориальные рекомендации • Item-to-item: • Рекомендации похожих объявлений • Дополняющие товары/услуги • Personalized search • Саджесты поиска • Персонализованный поиск Актуальные задачи рекомендаций
  3. 10 10 10 • Пользователя, как правило, интересует типовой товар:

    • на который есть много активных объявлений, • объявления быстро закрываются • Лучше строить рекомендации не на конкретных объявлениях, а на типовых товарах • Объявления создаются обычными пользователями: много неполных описаний Специфика рекомендаций на Авито
  4. 12 12 12 • Большая размерность и разреженность user-item матрицы

    при использовании объявлений • Кластеризация позволяет существенно снизить время обучения модели • Мы можем рекомендовать пользователям объявления из интересующих их кластеров, что позволяет реже переобучать модель Предпосылки к созданию модели кластеризации
  5. 13 13 13 • Начинаем с самого нижнего уровня текущей

    инфомодели - микрокатегорий • Добавляем априорное знание о производителях (там, где они есть) • Кластеризуем объявления внутри производителя/ микрокатегории • Радуемся / расстраиваемся Устройство модели 1
  6. 14 14 14 • Загрузка данных об объявлениях (микрокатегория, заголовок,

    описание, цена, параметры): 53M объявлений, 11K микрокатегорий/производителей (по 4.5K на микрокатегорию, max 772K) • Предобработка текстовых данных: токенизация, фильтрация регулярными выражениями • Извлечение признаков: bag-of-words, отбор токенов, на выходе разреженные-матрицы • Кластеризация: EM-алгоритм (на основе подхода от eBay: Ye Chen, John F. Canny. Recommending ephemeral items at web scale) Подготовка данных 1
  7. 20 20 20 • Консистентность кластеров: среднее значение p на

    top N=5 словах с максимальным p для кластера • Оптимизируем количество кластеров k методом локтя для каждой микрокатегории Оценка качества кластеризации
  8. 21 21 21 • 195К кластеров • В среднем 17

    кластеров на микрокатегорию, максимум 2К • В среднем по 270 объявлении в кластере (максимум 10К) Оценка качества кластеризации
  9. 24 24 24 • Обучение EM-алгоритма 1-2 часа с оптимизацией

    k • Весь pipeline ~8 часов (большая часть предобработка данных) • Есть эффективный способ поместить новое объявление в существующий кластер, сложность • Ядро написано на Numpy/Scipy/Cython Эффективность алгоритма
  10. 25 25 25 • Неполные тексты • Добавление картиночных признаков

    • (Почти) в каждом селлере живет SEO-шник • Использовать более продвинутые методы nlp / text-mining • Сложно оценить качество кластеризации алгоритмически • Инструмент по визуализации • Большое количество не интерпретируемых кластеров • Добавление supervised-разметки Проблемы и решения 2
  11. 26 26 26 • Модели рекомендаций • Дополнителнительные признаки в

    моделях машинного обучения • Расширение инфомодели • Улучшение поиска Как можно использовать кластеризацию? (и зачем) 2