Upload
ontico
View
1.059
Download
0
Embed Size (px)
Citation preview
Бигдата - как добывать золото из данныхАлександр Сербул,ООО «1С-Битрикс»
Карл, я открыл страшную тайну Bigdata и машинного обучения
Это очень интересно, пап!
Почти никто не понимает, как оно
работает!ПОЧТИ НИКТО!!!
О ЧЕМ ПОГОВОРИМ•Для менеджеров, без математики!•Понятные алгоритмы и техники•Полезные для электронной торговли•В рамках Bigdata
Слайд 4
Если слушать внимательно, то мы сможем …• Разобраться в обширной
терминологии• Понять и простить алгоритмы и
их пользу для бизнеса• Оценить и организовать
эффективный процесс в компании
• В деталях понять, как мы сделали сервис «1С-Битрикс: BigData» и как хотим его развивать дальше
… и отпустить
Кратко о себе• Люблю писать работающий,
лаконичный код к дедлайну• Java, Scala, Python, PHP, C, Bash• Люблю unix и интернет• Так и не научился ООП• Говорю много и быстро
Что происходит вокруг?• Шумиха вокруг «больших
данных»• Продукты и сервисы для
извлечения прибыли из Bigdata
• Очень высокий уровень вхождения
• Непонимание разных областей
Заголовок слайда• Текст слайда, рисунки. Старайтесь не захламлять
текст лишними данными, параметрами. Вот немного тезисов:
• Для демонстрации используются экраны с соотношением сторон 4x4!;
• Залы будут длинными (в среднем около 20 метров), поэтому текст должен быть заметным;
• Код на слайде – плохая идея, он плохо читается издалека;
• Не забывайте выделять ключевые моменты;• Предпочтительные форматы презентации –
Microsoft Power Point и PDF.Нас соблазняют, в
прямом смысле!
Amazon.com• Персональные, не
персональные
Amazon.com• Персональные, не
персональные
Как соблазнять?• Не персональные «крючки»:- Топ продаж (best sellers)- С этим Товаром покупают
(аксессуары)- С этим Товаром смотрят- Другие смотрят сейчас- Скидка на очень популярный товар
Небольшой набор товаров. Хвост. Спам – для некоторых.
Как продать из «хвоста»?
«Mining of Massive Datasets», 9.1.2: Leskovec, Rajaraman, Ullman (Stanford University)
Как соблазнять?• Персональные «крючки»:Рекомендуем именно вам в данный момент:- Купить, посмотреть- Люди, похожие на вас
(«близкие по духу»)- «Хорошая» скидка,
«хорошая» цена- Полезный контент- Релевантный поиск
Атака
Ктулху
на наш
мозг…
Учиться – просто некогда
Computer Science
Высшая математик
а
Теория вероятносте
й
Математическая статистика
Программная инженерия
Машинное обучение
Параллельные алгоритмы Обработка
«больших данных»
Линейная алгебра
Информация - «только для избранных»
• Wikipedia • Google…• http://www.machinelearning.ru
Уровень вхождения
Межрассовое скрещивание
Докажи-ка теорему Байеса!
Боевое карате• Окинава, XIX век• Доступность• Массовость• Сила – не нужна• Разумный уровень
вхождения• Эффективность против
самураев!
Исходные данные• Целое: -4, 23• Число с плавающей точкой: 1.34, 67.91• Одно из значений (полиномиальное):
«красный», «синий», «зеленый»• Биномиальный: да/нет, M/F• Даты• ГрафыВыбросы
Элементарная статистика
• Среднее, дисперсия• Линейная
корреляция• Mutual Information,
Maximal information coefficient (MIC)
Maximal information coefficient (MIC)
Профиль Покупателя• Все, что есть!• Пол• Возраст• Статус• URLы, пути• Обращения в саппорт• Счетчики• Средние за квартал, месяц, день
Профиль Покупателя
Профиль Покупателя• Выбираем модель• Feature engineering• Выбираем kernel• Подбираем параметры• Измеряем качество
Модели…
Модели…
«Machine Learning: A Probabilistic Perspective», Kevin P. Murphy, The MIT Press 2012
Отличия моделей• Генеративные: скорость обучения,
добавляем классы без переобучения, пропущенные значения = ОК
• Дискриминативные: feature preprocessing
• Параметрические – небольшой размер в памяти
• Непараметрические – коллаборативная фильтрация, k-NN,…
Сбор данных для анализа• Хиты на сайте (логи)• События, привязанные к
cookie (через «счетчик»)• Логи работы• Мультиканальность
Что собираем мы• Кука Пользователя• Хэш лицензии• Домен• ID товара• Название Товара• Категории Товара• ID рекомендации• ряд других
Событие
Просмотр товара
Добавление в корзину
Заказ Оплата Заказа
Технологии• Нагрузка на «счетчик» -
nginx/lua, NoSQL-решение, …• Amazon Kinesis, Apache Kafka
…• Много данных – нужен
кластер для обработки: hadoop+spark/amazon/…
• Реализация: дни
Как мы собираем данные
Как мы собираем данные
Полезные (готовые) инструменты• Rapidminer• SAS• SPSS• RStudio• Готовые блоки, серверные
редакции (hadoop), графики
Библиотеки• Spark MLlib (scala/java/python) –
много данных• scikit-learn.org (python) – «мало»
данных• R + Azure
Война систем хранения• 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, …
Собаки «нерезанные»
СлономанияDoug Cutting• Yahoo!• Apache Lucene• Apache
Hadoop/MapReduce• Cloudera
Персонализация
Content-based рекомендации• Купил пластиковые окна –
теперь их предлагают на всех сайтах и смартфоне, в Windows 10 и во сне.
• Купил Toyota, ищу шины, предлагают шины к Toyota вверху списка
• Vector space model, tf/idf• word2vec
Content-based рекомендации
word2vec, SVD/PCA• Сжимаем
размерность• «Склеиваем»
синонимы• Skip-gram• Continuous bag of
words (CBOW)• «Похож» на
матричную факторизацию
Content-based рекомендации – технологии• Поисковый «движок»: Sphinx,
Lucene (Solr)• «Обвязка» для данных• Хранение профиля Клиента• Реализация: неделька. Риски –
объем данных, языки.
Коллаборативная фильтрация
• Предложи Товары/Услуги, которые есть у твоих друзей (User-User)
• Предложи к твоим Товарам другие, связанные с ними Товары (Item-Item): «сухарики к пиву»
Коллаборативная фильтрация
• User-User: поиск похожих «в лоб» (kNN), k-d tree, LSH
• Item-Item: Amazon, работает гораздо быстрее
• Item-Item «плюшки» - с этим Товаром покупают
• Mahout Taste (матрица в памяти)• Spark MLLib (ALS)
Коллаборативная фильтрация
Я обещал, что не будет математики?
Это была шутка
Хорошо помогает при умственных
нагрузках:
Сжатие Товаров• «Единый» каталог• Склеить дубликаты• Передать «смысл» между
Товарами• Улучшить качество
персональных рекомендаций• Семантическое сжатие
размерности, аналог матричной факторизации
• Скорость• Ранжирование результатов
MinhashMin-wise independent permutations
locality sensitive hashing schemeСнижаем размерностьСовместима с LSH (следующий
слайд)Pr[ hmin(A) = hmin(B) ] = J(A,B)Размер сигнатуры: 50-500simhash
Text shinglingShingle – «черепица»Устойчивость к вариантам,
опечаткам
«Штаны красные махровые в полоску»{«штан», «таны», «аны », «ны к», «ы кра», «крас», …}«Красные полосатые штаны»
Векторизация описания ТовараТекст: «Штаны красные махровые в
полоску»Вектор «bag of words»: [0,0,0,1,0,…
0,1,0] – ~ 10000 -1000000 элементов (kernel hack)
Minhash-сигнатура после shingling:[1243,823,-324,12312,…] – 100-500
элементов, совместима с LSH
Locality-Sensitive Hashing (LSH)
Вероятностный метод снижения размерности
Использовали для minhashed-векторов
Banding:b – корзины, r – элементов в корзине.P{ “Векторы совпадут хотя-бы в одной корзине” }:
Кластеризация каталогаApache Spark2-3 часа, 8 spot-серверов10-20 млн. Товаров => 1 млн.
кластеровАдекватные по смыслу кластераПерсональные рекомендации - стали
в разы «лучше»DynamoDB – хранение кластроидов
Измерение качества персональных рекомендаций
Recall, precisionПредсказываем на
«старой» моделиСмотрим фактические
значения профиля – на текущей модели
Считаем recall
Цифры - краткоТысячи запросов в секунду к сервису~20 тысяч интернет-магазиновОщутимый рост конверсии – до 50-80%,
зависит от размера магазинаАктивное использование «С этим Товаром
покупают»!?1 сервер рекомендаций (70G ОЗУ) +
небольшой кластер SparkОбсчитываем событий: > 855 миллионовУникальных посетителей: > 332 миллиона
Куда развиватьсяПол, возраст, ценовая категория клиента –
машинное обучениеРазные виды товаров: возобновляемые, не
возобновляемыеЦена товараВнутренние циклы (готов покупать),
модели МарковаКлассификация групп лояльности,
кластерный анализРелевантный поиск
Хорошо помогает при умственных
нагрузках:
Кластерный анализ
Кластерный анализ•Когда измерений много•Если «повезет»•Четкая/нечеткая•Иерархическая•Графы•Данных много/мало•Интерпретация
Кластерный анализ•Сегментация клиентов, типов использования сервиса, …
•Кластеризация «общего» товарного каталога
•Кластеризация графа связей сайтов (пересечение аудитории)
• Маркетинг работает с целевыми группами, информация разбита на «смысловые облака».
Хорошо помогает при умственных
нагрузках:
Классификация
Классификация•Не путать с кластеризацией!
•Кластеризация – автоматическая и если повезет
•Классификация – учим компьютер сами и «везет» чаще
•Пример: фильтрация спама, которую доучиваем
Классификация•Удержание: найти клиентов, которые скоро уйдут (churn-rate)
•Найти клиентов, готовых стать платными
•Найти клиентов, которые готовы купить новую услугу
•Найти готовых уволиться•Определить у клиента – пол!
Измерение качества
•Confusion matrix•Recall/precision•Kappa•AUC > 0.5
Классификация в 1С-Битрикс• Несколько моделей• Logistic Regression/SVM• Annova kernel• Spark MLLib• Churn-rate, вероятные
платники• CLV (customer lifetime value)
Хорошо помогает при умственных
нагрузках:
•Собираем данные (хиты, логи, анкетирование)
•Строим дерево решений•В Rapidminer – полчаса•В Spark MLlib – чуть больше.
А что влияет на конверсию в …?
ИТОГИ• Инструменты - доступны• Алгоритмы –
монетизируются• 20-30% бигдаты содержат
ценную инфу• 30% моделей – работают,
хорошо