Predictive maintenance - использование машинного обучения для снижения расходов на мониторинг и эксплуатацию. Алгоритмы и технологии Александр Сербул Руководитель направления Карл… Карл, я открыл страшную тайну Bigdata и машинного обучения Это очень интересно, пап! Карл… Карл, я специалист по BigData…. Это очень Никтокруто, не понимает, как оно пап! работает! НИКТО!!! О ЧЕМ ПОГОВОРИМ • Cначала вводная • Потом вводная второго порядка • Потом возможные кейсы применения Слайд 4 О ЧЕМ ПОГОВОРИМ • Для менеджеров, без математики! • Понятные алгоритмы и техники • Полезные для электронной торговли • В рамках Bigdata Слайд 5 Что происходит вокруг • Шумиха вокруг «больших данных» • Магия машинного обучения • Продукты и сервисы для извлечения прибыли из Bigdata • Очень высокий уровень вхождения • Непонимание разных областей Слайд 6 Учиться – просто некогда Линейная алгебра Теория вероятностей Высшая математика Computer Science Машинное обучение Программная инженерия Параллельные алгоритмы Обработка «больших данных» Математическая статистика Слайд 7 Информация - «только для избранных» • Wikipedia • Google… • http://www.machinelearning.ru Уровень вхождения Межрассовое скрещивание Быстро всё забыли! Боевое карате • Окинава, XIX век • Доступность • Массовость • Сила – не нужна • Разумный уровень вхождения • Эффективность против самураев! Слайд 12 Исходные данные • Целое: -4, 23 • Число с плавающей точкой: 1.34, 67.91 • Одно из значений (полиномиальное): «красный», «синий», «зеленый» • Биномиальный: да/нет, M/F • Даты • Графы Выбросы Слайд 13 Элементарная статистика • Среднее, дисперсия • Линейная корреляция • Mutual Information, Maximal information coefficient (MIC) Слайд 14 Профиль, вектор • Все, что есть! • Пол • Возраст • Статус • URLы, пути • Обращения в саппорт • Счетчики • Средние за квартал, месяц, день Слайд 15 Сбор данных для анализа • Хиты на сайте (логи) • События, привязанные к cookie (через «счетчик») • Логи работы • Мультиканальность Слайд 16 Что собираем мы • Кука Пользователя • Хэш лицензии Просмотр товара Добавление в корзину • Домен Событие • ID товара • Название Товара • Категории Товара • ID рекомендации Оплата Заказа Заказ • ряд других Слайд 17 Что можно собирать • Загрузка процессора user/system (top) • Скорость позиционирования диска, % утилизации (iostat – xm 5) • Расход ОЗУ, кэш, своп • Время загрузки тестовой страницы API • Входящий, исходящий трафик • LA, число переключений контекстов … (vmstat) Слайд 18 А какие метрики нужно точно собирать? • Этого не знает никто!! • Kaggle.com • Нейронки, DeepLearning и гадания на кофейной гуще Слайд 19 Deep learning, рекуррентные нейронные сети Слайд 20 Сбор данных для анализа – риски, оценки • Нагрузка на «счетчик» - нужен nginx/lua, NoSQLрешение, … • Много данных – нужен кластер для обработки: hadoop+spark/amazon/… • Реализация: дни Слайд 21 Полезные (готовые) инструменты • Rapidminer • SAS • SPSS •… Готовые блоки, серверные редакции (hadoop), графики Слайд 22 Полезные библиотеки (бесплатные) • Spark MLlib (scala/java/python) – много данных • scikit-learn.org (python) – мало данных •R Слайд 23 Чтобы не зарыться в программирование • Создание модели в коде – 5 строк = 10 минут • Обучение модели – минуты, десятки минут, очень редко и неправильно – часы, дни • Оценка качества модели – десятки минут: - AUC (area under curve) - Recall/Precision - Cross-validation Слайд 24 Rapidminer • Rapidminer 5 – opensource free • Модель собирается из кубиков • Несколько экспериментов • Автоподстройка параметров • Графики Трудозатраты: 1-2 часа R? Python – если быстро умеют Слайд 25 Рабочее место аналитика Аналитик • Организовать сбор данных • Минимум программирования • Работа в инструментах (Rapidminer, R, Python, SAS, SPSS) • Bigdata – как SQL Слайд 27 Война систем хранения • 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, … Слайд 28 Визуализация Визуализация! Слайд 30 Визуализация! • Munin, Cacti • InfluxDB • Cжимаем размерности (PCA, SVD) • У эксплуатации часто есть много графиков: вкусных и разных Слайд 31 Визуализация! • Гистограмма: • - Время загрузки страницы • - Вызов метода API • - Время жизни ключей в redis Слайд 32 Кластерный анализ Кластерный анализ • Когда измерений много • Если «повезет» • Четкая/нечеткая • Иерархическая • Графы • Данных много/мало • Интерпретация Слайд 34 Кластерный анализ • Иерархическая • K-means • C-means • Spectral • Density-based (DBSCAN) • Вероятностные • Для «больших данных» Слайд 35 Кластерный анализ – кейсы • Основные типы нагрузки на сервер • Типы клиентов API • Виды нагрузки на БД из веб-приложения • Виды DDOS • Нагрузка, создаваемая страницами веб-приложения Слайд 36 Кластерный анализ – оценки на программирование • Данные должны быть уже собраны • Анализ в Rapidminer (0.1-2 часа) • Анализ в Spark Mllib (1-2 дня, много данных) • Анализ в scikit-learn – аналогично (мало данных) • На выходе: список кластерных групп, иногда визуализация. • Метрики качества кластеризации. Слайд 37 Кластерный анализ – риски • Много данных – медленно! • Как интерпретировать? • Рецепты: • Spark MLlib, векторизация текста, LSH (locality sensetive hashing), word2vec Слайд 38 Классификация Классификация – это не кластеризация! • Не путать! • Кластеризция – автоматическая и если повезет • Классификация – учим компьютер сами и «везет» чаще • Пример: фильтрация спама, которую доучиваем; DDOS, сервер упадет… Слайд 40 Классификация Разбиваем по группам, обучение • Бинарная • Мультиклассовая Слайд 41 Классификация Слайд 42 Карл… Это очень интересно, а почему? Карл, SVMклассификатор на нестандартных ядрах работает гораздо лучше Карл… Карл, я специалист по BigData…. Это оченьЭтого круто, не знают даже пап! математики, сынок!!! Классификация Слайд 45 Классификация – кейсы • Удержание: найти клиентов, которые скоро уйдут (churn-rate) • Найти клиентов, готовых стать платными • Найти клиентов, которые готовы купить новую услугу • Найти готовых уволиться • Определить у клиента – пол! Слайд 46 Классификация – кейсы • Начнут появляться 50х ответы клиенту • Страницы сыпят ошибками соединения с БД • Увеличится время ответа API: да/нет • Сервер будет перегружен: да/нет • БД начнет «тормозить»: да/нет • Apache забьется запросами: да/нет • Начинается DDOS: да/нет • Кэширование не везде включено: да/нет • Сжатие не включено: да/нет Слайд 47 Классификация – реализация, риски • Определение, нормализация атрибутов • Feature engineering • Выбор алгоритма, kernel • Spark MLlib, scikit-learn – 2-3 дня • Rapidminer – полчаса Слайд 48 Классификация – секреты • Не усложняйте! • Начните с Naïve Bayes, работает хорошо в 80% случаев • Попробуйте SVM (support vector machine), как правило точнее, но дольше • Пускайтесь по все тяжкие с нейронными сетями Слайд 49 Классификация – качество • Confusion matrix • Recall/precision • Kappa • AUC > 0.5 Слайд 50 Регрессия Регрессия • Предсказать «циферку» • Стоимость квартиры, автомобиля на рынке • Ценность клиента для магазина • Зарплата на данную вакансию • Расходы на железо • Объем трафика • Число запросов к API • и т.д. Слайд 52 Регрессия – customer lifetime value (CLV) • Пришел клиент, а он потенциально прибыльный! • Система лояльности, удержания • Подарки, скидки, … Слайд 53 Регрессия – реализация, риски • Выявление атрибутов • Выбор алгоритма • Spark MLlib – не работает, scikit-learn – 1-2 дня Слайд 54 Дерево решений А что влияет на появление 50х ошибок…? • Собираем данные (хиты, логи, анкетирование) • Строим дерево решений • В Rapidminer – полчаса • В Spark MLlib – чуть больше. Слайд 56 Стратегии Стратегии Слайд 58 Стратегии Слайд 59 Стратегии • Используем компьютер против него самого • Все считаем! Не полагаемся на интуицию. • Собираем метрики • Обучаем несколько типовых простых моделей • Замеряем качество моделей, лучше – в бой • Действуем превентивно • Сокращаем расходы на устранение аварий • Опережаем конкурентов по качеству эксплуатации! Слайд 60 Спасибо, вопросы? Александр Сербул @AlexSerbul serbul@1c-bitrix.ru Слайд 61