миллиона активных пользователей в месяц (каждый 4-ый житель России пользуется Авито каждый месяц) • 4 платформы: avito.ru, m.avito.ru, Android, iOS С какими объемами данных мы имеем дело?
• на который есть много активных объявлений, • объявления быстро закрываются • Большая размерность и разреженность user-item матрицы использования объявлений • Кластеризация позволяет существенно снизить время обучения модели • Мы можем рекомендовать пользователям объявления из интересующих их кластеров, что позволяет реже переобучать модель Предпосылки к созданию модели кластеризации
инфомодели - микрокатегорий • Добавляем априорное знание о производителях (там, где они есть) • Кластеризуем объявления внутри производителя/ микрокатегории • Радуемся / расстраиваемся Устройство модели 1
описание, цена, параметры): 53M объявлений, 11K микрокатегорий/производителей (по 4.5K на микрокатегорию, max 772K) • Предобработка текстовых данных: токенизация, фильтрация регулярными выражениями • Извлечение признаков: bag-of-words, отбор токенов, на выходе разреженные-матрицы • Кластеризация: EM-алгоритм (на основе подхода от eBay: Ye Chen, John F. Canny. Recommending ephemeral items at web scale) Подготовка данных 1
k • Весь pipeline ~8 часов (большая часть занимает предобработка данных) • Есть эффективный способ поместить новое объявление в существующий кластер, сложность • Ядро написано на Numpy/Scipy/Cython Эффективность алгоритма
• (Почти) в каждом селлере живет SEO-шник • Использовать более продвинутые методы nlp / text-mining • Сложно оценить качество кластеризации алгоритмически • Инструмент по визуализации • Большое количество неинтерпретируемых кластеров • Добавление supervised-разметки Проблемы и решения 2