SlideShare a Scribd company logo
1 of 26
Download to read offline
Опыт участия в
Microsoft Malware Classification Challenge
Трофимов Михаил
Machine Learning Works
13 августа 2016 года
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Задача
Данные
≈ 200 GB вирусов (10k примеров в обучение, 10k в тест).
Каждый сэмпл представлен в 2 видах: сырые байты и вывод
дизассемблера.
Задача
Классификация на 10 фиксированных семейств
Метрика
Логарифмические потери (LogLoss)
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Команда
Дмитрий Ульянов Станислав Семенов Михаил Трофимов
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Данные (1/2)
В виде сырых байт:
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Данные (2/2)
В виде вывода дизассемблера:
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Признаки
Размеры файлов
Байты и ассемблерные операторы
Распределение, биграммы...
Распределение энтропии в скользящем окне
Степень сжимаемости
Наличие ключевых слов
Системные вызовы (grep by "__stdcall")
Ключевые слова (loadlibrary, HKEY_LOCAL_MACHINE,...)
Строки бинарника
Распределение длин
Наличие характерных строк
... и другие
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Поверхностный анализ
Файлов много, хочется быстро в них заглянуть
Загружать в python – много кода
ls, cat/head/tail, grep
Просемплировать строчки
awk ’NR == 1 || NR % 3 == 0’ input.file > output.file
Найти строки в бинарнике
strings input.bin
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Обработка файлов
Задача
Нужно считывать и обработывать ≈ 104
× 106
строк. Многократно.
Проблема
CPython медленный для этого.
Варианты?
Cython
PyPy
Numba
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Сравнение
Таблица: Сравнение способов ускорения python
Либа Установка Использование Комментарий
Cython pip Переписать код Стандартное решение
PyPy pip pypy script.py Проблема с пакетами
Numba conda @jit Использует LLVM
Сравнение в цифрах: https://pybenchmarks.org
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
PyPy vs CPython (http://speed.pypy.org/)
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Чтение с диска
Задача
Нужно считывать и обработывать ≈ 200 GB. Многократно.
Проблема
Диск медленный, фрагментированный, места не хватает
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Чтение с диска
Задача
Нужно считывать и обработывать ≈ 200 GB. Многократно.
Проблема
Диск медленный, фрагментированный, места не хватает
Возможное решение
Читать сразу из .gz файла
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Сохранение промежуточных результатов
Задача
Нужно многократно дампить и поднимать большие питоновские
структуры (словари, numpy-массивы)
Проблема
joblib / pickle∗
работают неприлично долго
Возможное решение
hickle
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
https://github.com/telegraphic/hickle
Hickle быстрее pickle, использует HDF5, поддерживает компрессию
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Промежуточные результаты
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Байты как текст
2-grams: 2562
= 65536
4-grams: 2564
= 4.2 × 109
10-grams: 25610
= 1.2 × 1024
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
2-grams
2-grams: 2562
= 65536 фичей
Собираем с каждого файла словарь вида 2-gram -> частота
Аггрегируем все файлы в разреженную матрицу
Требует O(nnz) памяти, где nnz – число ненулевых
элементов
Реализация в scipy.sparse
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
4-grams
Аналогично:
4-grams: 2564
= 4.2 × 109
фичей
Собираем с каждого файла словарь вида 4-gram -> частота
Аггрегируем все файлы в разреженную матрицу
В чем подвох?
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
4-grams
10-grams: 2564
= 4.2 × 109
фичей
Собираем с каждого файла словарь вида 4-gram -> частота
4-грамм (строк из 8 символов) много
Большой оверхед по памяти на создание и поддержание
словаря
Замапим 4-граммы(строки) на id(числа) [обратимая
операция]
Получим словарь вида id->частота
Аггрегируем все файлы в разреженную матрицу
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
10-grams
4-grams: 25610
≈ 1024
фичей
Собираем с каждого файла словарь вида id -> частота
Матрица получится чудовищной
Так ли нужна обратимость отображения 10-грамм(строк)
на id(числа)?
Hash-trick!
id = hash(10-gram) % 2b
, b = 28
В итоге 2 × 108
фичей
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Отбор признаков: 4-грамы
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Отбор признаков: 10-грамы
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Снижение размерности
RF(NMF(X)) был лучше, чем RF(PCA(X))
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Итоговое решение
Усреднение множества xgboost’ов
Разные подмножества признаков
Semi-supervised trick
top14 на публичном лидерборде
top3 на приватном лидерборде
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Полезные штуки
PyPy / Numba / Cython
HDF5 / Hickle
"Fast Non-Standard Data Structures for Python"by Mike Korobov
Трюк с хэшированием
Разреженные матрицы
LinearSVC(L1) для обора признаков
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
Финальный слайд
Вопросы?
Спасибо за внимание!
Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge

More Related Content

Viewers also liked

“Атличнаи дивчачьи каньки”: исправляем ошибки. Андрей Смирнов (Avito)
“Атличнаи дивчачьи каньки”: исправляем ошибки. Андрей Смирнов (Avito)“Атличнаи дивчачьи каньки”: исправляем ошибки. Андрей Смирнов (Avito)
“Атличнаи дивчачьи каньки”: исправляем ошибки. Андрей Смирнов (Avito)AvitoTech
 
"Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (...
"Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (..."Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (...
"Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (...AvitoTech
 
"DeepLink’и в Avito" Артём Разинов (Avito)
"DeepLink’и в Avito" Артём Разинов (Avito)"DeepLink’и в Avito" Артём Разинов (Avito)
"DeepLink’и в Avito" Артём Разинов (Avito)AvitoTech
 
"Погружение в Robolectric" Дмитрий Костырев (Avito)
"Погружение в Robolectric"  Дмитрий Костырев (Avito)"Погружение в Robolectric"  Дмитрий Костырев (Avito)
"Погружение в Robolectric" Дмитрий Костырев (Avito)AvitoTech
 
"Распознавание категории объявления по изображениям" Артур Кузин (МФТИ)
"Распознавание категории объявления по изображениям" Артур Кузин (МФТИ)"Распознавание категории объявления по изображениям" Артур Кузин (МФТИ)
"Распознавание категории объявления по изображениям" Артур Кузин (МФТИ)AvitoTech
 
"Построение рекомендательной системы на Python" Василий Лексин (Avito)
"Построение рекомендательной системы на Python" Василий Лексин (Avito)"Построение рекомендательной системы на Python" Василий Лексин (Avito)
"Построение рекомендательной системы на Python" Василий Лексин (Avito)AvitoTech
 
"Контекстная реклама в Avito: что под капотом?" Вадим Аюев и Андрей Остапец (...
"Контекстная реклама в Avito: что под капотом?" Вадим Аюев и Андрей Остапец (..."Контекстная реклама в Avito: что под капотом?" Вадим Аюев и Андрей Остапец (...
"Контекстная реклама в Avito: что под капотом?" Вадим Аюев и Андрей Остапец (...AvitoTech
 
"Sphinx 3.0 в реальной жизни" Андрей Смирнов (Avito)
"Sphinx 3.0 в реальной жизни" Андрей Смирнов (Avito)"Sphinx 3.0 в реальной жизни" Андрей Смирнов (Avito)
"Sphinx 3.0 в реальной жизни" Андрей Смирнов (Avito)AvitoTech
 
"RT индексы в поиске Avito" Вячеслав Крюков (Avito)
"RT индексы в поиске Avito" Вячеслав Крюков (Avito)"RT индексы в поиске Avito" Вячеслав Крюков (Avito)
"RT индексы в поиске Avito" Вячеслав Крюков (Avito)AvitoTech
 
Андрей Юткин. Media Picker — to infinity and beyond
Андрей Юткин. Media Picker — to infinity and beyondАндрей Юткин. Media Picker — to infinity and beyond
Андрей Юткин. Media Picker — to infinity and beyondAvitoTech
 
Рекомендации в Avito - Василий Лексин (Avito)
Рекомендации в Avito - Василий Лексин (Avito)Рекомендации в Avito - Василий Лексин (Avito)
Рекомендации в Avito - Василий Лексин (Avito)AvitoTech
 
"Building data streams" Константин Евтеев (Avito)
"Building data streams" Константин Евтеев (Avito)"Building data streams" Константин Евтеев (Avito)
"Building data streams" Константин Евтеев (Avito)AvitoTech
 
Зачем в Avito Аналитика?
Зачем в Avito Аналитика?Зачем в Avito Аналитика?
Зачем в Avito Аналитика?AvitoTech
 
"Икскод, джейсон, два скетча" Олег Фролов (Avito)
"Икскод, джейсон, два скетча" Олег Фролов (Avito)"Икскод, джейсон, два скетча" Олег Фролов (Avito)
"Икскод, джейсон, два скетча" Олег Фролов (Avito)AvitoTech
 
"Опыт миграции между дата-центрами" Сергей Бурладян и Михаил Тюрин (Avito)
"Опыт миграции между дата-центрами" Сергей Бурладян и Михаил Тюрин (Avito)"Опыт миграции между дата-центрами" Сергей Бурладян и Михаил Тюрин (Avito)
"Опыт миграции между дата-центрами" Сергей Бурладян и Михаил Тюрин (Avito)AvitoTech
 
"Favicon на стероидах" Александр Амосов (Avito)
"Favicon на стероидах" Александр Амосов (Avito)"Favicon на стероидах" Александр Амосов (Avito)
"Favicon на стероидах" Александр Амосов (Avito)AvitoTech
 
"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)
"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)
"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)AvitoTech
 
"Marshroute: удобный и расширяемый роутинг в iOS-приложении" Тимур Юсипов (Av...
"Marshroute: удобный и расширяемый роутинг в iOS-приложении" Тимур Юсипов (Av..."Marshroute: удобный и расширяемый роутинг в iOS-приложении" Тимур Юсипов (Av...
"Marshroute: удобный и расширяемый роутинг в iOS-приложении" Тимур Юсипов (Av...AvitoTech
 
"Опыт использования Sphinx в Ozon.ru" Игорь Чакрыгин (OZON.RU)
"Опыт использования Sphinx в Ozon.ru" Игорь Чакрыгин (OZON.RU)"Опыт использования Sphinx в Ozon.ru" Игорь Чакрыгин (OZON.RU)
"Опыт использования Sphinx в Ozon.ru" Игорь Чакрыгин (OZON.RU)AvitoTech
 
"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)AvitoTech
 

Viewers also liked (20)

“Атличнаи дивчачьи каньки”: исправляем ошибки. Андрей Смирнов (Avito)
“Атличнаи дивчачьи каньки”: исправляем ошибки. Андрей Смирнов (Avito)“Атличнаи дивчачьи каньки”: исправляем ошибки. Андрей Смирнов (Avito)
“Атличнаи дивчачьи каньки”: исправляем ошибки. Андрей Смирнов (Avito)
 
"Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (...
"Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (..."Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (...
"Распознавание марки и модели автомашин на изображениях" Евгений Нижибицкий (...
 
"DeepLink’и в Avito" Артём Разинов (Avito)
"DeepLink’и в Avito" Артём Разинов (Avito)"DeepLink’и в Avito" Артём Разинов (Avito)
"DeepLink’и в Avito" Артём Разинов (Avito)
 
"Погружение в Robolectric" Дмитрий Костырев (Avito)
"Погружение в Robolectric"  Дмитрий Костырев (Avito)"Погружение в Robolectric"  Дмитрий Костырев (Avito)
"Погружение в Robolectric" Дмитрий Костырев (Avito)
 
"Распознавание категории объявления по изображениям" Артур Кузин (МФТИ)
"Распознавание категории объявления по изображениям" Артур Кузин (МФТИ)"Распознавание категории объявления по изображениям" Артур Кузин (МФТИ)
"Распознавание категории объявления по изображениям" Артур Кузин (МФТИ)
 
"Построение рекомендательной системы на Python" Василий Лексин (Avito)
"Построение рекомендательной системы на Python" Василий Лексин (Avito)"Построение рекомендательной системы на Python" Василий Лексин (Avito)
"Построение рекомендательной системы на Python" Василий Лексин (Avito)
 
"Контекстная реклама в Avito: что под капотом?" Вадим Аюев и Андрей Остапец (...
"Контекстная реклама в Avito: что под капотом?" Вадим Аюев и Андрей Остапец (..."Контекстная реклама в Avito: что под капотом?" Вадим Аюев и Андрей Остапец (...
"Контекстная реклама в Avito: что под капотом?" Вадим Аюев и Андрей Остапец (...
 
"Sphinx 3.0 в реальной жизни" Андрей Смирнов (Avito)
"Sphinx 3.0 в реальной жизни" Андрей Смирнов (Avito)"Sphinx 3.0 в реальной жизни" Андрей Смирнов (Avito)
"Sphinx 3.0 в реальной жизни" Андрей Смирнов (Avito)
 
"RT индексы в поиске Avito" Вячеслав Крюков (Avito)
"RT индексы в поиске Avito" Вячеслав Крюков (Avito)"RT индексы в поиске Avito" Вячеслав Крюков (Avito)
"RT индексы в поиске Avito" Вячеслав Крюков (Avito)
 
Андрей Юткин. Media Picker — to infinity and beyond
Андрей Юткин. Media Picker — to infinity and beyondАндрей Юткин. Media Picker — to infinity and beyond
Андрей Юткин. Media Picker — to infinity and beyond
 
Рекомендации в Avito - Василий Лексин (Avito)
Рекомендации в Avito - Василий Лексин (Avito)Рекомендации в Avito - Василий Лексин (Avito)
Рекомендации в Avito - Василий Лексин (Avito)
 
"Building data streams" Константин Евтеев (Avito)
"Building data streams" Константин Евтеев (Avito)"Building data streams" Константин Евтеев (Avito)
"Building data streams" Константин Евтеев (Avito)
 
Зачем в Avito Аналитика?
Зачем в Avito Аналитика?Зачем в Avito Аналитика?
Зачем в Avito Аналитика?
 
"Икскод, джейсон, два скетча" Олег Фролов (Avito)
"Икскод, джейсон, два скетча" Олег Фролов (Avito)"Икскод, джейсон, два скетча" Олег Фролов (Avito)
"Икскод, джейсон, два скетча" Олег Фролов (Avito)
 
"Опыт миграции между дата-центрами" Сергей Бурладян и Михаил Тюрин (Avito)
"Опыт миграции между дата-центрами" Сергей Бурладян и Михаил Тюрин (Avito)"Опыт миграции между дата-центрами" Сергей Бурладян и Михаил Тюрин (Avito)
"Опыт миграции между дата-центрами" Сергей Бурладян и Михаил Тюрин (Avito)
 
"Favicon на стероидах" Александр Амосов (Avito)
"Favicon на стероидах" Александр Амосов (Avito)"Favicon на стероидах" Александр Амосов (Avito)
"Favicon на стероидах" Александр Амосов (Avito)
 
"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)
"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)
"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)
 
"Marshroute: удобный и расширяемый роутинг в iOS-приложении" Тимур Юсипов (Av...
"Marshroute: удобный и расширяемый роутинг в iOS-приложении" Тимур Юсипов (Av..."Marshroute: удобный и расширяемый роутинг в iOS-приложении" Тимур Юсипов (Av...
"Marshroute: удобный и расширяемый роутинг в iOS-приложении" Тимур Юсипов (Av...
 
"Опыт использования Sphinx в Ozon.ru" Игорь Чакрыгин (OZON.RU)
"Опыт использования Sphinx в Ozon.ru" Игорь Чакрыгин (OZON.RU)"Опыт использования Sphinx в Ozon.ru" Игорь Чакрыгин (OZON.RU)
"Опыт использования Sphinx в Ozon.ru" Игорь Чакрыгин (OZON.RU)
 
"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)
 

Similar to "Опыт участия в Microsoft Malware Classification Challenge" Михаил Трофимов (Machine Learning Works)

Особенности использования машинного обучения при защите от DDoS-атак
Особенности использования машинного обучения при защите от DDoS-атакОсобенности использования машинного обучения при защите от DDoS-атак
Особенности использования машинного обучения при защите от DDoS-атакQrator Labs
 
Android: Как написать приложение, которое не тормозит
Android: Как  написать приложение, которое не тормозитAndroid: Как  написать приложение, которое не тормозит
Android: Как написать приложение, которое не тормозитElena Kotina
 
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptПостроение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptFDConf
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей СитникCodeFest
 
Software engineering seminars: git
 Software engineering seminars: git Software engineering seminars: git
Software engineering seminars: gitSemen Martynov
 
Информационная Безопасность. Современные угрозы и области компетенций
Информационная Безопасность. Современные угрозы и области компетенцийИнформационная Безопасность. Современные угрозы и области компетенций
Информационная Безопасность. Современные угрозы и области компетенцийSerghei Epifantsew
 
08.11 SEMPRO Club - Влад Моргун - Цвет настроения серый
08.11 SEMPRO Club - Влад Моргун - Цвет настроения серый08.11 SEMPRO Club - Влад Моргун - Цвет настроения серый
08.11 SEMPRO Club - Влад Моргун - Цвет настроения серыйVladislav Morgun
 
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...ScrumTrek
 
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»Tanya Denisyuk
 
массивы Php
массивы Phpмассивы Php
массивы PhpVasya Petrov
 
Что такое пентест
Что такое пентестЧто такое пентест
Что такое пентестDmitry Evteev
 
Software engineering seminars: gradle
 Software engineering seminars: gradle Software engineering seminars: gradle
Software engineering seminars: gradleSemen Martynov
 
MySQL: Есть ли жизнь после 1 млрд. записей.
MySQL: Есть ли жизнь после 1 млрд. записей.MySQL: Есть ли жизнь после 1 млрд. записей.
MySQL: Есть ли жизнь после 1 млрд. записей.MageCloud
 
Выявление неполадок в Java приложениях
Выявление неполадок в Java приложенияхВыявление неполадок в Java приложениях
Выявление неполадок в Java приложенияхPavel Grushetzky
 
Поговорим про performance-тестирование
Поговорим про performance-тестированиеПоговорим про performance-тестирование
Поговорим про performance-тестированиеAndrey Akinshin
 

Similar to "Опыт участия в Microsoft Malware Classification Challenge" Михаил Трофимов (Machine Learning Works) (20)

Deep Dive in Magento DI
Deep Dive in Magento DIDeep Dive in Magento DI
Deep Dive in Magento DI
 
Особенности использования машинного обучения при защите от DDoS-атак
Особенности использования машинного обучения при защите от DDoS-атакОсобенности использования машинного обучения при защите от DDoS-атак
Особенности использования машинного обучения при защите от DDoS-атак
 
запахи кода
запахи кодазапахи кода
запахи кода
 
Android: Как написать приложение, которое не тормозит
Android: Как  написать приложение, которое не тормозитAndroid: Как  написать приложение, которое не тормозит
Android: Как написать приложение, которое не тормозит
 
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptПостроение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
 
Build your own multistack JS startup
Build your own multistack JS startupBuild your own multistack JS startup
Build your own multistack JS startup
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
 
Software engineering seminars: git
 Software engineering seminars: git Software engineering seminars: git
Software engineering seminars: git
 
Информационная Безопасность. Современные угрозы и области компетенций
Информационная Безопасность. Современные угрозы и области компетенцийИнформационная Безопасность. Современные угрозы и области компетенций
Информационная Безопасность. Современные угрозы и области компетенций
 
08.11 SEMPRO Club - Влад Моргун - Цвет настроения серый
08.11 SEMPRO Club - Влад Моргун - Цвет настроения серый08.11 SEMPRO Club - Влад Моргун - Цвет настроения серый
08.11 SEMPRO Club - Влад Моргун - Цвет настроения серый
 
D²NA
D²NAD²NA
D²NA
 
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
 
SECON'2014 - Сергей Шпадырев - Разработка 3D-игры на Flash: едем с костылями...
SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями...SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями...
SECON'2014 - Сергей Шпадырев - Разработка 3D-игры на Flash: едем с костылями...
 
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
 
массивы Php
массивы Phpмассивы Php
массивы Php
 
Что такое пентест
Что такое пентестЧто такое пентест
Что такое пентест
 
Software engineering seminars: gradle
 Software engineering seminars: gradle Software engineering seminars: gradle
Software engineering seminars: gradle
 
MySQL: Есть ли жизнь после 1 млрд. записей.
MySQL: Есть ли жизнь после 1 млрд. записей.MySQL: Есть ли жизнь после 1 млрд. записей.
MySQL: Есть ли жизнь после 1 млрд. записей.
 
Выявление неполадок в Java приложениях
Выявление неполадок в Java приложенияхВыявление неполадок в Java приложениях
Выявление неполадок в Java приложениях
 
Поговорим про performance-тестирование
Поговорим про performance-тестированиеПоговорим про performance-тестирование
Поговорим про performance-тестирование
 

More from AvitoTech

Сегментация изображений на острие науки (Евгений Нижибицкий, Rambler&Co)
Сегментация изображений на острие науки (Евгений Нижибицкий, Rambler&Co)Сегментация изображений на острие науки (Евгений Нижибицкий, Rambler&Co)
Сегментация изображений на острие науки (Евгений Нижибицкий, Rambler&Co)AvitoTech
 
Применение компьютерного зрения для анализа спортивных соревнований (Николай ...
Применение компьютерного зрения для анализа спортивных соревнований (Николай ...Применение компьютерного зрения для анализа спортивных соревнований (Николай ...
Применение компьютерного зрения для анализа спортивных соревнований (Николай ...AvitoTech
 
Распознавание лиц с помощью глубоких нейронных сетей (Сергей Миляев, VisionLabs)
Распознавание лиц с помощью глубоких нейронных сетей (Сергей Миляев, VisionLabs)Распознавание лиц с помощью глубоких нейронных сетей (Сергей Миляев, VisionLabs)
Распознавание лиц с помощью глубоких нейронных сетей (Сергей Миляев, VisionLabs)AvitoTech
 
AvitoNet: сервис компьютерного зрения в Avito (Артур Кузин, Avito)
AvitoNet: сервис компьютерного зрения в Avito (Артур Кузин, Avito)AvitoNet: сервис компьютерного зрения в Avito (Артур Кузин, Avito)
AvitoNet: сервис компьютерного зрения в Avito (Артур Кузин, Avito)AvitoTech
 
Yandex Tank - Арсений Фомченко
Yandex Tank - Арсений ФомченкоYandex Tank - Арсений Фомченко
Yandex Tank - Арсений ФомченкоAvitoTech
 
Migro - Юрий Богомолов
Migro - Юрий БогомоловMigro - Юрий Богомолов
Migro - Юрий БогомоловAvitoTech
 
TableKit - Максим Соколов
TableKit - Максим СоколовTableKit - Максим Соколов
TableKit - Максим СоколовAvitoTech
 
Jsonwire Grid - Михаил Подцерковский (Avito)
Jsonwire Grid - Михаил Подцерковский (Avito)Jsonwire Grid - Михаил Подцерковский (Avito)
Jsonwire Grid - Михаил Подцерковский (Avito)AvitoTech
 
SimplePEG - Алексей Охрименко
SimplePEG - Алексей ОхрименкоSimplePEG - Алексей Охрименко
SimplePEG - Алексей ОхрименкоAvitoTech
 
Как перестать бояться и начать контрибьютить - Алексей Кудрявцев
 Как перестать бояться и начать контрибьютить - Алексей Кудрявцев Как перестать бояться и начать контрибьютить - Алексей Кудрявцев
Как перестать бояться и начать контрибьютить - Алексей КудрявцевAvitoTech
 
"Анонимизация фото с помощью Vision", Хомутников Тимофей, Avito
"Анонимизация фото с помощью Vision",  Хомутников Тимофей, Avito"Анонимизация фото с помощью Vision",  Хомутников Тимофей, Avito
"Анонимизация фото с помощью Vision", Хомутников Тимофей, AvitoAvitoTech
 
“iOS 11 в App in the Air”, Пронин Сергей, App in the Air
“iOS 11 в App in the Air”, Пронин Сергей, App in the Air“iOS 11 в App in the Air”, Пронин Сергей, App in the Air
“iOS 11 в App in the Air”, Пронин Сергей, App in the AirAvitoTech
 
"ARKit в приложении Афиша Рестораны”, Меджлумян Самвел, Антышев Дмитрий, Ramb...
"ARKit в приложении Афиша Рестораны”, Меджлумян Самвел, Антышев Дмитрий, Ramb..."ARKit в приложении Афиша Рестораны”, Меджлумян Самвел, Антышев Дмитрий, Ramb...
"ARKit в приложении Афиша Рестораны”, Меджлумян Самвел, Антышев Дмитрий, Ramb...AvitoTech
 
ASO for iOS 11
ASO for iOS 11ASO for iOS 11
ASO for iOS 11AvitoTech
 
Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)
Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)
Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)AvitoTech
 
Проблемы управления тестами, или Что мешает создавать дешевые и полезные тест...
Проблемы управления тестами, или Что мешает создавать дешевые и полезные тест...Проблемы управления тестами, или Что мешает создавать дешевые и полезные тест...
Проблемы управления тестами, или Что мешает создавать дешевые и полезные тест...AvitoTech
 
Запускаем тесты в Continuous Integration - Сергей Пак (JetBrains)
Запускаем тесты в Continuous Integration - Сергей Пак (JetBrains)Запускаем тесты в Continuous Integration - Сергей Пак (JetBrains)
Запускаем тесты в Continuous Integration - Сергей Пак (JetBrains)AvitoTech
 
Векторы развития систем автоматизации тестирования - Дмитрий Химион (Avito)
Векторы развития систем автоматизации тестирования - Дмитрий Химион (Avito)Векторы развития систем автоматизации тестирования - Дмитрий Химион (Avito)
Векторы развития систем автоматизации тестирования - Дмитрий Химион (Avito)AvitoTech
 
Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...
Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...
Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...AvitoTech
 
Конкурс Авито-2017 - Решение 2ое место - Василий Рубцов
Конкурс Авито-2017 - Решение 2ое место - Василий РубцовКонкурс Авито-2017 - Решение 2ое место - Василий Рубцов
Конкурс Авито-2017 - Решение 2ое место - Василий РубцовAvitoTech
 

More from AvitoTech (20)

Сегментация изображений на острие науки (Евгений Нижибицкий, Rambler&Co)
Сегментация изображений на острие науки (Евгений Нижибицкий, Rambler&Co)Сегментация изображений на острие науки (Евгений Нижибицкий, Rambler&Co)
Сегментация изображений на острие науки (Евгений Нижибицкий, Rambler&Co)
 
Применение компьютерного зрения для анализа спортивных соревнований (Николай ...
Применение компьютерного зрения для анализа спортивных соревнований (Николай ...Применение компьютерного зрения для анализа спортивных соревнований (Николай ...
Применение компьютерного зрения для анализа спортивных соревнований (Николай ...
 
Распознавание лиц с помощью глубоких нейронных сетей (Сергей Миляев, VisionLabs)
Распознавание лиц с помощью глубоких нейронных сетей (Сергей Миляев, VisionLabs)Распознавание лиц с помощью глубоких нейронных сетей (Сергей Миляев, VisionLabs)
Распознавание лиц с помощью глубоких нейронных сетей (Сергей Миляев, VisionLabs)
 
AvitoNet: сервис компьютерного зрения в Avito (Артур Кузин, Avito)
AvitoNet: сервис компьютерного зрения в Avito (Артур Кузин, Avito)AvitoNet: сервис компьютерного зрения в Avito (Артур Кузин, Avito)
AvitoNet: сервис компьютерного зрения в Avito (Артур Кузин, Avito)
 
Yandex Tank - Арсений Фомченко
Yandex Tank - Арсений ФомченкоYandex Tank - Арсений Фомченко
Yandex Tank - Арсений Фомченко
 
Migro - Юрий Богомолов
Migro - Юрий БогомоловMigro - Юрий Богомолов
Migro - Юрий Богомолов
 
TableKit - Максим Соколов
TableKit - Максим СоколовTableKit - Максим Соколов
TableKit - Максим Соколов
 
Jsonwire Grid - Михаил Подцерковский (Avito)
Jsonwire Grid - Михаил Подцерковский (Avito)Jsonwire Grid - Михаил Подцерковский (Avito)
Jsonwire Grid - Михаил Подцерковский (Avito)
 
SimplePEG - Алексей Охрименко
SimplePEG - Алексей ОхрименкоSimplePEG - Алексей Охрименко
SimplePEG - Алексей Охрименко
 
Как перестать бояться и начать контрибьютить - Алексей Кудрявцев
 Как перестать бояться и начать контрибьютить - Алексей Кудрявцев Как перестать бояться и начать контрибьютить - Алексей Кудрявцев
Как перестать бояться и начать контрибьютить - Алексей Кудрявцев
 
"Анонимизация фото с помощью Vision", Хомутников Тимофей, Avito
"Анонимизация фото с помощью Vision",  Хомутников Тимофей, Avito"Анонимизация фото с помощью Vision",  Хомутников Тимофей, Avito
"Анонимизация фото с помощью Vision", Хомутников Тимофей, Avito
 
“iOS 11 в App in the Air”, Пронин Сергей, App in the Air
“iOS 11 в App in the Air”, Пронин Сергей, App in the Air“iOS 11 в App in the Air”, Пронин Сергей, App in the Air
“iOS 11 в App in the Air”, Пронин Сергей, App in the Air
 
"ARKit в приложении Афиша Рестораны”, Меджлумян Самвел, Антышев Дмитрий, Ramb...
"ARKit в приложении Афиша Рестораны”, Меджлумян Самвел, Антышев Дмитрий, Ramb..."ARKit в приложении Афиша Рестораны”, Меджлумян Самвел, Антышев Дмитрий, Ramb...
"ARKit в приложении Афиша Рестораны”, Меджлумян Самвел, Антышев Дмитрий, Ramb...
 
ASO for iOS 11
ASO for iOS 11ASO for iOS 11
ASO for iOS 11
 
Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)
Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)
Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)
 
Проблемы управления тестами, или Что мешает создавать дешевые и полезные тест...
Проблемы управления тестами, или Что мешает создавать дешевые и полезные тест...Проблемы управления тестами, или Что мешает создавать дешевые и полезные тест...
Проблемы управления тестами, или Что мешает создавать дешевые и полезные тест...
 
Запускаем тесты в Continuous Integration - Сергей Пак (JetBrains)
Запускаем тесты в Continuous Integration - Сергей Пак (JetBrains)Запускаем тесты в Continuous Integration - Сергей Пак (JetBrains)
Запускаем тесты в Continuous Integration - Сергей Пак (JetBrains)
 
Векторы развития систем автоматизации тестирования - Дмитрий Химион (Avito)
Векторы развития систем автоматизации тестирования - Дмитрий Химион (Avito)Векторы развития систем автоматизации тестирования - Дмитрий Химион (Avito)
Векторы развития систем автоматизации тестирования - Дмитрий Химион (Avito)
 
Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...
Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...
Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...
 
Конкурс Авито-2017 - Решение 2ое место - Василий Рубцов
Конкурс Авито-2017 - Решение 2ое место - Василий РубцовКонкурс Авито-2017 - Решение 2ое место - Василий Рубцов
Конкурс Авито-2017 - Решение 2ое место - Василий Рубцов
 

"Опыт участия в Microsoft Malware Classification Challenge" Михаил Трофимов (Machine Learning Works)

  • 1. Опыт участия в Microsoft Malware Classification Challenge Трофимов Михаил Machine Learning Works 13 августа 2016 года Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 2. Задача Данные ≈ 200 GB вирусов (10k примеров в обучение, 10k в тест). Каждый сэмпл представлен в 2 видах: сырые байты и вывод дизассемблера. Задача Классификация на 10 фиксированных семейств Метрика Логарифмические потери (LogLoss) Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 3. Команда Дмитрий Ульянов Станислав Семенов Михаил Трофимов Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 4. Данные (1/2) В виде сырых байт: Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 5. Данные (2/2) В виде вывода дизассемблера: Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 6. Признаки Размеры файлов Байты и ассемблерные операторы Распределение, биграммы... Распределение энтропии в скользящем окне Степень сжимаемости Наличие ключевых слов Системные вызовы (grep by "__stdcall") Ключевые слова (loadlibrary, HKEY_LOCAL_MACHINE,...) Строки бинарника Распределение длин Наличие характерных строк ... и другие Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 7. Поверхностный анализ Файлов много, хочется быстро в них заглянуть Загружать в python – много кода ls, cat/head/tail, grep Просемплировать строчки awk ’NR == 1 || NR % 3 == 0’ input.file > output.file Найти строки в бинарнике strings input.bin Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 8. Обработка файлов Задача Нужно считывать и обработывать ≈ 104 × 106 строк. Многократно. Проблема CPython медленный для этого. Варианты? Cython PyPy Numba Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 9. Сравнение Таблица: Сравнение способов ускорения python Либа Установка Использование Комментарий Cython pip Переписать код Стандартное решение PyPy pip pypy script.py Проблема с пакетами Numba conda @jit Использует LLVM Сравнение в цифрах: https://pybenchmarks.org Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 10. PyPy vs CPython (http://speed.pypy.org/) Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 11. Чтение с диска Задача Нужно считывать и обработывать ≈ 200 GB. Многократно. Проблема Диск медленный, фрагментированный, места не хватает Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 12. Чтение с диска Задача Нужно считывать и обработывать ≈ 200 GB. Многократно. Проблема Диск медленный, фрагментированный, места не хватает Возможное решение Читать сразу из .gz файла Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 13. Сохранение промежуточных результатов Задача Нужно многократно дампить и поднимать большие питоновские структуры (словари, numpy-массивы) Проблема joblib / pickle∗ работают неприлично долго Возможное решение hickle Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 14. https://github.com/telegraphic/hickle Hickle быстрее pickle, использует HDF5, поддерживает компрессию Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 15. Промежуточные результаты Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 16. Байты как текст 2-grams: 2562 = 65536 4-grams: 2564 = 4.2 × 109 10-grams: 25610 = 1.2 × 1024 Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 17. 2-grams 2-grams: 2562 = 65536 фичей Собираем с каждого файла словарь вида 2-gram -> частота Аггрегируем все файлы в разреженную матрицу Требует O(nnz) памяти, где nnz – число ненулевых элементов Реализация в scipy.sparse Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 18. 4-grams Аналогично: 4-grams: 2564 = 4.2 × 109 фичей Собираем с каждого файла словарь вида 4-gram -> частота Аггрегируем все файлы в разреженную матрицу В чем подвох? Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 19. 4-grams 10-grams: 2564 = 4.2 × 109 фичей Собираем с каждого файла словарь вида 4-gram -> частота 4-грамм (строк из 8 символов) много Большой оверхед по памяти на создание и поддержание словаря Замапим 4-граммы(строки) на id(числа) [обратимая операция] Получим словарь вида id->частота Аггрегируем все файлы в разреженную матрицу Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 20. 10-grams 4-grams: 25610 ≈ 1024 фичей Собираем с каждого файла словарь вида id -> частота Матрица получится чудовищной Так ли нужна обратимость отображения 10-грамм(строк) на id(числа)? Hash-trick! id = hash(10-gram) % 2b , b = 28 В итоге 2 × 108 фичей Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 21. Отбор признаков: 4-грамы Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 22. Отбор признаков: 10-грамы Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 23. Снижение размерности RF(NMF(X)) был лучше, чем RF(PCA(X)) Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 24. Итоговое решение Усреднение множества xgboost’ов Разные подмножества признаков Semi-supervised trick top14 на публичном лидерборде top3 на приватном лидерборде Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 25. Полезные штуки PyPy / Numba / Cython HDF5 / Hickle "Fast Non-Standard Data Structures for Python"by Mike Korobov Трюк с хэшированием Разреженные матрицы LinearSVC(L1) для обора признаков Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge
  • 26. Финальный слайд Вопросы? Спасибо за внимание! Трофимов Михаил Опыт участия в Microsoft Malware Classification Challenge