Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Машинное обучение в электронной коммерции -
практика использования и подводные камни
Александр Сербул
руководитель направл...
Карл…
Карл, я пишу
хороший код и
люблю свою
работу….
Это очень круто,
пап!
Карл… Карл, я специалист по
BigData….
Это очень круто,
пап!
Но я давно забыл тервер
и диффиренциальное
исчисление и НЕ МОГ...
О чем поговорим…
•Эротические фантазии
на тему нейросетей и
дипленинга
•Классическое ML в
нашей компании –
примеры кейсов,...
«Золотая» лихорадка
•Была бигдата
•Теперь нейронки
•Что происходит,
успеть или забить?
Только правда, только хардкор
•Клянусь говорить
только правду
•Верьте!
•Проверить оооочень
трудно…
Третья волна…
www.deeplearningbook.org
Датасеты становятся больше…
www.deeplearningbook.org
Нейронки – нередко гораздо точнее…
www.deeplearningbook.org
Нейронки становятся больше…
www.deeplearningbook.org
Бигдата и нейронки – созданы друг для друга
•Машины опорных
векторов уходят в
прошлое…
•Факторизация
слоев
•Нелинейность
Подтянулись GPU и железо
•Универсальные GPU
•CUDA
•Работа с тензорами
•Диски, кластера:
Spark, Hadoop/HDFS,
Amazon s3
•Язы...
Парад бесплатных фреймворков
•TensorFlow (Google)
•Torch
•Theano
•Keras
•Deeplearning4j
•CNTK (Microsoft)
•DSSTNE (Amazon)...
Вендоры скупают ученых
•Facebook (Yann LeCun)
•Baidu (Andrew Ng, уже
правда уходит, достали
тупить ☺ )
•Google (Ian Goodfe...
Как работает нейронка?
•Все просто – почти
как наш мозг ☺
•Вспомните
школьные годы – и
все станет понятно
•Регуляризация
(...
Где же подвох? ☺
А он то есть!!!
И не один. ☺
Подвох 1
•Нужна бигдата
•Только
конкретная,
ваша, а не
общедоступная
•Сможете
собрать/купить?
Трус не играет в хоккей
Подвох 2 – семантический разрыв
•Классификация
•Регрессия
•Кластеризация
•Анализ скрытых
факторов в ином
измерении
•Как ув...
Машина Тьюринга и … GTA
Нужносоздаватьновыеабстракции,нужны«нейронные» программисты,
менеджерыи прОдукты
Подвох 3 – всем тут все понятно? ☺
Подвох 3 – а тут? ☺
Подвох 3 – нужно долго учиться
•Хорошая
матподготовка выше
среднего
•Уметь писать код
•Исследовательский
дух, много читать...
Подвох 4 – никаких гарантий
•В интернете -
работает
•На ваших данных –
нет
•Где ошибка? В
данных, в модели, в
коэффициента...
Подвох 5: полная цепочка - сложна
•Сбор данных
•Фильтрация, валидация
•Обучение модели
•Раздача предсказаний
•Контроль кач...
Делаем глубокий вдох…. и
улыбаемся!
О Боже…. снова это…
arxiv.org/abs/1606.07792
О Боже…. снова это…
arxiv.org/abs/1606.07792
Дибилизация алгоритмов!
arxiv.org/abs/1606.07792
• Собирается все что есть…
• Засовывается в нейронку
• Нейронка предсказы...
Кейсы применения
машинного обучения и
нейросетей
Double encoded LSMT
• arxiv.org/pdf/1506.08909.pdf
• Ubuntu Dialogue Corpus
• “Google Brain” team
prototype
«Нейробот»
Embedding+encoding -
каскад сжатия вопроса/контекста
(RNN/FF/CNN, softsign, adam)
Слой векторного умножения
(do...
Свертка - принцип
Свертка – для текстов и чатботов
Классификатор обращений техподдержки
Скрытые слои, 96*96.
Активация – softsign.
Классифицирующийслой,
50-100 категорий.
so...
Распознавание лиц в Битрикс24
Мы начали работу с NTechLab:
* Приемлемое качество
* Готовая облачная платформа
* Простое AP...
Распознавание лиц в Битрикс24
Распознавание лиц в Битрикс24
Face-карт Bitrix24.Time
Другие кейсы применения нейронок и ML
• Предсказание следующего действия (RNN, …)
• Кластеризация (k-means, autoencoders)
...
Сбор Бигдаты для анализа и
ML
Сбор данных для анализа
•Хиты на сайте (логи)
•События, привязанные к cookie (через «счетчик»)
•Логи работы
•Мультиканальн...
Профиль Покупателя
• Все, что есть!
• Пол
• Возраст
• Статус
• URLы, пути
• Обращения в саппорт
• Счетчики
• Средние за кв...
Что собираем мы
Событие
Просмотр
товара
Добавление
в корзину
Заказ Оплата
Заказа
• Кука Пользователя
• Хэш лицензии
• Доме...
Сбор данных для анализа – риски, оценки
•Нагрузка на «счетчик» - нужен nginx/lua, NoSQL-
решение, …
•Много данных – нужен ...
Сервис “1С-Битрикс: BigData”
Сервис “1С-Битрикс: BigData”
Полезные (готовые) инструменты
• Rapidminer
• SAS
• SPSS
• …
Готовые блоки, серверные редакции (hadoop),графики
Полезные библиотеки (бесплатные)
• Spark MLlib
(scala/java/python) –
много данных
• scikit-learn.org (python)
– мало данны...
Рабочее место
аналитика
Аналитик
•Организовать сбор данных
•Минимум программирования
•Работа в инструментах (python, Rapidminer, R, SAS,
SPSS)
•Bi...
Война систем хранения
• SQL на MapReduce: Hive, Pig, Spark SQL
• SQL на MPP (massive parallel processing):
Impala, Presto,...
Визуализация
Визуализация!
Слайд 54
Визуализация!
•Кто мои клиенты (возраст, средний чек,
интересы)?
•Тренды, графы
•Корреляция значений
•2-3, иногда больше и...
Текущая активность клиентов Битрикс24
www.bitrix24.ru/online-domains-map
Текущая активность клиентов Битрикс24
www.bitrix24.ru/online-domains-map
Сервис «Скорость сайта» клиента на
Битрикс
1.Собираем хиты из Amazon Kinesis в Redis
2.Хит содержит метрики js navigation ...
Скорость сайта клиента на Битрикс
Скорость сайта клиента на Битрикс
Скорость сайта клиента на Битрикс
Скорость сайта клиента на Битрикс
Кластерный анализ
Кластерный анализ
• Когда измерений много
• Если «повезет»
• Четкая/нечеткая
• Иерархическая
• Графы
• Данных много/мало
•...
Кластерный анализ
• Иерархическая
• K-means
• C-means
• Spectral
• Density-based (DBSCAN)
• Вероятностные
• Для «больших д...
Кластерный анализ – бизнес-кейсы
• Сегментация клиентов, типов
использования сервиса, …
• Кластеризация«общего» товарного
...
Кластерный анализ – оценки на
программирование
• Данные должны быть уже собраны
• Анализ в Rapidminer (0.1-2 часа)
• Анали...
Кластерный анализ – риски
• Много данных – медленно!
• Тексты, каталоги товаров …
• Как интерпретировать?
• Рецепты:
• Spa...
word2vec, SVD/PCA
• Сжимаем размерность
• «Склеиваем»синонимы
• Skip-gram
• Continuousbag of words (CBOW)
• «Похож» на мат...
Коллаборативная фильтрация – сжатие Товаров
• «Единый» каталог
• Склеить дубликаты
• Передать «смысл» между Товарами
• Улу...
Minhash
 Min-wise independent permutations locality sensitive
hashing scheme
 Снижаем размерность
 Совместима с LSH (сл...
Text shingling
 Shingle – «черепица»
 Устойчивость к вариантам, опечаткам
«Штаны красные махровые в полоску»
{«штан», «т...
Векторизация описания Товара
 Текст: «Штаны красные махровые в полоску»
 Вектор «bag of words»: [0,0,0,1,0,…0,1,0] – ~ 1...
Locality-Sensitive Hashing (LSH)
 Вероятностный метод снижения
размерности
 Использовали для minhashed-векторов
 Bandin...
Кластеризация каталога
 Apache Spark
 2-3 часа, 8 spot-серверов
 10-20 млн. Товаров => 1 млн. кластеров
 Адекватные по...
Персонализация
Персонализация
•Релевантный контент – «угадываем мысли»
•Релевантный поиск
•Предлагаем то, что клиенту нужно как раз сейча...
Объем продаж товаров
•Best-sellers
•Топ-продаж…
•С этим товаром
покупают
•Персональные
рекомендации
«Mining of Massive Dat...
Коллаборативная фильтрация
•Предложи Товары/Услуги, которые есть у твоих
друзей (User-User)
•Предложи к твоим Товарам друг...
Как работает коллаборативная фильтрация
Матрица:
- Пользователь
- Товар
Похожие Пользователи
Похожие Товары
Коллаборативная фильтрация - алгоритмы
• User-User: поиск похожих «в лоб» (kNN), k-d tree, LSH
• Item-Item: Amazon, работа...
Возможности коллаборативной фильтрации
(Item-Item)
•Персональная рекомендация (рекомендуем
посмотреть эти Товары)
•С этим ...
Коллаборативная фильтрация (Item-Item) – сроки,
риски
•Apache Spark MLlib (als), Apache Mahout (Taste) +
неделька
•Объем д...
Content-basedрекомендации
•Купил пластиковые окна – теперь их предлагают
на всех сайтах и смартфоне.
•Купил Toyota, ищу ши...
Content-based рекомендации – реализация,
риски
• Поисковый «движок»: Sphinx,
Lucene (Solr)
• «Обвязка» для данных
• Хранен...
Инвертированный (обратный) индекс
Christopher D. Manning, Prabhakar Raghavan and Hinrich Schutze, "Introduction to Informa...
IR, NLP
Christopher D. Manning, Prabhakar Raghavan and Hinrich Schutze, "Introduction to Information
Retrieval", Cambridge...
Apache Lucene: +/-
1.(-) Нет нормальной поддержки русского языка
2.(-) Нет русской морфологии
3.(-) Документация иногда ос...
Redis
1.Профиль Пользователя: десятки тэгов
2.Стемминг Портера
3.Высокочастотные слова, tf/idf
4.Алгоритмы вытеснения тэго...
Архитектура content-based рекомендаций
Amazon
Kinesis
Java indexing
workers(16)
~1700
событий/сек
Index (disk)
Index(disk)...
Процессы
1.Многопоточный индексатор, java/lucene
2.Amazon Kinesis – как буффер
3.Индекс в папке на диске, вытеснение
4.Как...
Цифры
1.“Потребители”: десятки тысяч интернет-магазинов
2.“Поставщики”: все сайты на Битрикс, больше 100к
3.Тэги Профиля: ...
Цифры
Content-based,collaborative рекомендации - разумно
•Рекомендовать постоянно «возобновляемые»
Товары (молоко, носки, …)
•Ре...
Персонализация в Google Play
arxiv.org/abs/1606.07792
Классификация
Классификация – это не кластеризация!
•Не путать! ;-)
•Кластеризция – автоматическая и если повезет
•Классификация – учим ...
Классификация
Разбиваем по группам,
обучение
• Бинарная
• Мультиклассовая
Классификация – бизнес-кейсы
• Удержание: найти клиентов, которые
скоро уйдут (churn-rate)
• Найти клиентов, готовых стать...
Классификация – бизнес-кейсы
•Ранжирование/скоринг
лидов/сделок в CRM
•Salesforce Einstein
•Эвристика, простые/классически...
Классификация – тонкости
•А как/чем удержать клиентов?
•Определение релевантных групп – зондирование
(рассылки, опросы), б...
Классификация – реализация, риски
•Определение, нормализация атрибутов
•Feature engineering
•Выбор алгоритма, kernel
•Spar...
Классификатор обращений техподдержки
Скрытые слои, 96*96.
Активация – softsign.
Классифицирующийслой,
50-100 категорий.
so...
Классификация – качество
•Confusion matrix
•Recall/precision
•Kappa
•AUC > 0.5
Регрессия
Регрессия
•Предсказать «циферку»
•Стоимость квартиры, автомобиля на рынке
•Ценность клиента для магазина
•Зарплата на данн...
Регрессия – customer lifetime value (CLV)
•Пришел клиент, а он потенциально прибыльный!
•Система лояльности, удержания
•По...
Регрессия – реализация, риски
•Выявление атрибутов
•Выбор алгоритма
•Spark MLlib – не работает, scikit-learn – 1-2 дня
Стратегии
увеличения
прибыли
Стратегии
•Изучаем клиентов (кластерный анализ,
зондирование)
•Привлечь нового дороже чем удержать старого?
•Высокий churn...
На закуску!
А что влияет на конверсию в …?
•Собираем данные (хиты, логи,
анкетирование)
•Строим дерево решений
•В Rapidminer – полчаса...
Next Best Action/Offer
•Классификация
•Рекуррентные сети (LSTM)
•Neural Turing Machine (NTM,
Google)/Memory networks (Face...
Спасибо за
внимание!
Вопросы?
Александр Сербул
@AlexSerbul
Alexandr Serbul
serbul@1c-bitrix.ru
Машинное обучение в электронной коммерции - практика использования и подводные камни / Александр Сербул (1С-Битрикс)
Upcoming SlideShare
Loading in …5
×

Машинное обучение в электронной коммерции - практика использования и подводные камни / Александр Сербул (1С-Битрикс)

302 views

Published on

РИТ++ 2017, секция ML + IoT + ИБ
Зал Белу-Оризонти, 5 июня, 16:00

Тезисы:
http://ritfest.ru/2017/abstracts/2532.html

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

Особое внимание уделим технике использования популярных платформ и библиотек:
- Apache Spark,
- Spark MLlib,
- Hadoop,
- Amazon Kinesns.

Отдельно остановимся на особенностях обработки "больших данных", выборе и разработке параллельных алгоритмов.

Published in: Engineering
  • Be the first to comment

Машинное обучение в электронной коммерции - практика использования и подводные камни / Александр Сербул (1С-Битрикс)

  1. 1. Машинное обучение в электронной коммерции - практика использования и подводные камни Александр Сербул руководитель направления
  2. 2. Карл… Карл, я пишу хороший код и люблю свою работу…. Это очень круто, пап!
  3. 3. Карл… Карл, я специалист по BigData…. Это очень круто, пап! Но я давно забыл тервер и диффиренциальное исчисление и НЕ МОГУ ИХ ВСПОМНИТЬ, даже за отпуск!
  4. 4. О чем поговорим… •Эротические фантазии на тему нейросетей и дипленинга •Классическое ML в нашей компании – примеры кейсов, рисков, алгоритмов
  5. 5. «Золотая» лихорадка •Была бигдата •Теперь нейронки •Что происходит, успеть или забить?
  6. 6. Только правда, только хардкор •Клянусь говорить только правду •Верьте! •Проверить оооочень трудно…
  7. 7. Третья волна… www.deeplearningbook.org
  8. 8. Датасеты становятся больше… www.deeplearningbook.org
  9. 9. Нейронки – нередко гораздо точнее… www.deeplearningbook.org
  10. 10. Нейронки становятся больше… www.deeplearningbook.org
  11. 11. Бигдата и нейронки – созданы друг для друга •Машины опорных векторов уходят в прошлое… •Факторизация слоев •Нелинейность
  12. 12. Подтянулись GPU и железо •Универсальные GPU •CUDA •Работа с тензорами •Диски, кластера: Spark, Hadoop/HDFS, Amazon s3 •Языки: Scala
  13. 13. Парад бесплатных фреймворков •TensorFlow (Google) •Torch •Theano •Keras •Deeplearning4j •CNTK (Microsoft) •DSSTNE (Amazon) •Caffe
  14. 14. Вендоры скупают ученых •Facebook (Yann LeCun) •Baidu (Andrew Ng, уже правда уходит, достали тупить ☺ ) •Google (Ian Goodfellow) •openai.com …
  15. 15. Как работает нейронка? •Все просто – почти как наш мозг ☺ •Вспомните школьные годы – и все станет понятно •Регуляризация (dropout) = алкоголь ☺ www.deeplearningbook.org
  16. 16. Где же подвох? ☺
  17. 17. А он то есть!!! И не один. ☺
  18. 18. Подвох 1 •Нужна бигдата •Только конкретная, ваша, а не общедоступная •Сможете собрать/купить?
  19. 19. Трус не играет в хоккей
  20. 20. Подвох 2 – семантический разрыв •Классификация •Регрессия •Кластеризация •Анализ скрытых факторов в ином измерении •Как увеличить прибыль? •Как удержать клиента? •Как предложить самое нужное?
  21. 21. Машина Тьюринга и … GTA Нужносоздаватьновыеабстракции,нужны«нейронные» программисты, менеджерыи прОдукты
  22. 22. Подвох 3 – всем тут все понятно? ☺
  23. 23. Подвох 3 – а тут? ☺
  24. 24. Подвох 3 – нужно долго учиться •Хорошая матподготовка выше среднего •Уметь писать код •Исследовательский дух, много читать •Опыт и интуиция
  25. 25. Подвох 4 – никаких гарантий •В интернете - работает •На ваших данных – нет •Где ошибка? В данных, в модели, в коэффициентах, в коде, в голове??
  26. 26. Подвох 5: полная цепочка - сложна •Сбор данных •Фильтрация, валидация •Обучение модели •Раздача предсказаний •Контроль качества
  27. 27. Делаем глубокий вдох…. и улыбаемся!
  28. 28. О Боже…. снова это… arxiv.org/abs/1606.07792
  29. 29. О Боже…. снова это… arxiv.org/abs/1606.07792
  30. 30. Дибилизация алгоритмов! arxiv.org/abs/1606.07792 • Собирается все что есть… • Засовывается в нейронку • Нейронка предсказывает вероятность клика/покупки приложения – для каждого приложения из отобранных • Приложения сортируются и отображаются. Все! ☺
  31. 31. Кейсы применения машинного обучения и нейросетей
  32. 32. Double encoded LSMT • arxiv.org/pdf/1506.08909.pdf • Ubuntu Dialogue Corpus • “Google Brain” team prototype
  33. 33. «Нейробот» Embedding+encoding - каскад сжатия вопроса/контекста (RNN/FF/CNN, softsign, adam) Слой векторного умножения (dot product) либо другой kernel Корректирующий слой (feed forward + softmax) Ответ сети: похожесть вопроса и ответа (0-1) TF-IDF/Ngram – токенизация TF-IDF/Ngram - токенизация Embedding+encoding - каскад сжатия ответа (RNN/FF/CNN, softsign, adam) "Вопрос" "Ответ" Кластер веб-серверов, Кэширование, REST-API GPUs (TitanX) Возможные ответы на контекст Глубокая нейронная сеть с двумя входами и одним выходом с адаптивной архитектурой. Внутри сети происходит совмещение семантических пространств вопросов и ответов.
  34. 34. Свертка - принцип
  35. 35. Свертка – для текстов и чатботов
  36. 36. Классификатор обращений техподдержки Скрытые слои, 96*96. Активация – softsign. Классифицирующийслой, 50-100 категорий. softmax Ответ сети: Категория1 : 90% Категория2: 7% Категория3: 3% Ngram3 токенизация. Сжатие хэшированием до 10 000 триграм. TF IDF векторизатор. Текст: «Как поменять пароль на сайте? Где найти эту форму в админке?» Глубокий классификатор, использующий ngrams3 векторизатор и сжимающее хэширование входного вектора. Используем взвешенную cost-функцию для балансирования неравномерного числа примеров в категориях. Иногда добавляем сверточные слои. Иногда лучше работают рекуррентные слои. Drop out: 0.85, l2: 0.001, learning rate: 0.1, adam, batch=128. В обученной сети: 1-3 миллиона параметров. 10000*96, входной слой. Активация - softsign Фреймворк: deeplearning4j Веб-сервер: jetty. Нейронная сеть – набор файлов на диске (10-20 МБ). Кеширование сетей в памяти. Выдача результатов через json rest API
  37. 37. Распознавание лиц в Битрикс24 Мы начали работу с NTechLab: * Приемлемое качество * Готовая облачная платформа * Простое API * База лиц Вконтакте (проект FindFace)
  38. 38. Распознавание лиц в Битрикс24
  39. 39. Распознавание лиц в Битрикс24 Face-карт Bitrix24.Time
  40. 40. Другие кейсы применения нейронок и ML • Предсказание следующего действия (RNN, …) • Кластеризация (k-means, autoencoders) • Кто из клиентов уйдет, кто из сотрудников уволится (churn rate: FFN, CNN) • Сколько стоит квартирка (regression) • Анализ причин (InfoGANs) • Персонализация
  41. 41. Сбор Бигдаты для анализа и ML
  42. 42. Сбор данных для анализа •Хиты на сайте (логи) •События, привязанные к cookie (через «счетчик») •Логи работы •Мультиканальность
  43. 43. Профиль Покупателя • Все, что есть! • Пол • Возраст • Статус • URLы, пути • Обращения в саппорт • Счетчики • Средние за квартал, месяц, день
  44. 44. Что собираем мы Событие Просмотр товара Добавление в корзину Заказ Оплата Заказа • Кука Пользователя • Хэш лицензии • Домен • ID товара • Название Товара • Категории Товара • ID рекомендации • ряд других
  45. 45. Сбор данных для анализа – риски, оценки •Нагрузка на «счетчик» - нужен nginx/lua, NoSQL- решение, … •Много данных – нужен кластер для обработки: hadoop+spark/amazon/… •Реализация: дни
  46. 46. Сервис “1С-Битрикс: BigData”
  47. 47. Сервис “1С-Битрикс: BigData”
  48. 48. Полезные (готовые) инструменты • Rapidminer • SAS • SPSS • … Готовые блоки, серверные редакции (hadoop),графики
  49. 49. Полезные библиотеки (бесплатные) • Spark MLlib (scala/java/python) – много данных • scikit-learn.org (python) – мало данных • R
  50. 50. Рабочее место аналитика
  51. 51. Аналитик •Организовать сбор данных •Минимум программирования •Работа в инструментах (python, Rapidminer, R, SAS, SPSS) •Bigdata – как SQL
  52. 52. Война систем хранения • SQL на MapReduce: Hive, Pig, Spark SQL • SQL на MPP (massive parallel processing): Impala, Presto, Amazon RedShift, Vertica • NoSQL: Cassandra, Hbase, Amazon DynamoDB • Классика: MySQL, MS SQL, Oracle, …
  53. 53. Визуализация
  54. 54. Визуализация! Слайд 54
  55. 55. Визуализация! •Кто мои клиенты (возраст, средний чек, интересы)? •Тренды, графы •Корреляция значений •2-3, иногда больше измерений •«Дешевле/проще» кластеризации
  56. 56. Текущая активность клиентов Битрикс24 www.bitrix24.ru/online-domains-map
  57. 57. Текущая активность клиентов Битрикс24 www.bitrix24.ru/online-domains-map
  58. 58. Сервис «Скорость сайта» клиента на Битрикс 1.Собираем хиты из Amazon Kinesis в Redis 2.Хит содержит метрики js navigation timing. 3.Храним последние 1250 хитов (redis list) 4.Удаляем 20% самых долгих 5.Рассчитываем медиану времени отображения страницы в кластере 6.Отдаем на карту, jsonp, RemoteObjectManager
  59. 59. Скорость сайта клиента на Битрикс
  60. 60. Скорость сайта клиента на Битрикс
  61. 61. Скорость сайта клиента на Битрикс
  62. 62. Скорость сайта клиента на Битрикс
  63. 63. Кластерный анализ
  64. 64. Кластерный анализ • Когда измерений много • Если «повезет» • Четкая/нечеткая • Иерархическая • Графы • Данных много/мало • Интерпретация
  65. 65. Кластерный анализ • Иерархическая • K-means • C-means • Spectral • Density-based (DBSCAN) • Вероятностные • Для «больших данных»
  66. 66. Кластерный анализ – бизнес-кейсы • Сегментация клиентов, типов использования сервиса, … • Кластеризация«общего» товарного каталога • Кластеризацияграфа связей сайтов (пересечениеаудитории) • Маркетинг работает с целевыми группами, информация разбита на «смысловые облака».
  67. 67. Кластерный анализ – оценки на программирование • Данные должны быть уже собраны • Анализ в Rapidminer (0.1-2 часа) • Анализ в Spark Mllib (1-2 дня, много данных) • Анализ в scikit-learn – аналогично (мало данных) • На выходе: список кластерных групп, иногда визуализация. • Метрики качества кластеризации.
  68. 68. Кластерный анализ – риски • Много данных – медленно! • Тексты, каталоги товаров … • Как интерпретировать? • Рецепты: • Spark MLlib, векторизация текста, LSH (locality sensetive hashing), word2vec
  69. 69. word2vec, SVD/PCA • Сжимаем размерность • «Склеиваем»синонимы • Skip-gram • Continuousbag of words (CBOW) • «Похож» на матричную факторизацию
  70. 70. Коллаборативная фильтрация – сжатие Товаров • «Единый» каталог • Склеить дубликаты • Передать «смысл» между Товарами • Улучшить качество персональных рекомендаций • Семантическое сжатие размерности, аналог матричной факторизации • Скорость • Ранжирование результатов
  71. 71. Minhash  Min-wise independent permutations locality sensitive hashing scheme  Снижаем размерность  Совместима с LSH (следующий слайд) Pr[ hmin(A) = hmin(B) ] = J(A,B)  Размер сигнатуры: 50-500 simhash
  72. 72. Text shingling  Shingle – «черепица»  Устойчивость к вариантам, опечаткам «Штаны красные махровые в полоску» {«штан», «таны», «аны », «ны к», «ы кра», «крас», …} «Красные полосатые штаны»
  73. 73. Векторизация описания Товара  Текст: «Штаны красные махровые в полоску»  Вектор «bag of words»: [0,0,0,1,0,…0,1,0] – ~ 10000 -1000000 элементов (kernel hack)  Minhash-сигнатура после shingling:  [1243,823,-324,12312,…]– 100-500 элементов, совместима с LSH
  74. 74. Locality-Sensitive Hashing (LSH)  Вероятностный метод снижения размерности  Использовали для minhashed-векторов  Banding: b – корзины, r – элементов в корзине. P{ “Векторы совпадут хотя-бы в одной корзине” }:
  75. 75. Кластеризация каталога  Apache Spark  2-3 часа, 8 spot-серверов  10-20 млн. Товаров => 1 млн. кластеров  Адекватные по смыслу кластера  Персональные рекомендации - стали в разы «лучше»  DynamoDB – хранение кластроидов
  76. 76. Персонализация
  77. 77. Персонализация •Релевантный контент – «угадываем мысли» •Релевантный поиск •Предлагаем то, что клиенту нужно как раз сейчас •Увеличение лояльности, конверсии
  78. 78. Объем продаж товаров •Best-sellers •Топ-продаж… •С этим товаром покупают •Персональные рекомендации «Mining of Massive Datasets», 9.1.2: Leskovec, Rajaraman, Ullman (Stanford University)
  79. 79. Коллаборативная фильтрация •Предложи Товары/Услуги, которые есть у твоих друзей (User-User) •Предложи к твоим Товарам другие связанные с ними Товары (Item-Item): «сухарики к пиву»
  80. 80. Как работает коллаборативная фильтрация Матрица: - Пользователь - Товар Похожие Пользователи Похожие Товары
  81. 81. Коллаборативная фильтрация - алгоритмы • User-User: поиск похожих «в лоб» (kNN), k-d tree, LSH • Item-Item: Amazon, работает гораздо быстрее • Item-Item «плюшки» - с этим Товаром покупают • Mahout Taste (матрица в памяти) • Spark MLLib (ALS) Товары в моем профиле Их связи с другими Товарами Взвешенное среднее для предсказания моих невыраженных интересов
  82. 82. Возможности коллаборативной фильтрации (Item-Item) •Персональная рекомендация (рекомендуем посмотреть эти Товары) •С этим Товаром покупают/смотрят/… (глобальная) •Топ Товаров на сайте
  83. 83. Коллаборативная фильтрация (Item-Item) – сроки, риски •Apache Spark MLlib (als), Apache Mahout (Taste) + неделька •Объем данных •Объем модели, требования к «железу»
  84. 84. Content-basedрекомендации •Купил пластиковые окна – теперь их предлагают на всех сайтах и смартфоне. •Купил Toyota, ищу шины, предлагают шины к Toyota
  85. 85. Content-based рекомендации – реализация, риски • Поисковый «движок»: Sphinx, Lucene (Solr) • «Обвязка» для данных • Хранение профиля Клиента • Реализация: неделька. Риски – объем данных, языки.
  86. 86. Инвертированный (обратный) индекс Christopher D. Manning, Prabhakar Raghavan and Hinrich Schutze, "Introduction to Information Retrieval", Cambridge University Press. 2008.
  87. 87. IR, NLP Christopher D. Manning, Prabhakar Raghavan and Hinrich Schutze, "Introduction to Information Retrieval", Cambridge University Press. 2008.
  88. 88. Apache Lucene: +/- 1.(-) Нет нормальной поддержки русского языка 2.(-) Нет русской морфологии 3.(-) Документация иногда оставляет желать лучшего 4.(-) Нет решения для 100% онлайн индексации 5.(+) Компактный индекс (гигабайты) 6.(+) Лаконичное API 7.(+) Транзакционность 8.(+) Thread-safety
  89. 89. Redis 1.Профиль Пользователя: десятки тэгов 2.Стемминг Портера 3.Высокочастотные слова, tf/idf 4.Алгоритмы вытеснения тэгов 5.Куда можно развивать… (word2vec, glove, синонимы ...)
  90. 90. Архитектура content-based рекомендаций Amazon Kinesis Java indexing workers(16) ~1700 событий/сек Index (disk) Index(disk)Redis (profiles) Раздающий Servlet
  91. 91. Процессы 1.Многопоточный индексатор, java/lucene 2.Amazon Kinesis – как буффер 3.Индекс в папке на диске, вытеснение 4.Как реализован “онлайн” - выдать секрет :-) 5.Раздающий Servlet
  92. 92. Цифры 1.“Потребители”: десятки тысяч интернет-магазинов 2.“Поставщики”: все сайты на Битрикс, больше 100к 3.Тэги Профиля: название страницы, h1 4.Индекс Товаров: название, разделы 5.Индекс: гигабайты, сотня файлов в папке
  93. 93. Цифры
  94. 94. Content-based,collaborative рекомендации - разумно •Рекомендовать постоянно «возобновляемые» Товары (молоко, носки, …) •Рекомендовать фильм/телевизор – один раз до покупки •Учет пола, возраста, размера, …
  95. 95. Персонализация в Google Play arxiv.org/abs/1606.07792
  96. 96. Классификация
  97. 97. Классификация – это не кластеризация! •Не путать! ;-) •Кластеризция – автоматическая и если повезет •Классификация – учим компьютер сами и «везет» чаще •Пример: фильтрация спама, которую доучиваем
  98. 98. Классификация Разбиваем по группам, обучение • Бинарная • Мультиклассовая
  99. 99. Классификация – бизнес-кейсы • Удержание: найти клиентов, которые скоро уйдут (churn-rate) • Найти клиентов, готовых стать платными • Найти клиентов, которые готовы купить новую услугу • Найти готовых уволиться • Определить у клиента – пол!
  100. 100. Классификация – бизнес-кейсы •Ранжирование/скоринг лидов/сделок в CRM •Salesforce Einstein •Эвристика, простые/классические модели •Место нейронок
  101. 101. Классификация – тонкости •А как/чем удержать клиентов? •Определение релевантных групп – зондирование (рассылки, опросы), база моделей •Оценка качества моделей
  102. 102. Классификация – реализация, риски •Определение, нормализация атрибутов •Feature engineering •Выбор алгоритма, kernel •Spark MLlib, scikit-learn – 2-3 дня •Rapidminer – полчаса •Классификация в Битрикс24, кейсы
  103. 103. Классификатор обращений техподдержки Скрытые слои, 96*96. Активация – softsign. Классифицирующийслой, 50-100 категорий. softmax Ответ сети: Категория1 : 90% Категория2: 7% Категория3: 3% Ngram3 токенизация. Сжатие хэшированием до 10 000 триграм. TF IDF векторизатор. Текст: «Как поменять пароль на сайте? Где найти эту форму в админке?» Глубокий классификатор, использующий ngrams3 векторизатор и сжимающее хэширование входного вектора. Используем взвешенную cost-функцию для балансирования неравномерного числа примеров в категориях. Иногда добавляем сверточные слои. Иногда лучше работают рекуррентные слои. Drop out: 0.85, l2: 0.001, learning rate: 0.1, adam, batch=128. В обученной сети: 1-3 миллиона параметров. 10000*96, входной слой. Активация - softsign Фреймворк: deeplearning4j Веб-сервер: jetty. Нейронная сеть – набор файлов на диске (10-20 МБ). Кеширование сетей в памяти. Выдача результатов через json rest API
  104. 104. Классификация – качество •Confusion matrix •Recall/precision •Kappa •AUC > 0.5
  105. 105. Регрессия
  106. 106. Регрессия •Предсказать «циферку» •Стоимость квартиры, автомобиля на рынке •Ценность клиента для магазина •Зарплата на данную вакансию •и т.д.
  107. 107. Регрессия – customer lifetime value (CLV) •Пришел клиент, а он потенциально прибыльный! •Система лояльности, удержания •Подарки, скидки, …
  108. 108. Регрессия – реализация, риски •Выявление атрибутов •Выбор алгоритма •Spark MLlib – не работает, scikit-learn – 1-2 дня
  109. 109. Стратегии увеличения прибыли
  110. 110. Стратегии •Изучаем клиентов (кластерный анализ, зондирование) •Привлечь нового дороже чем удержать старого? •Высокий churn-rate и CLV – удерживаем релевантным предложением •Меньше «тупого» спама - больше лояльность •Персонализированный контент
  111. 111. На закуску!
  112. 112. А что влияет на конверсию в …? •Собираем данные (хиты, логи, анкетирование) •Строим дерево решений •В Rapidminer – полчаса •В Spark MLlib – чуть больше.
  113. 113. Next Best Action/Offer •Классификация •Рекуррентные сети (LSTM) •Neural Turing Machine (NTM, Google)/Memory networks (Facebook) •Attention •GANs (CGAN, InfoGAN, …)
  114. 114. Спасибо за внимание! Вопросы? Александр Сербул @AlexSerbul Alexandr Serbul serbul@1c-bitrix.ru

×