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

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

AvitoTech
April 18, 2018

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

AvitoTech

April 18, 2018
Tweet

More Decks by AvitoTech

Other Decks in Science

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. 11 11 11 • Пользователя, как правило, интересует типовой товар:

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

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

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

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

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

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

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

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