Категоризатор веб-ресурсов на основании логов открытого DNS-резолвера (командный проект)
Компания | SkyDNS |
Учебный семестр | Осень 2017 |
Учебный курс | 3-й курс |
Максимальное количество студентов, выбравших проект: 2-3 | |
Содержание
|
Что это за проект?
Вам предлагается решить задачу машинного обучения, имеющую непосредственное практическое значение. Под категоризацией здесь мы понимаем присвоение хосту одной и более не исключающих друг друга категорий (ее же можно называть по-английски multilabel classification) Исходными данными будут логи DNS-запросов пользователей, а обучающей выборкой – небольшая часть базы категорированных ресурсов, которую мы используем в самой основе нашего сервиса.
Описание данных
В логах DNS-резолвера можно найти:
- идентификатор клиента
- запрашиваемое имя
- тип запроса
- код ответа
- время поступления запроса
Набор данных при желании может быть расширен, и это важный практический аспект задачи.
Для защиты данных наших пользователей, мы не можем представить логи “как есть”, поэтому запрашиваемые доменные имена будут преобразованы с помощью криптографической хэш-функции. Например: cs.hse.ru → 9a27be242bdf52b1.94663bdac4254dfe.ru
Данных мы вам может дать достаточно много, поэтому асимптотически решение не должно быть сложнее сортировки.
Вам будет предложено решить задачу для 64 категорий, каждая из которых имеет свои особенности. Оптимизировать придется макроусредненную F1-меру. Раз в месяц мы будем выпускать небольшую тестовую выборку для измерения качества.
Чему научатся студенты? Что самое интересное в проекте?
Понятия не имеем. Но вы приобретете опыт практического анализа данных и решения задач машинного обучения. Достаточно важно отметить, что эти задачи (а именно, “ML в продакшене”) достаточно отличаются от kaggle, чтобы можно было говорить о совсем ином направлении: пересекаются в основном лишь в области разведочного анализа и визуализации. Кроме того, результатом проекта [в идеале] мы видим законченное приложение над распределенным фреймворком Apache Spark, покрытое тестами и упакованное в Docker (Linux и т.д.). Такая разработка дает разным людям разные навыки, от чисто технических и специфических, таких как знакомство с распространенными фреймворками до общих и универсальных, таких как дизайн, чистый код и кооперация.
Организация работы (Как студенты будут работать в команде?)
Ориентировочный размер группы – 2-3 человека. Приводить какой-то фиксированный список навыков будет поспешно, за исключением, разве что, знакомства с Питоном. Важнее всего не бояться учиться и слов из раздела "Чему вы научитесь".
Компоненеты (Из каких частей состоит проект?)
TBA
Какие будут использоваться технологии?
TBA
Какие начальные требования?
TBA
Темы вводных занятий
TBA
Критерии оценки
50% – качество модели
- 1 балл – есть предсказания для 80% тестовых выборок
- 1 балл – предсказания нетривиальны, есть категорирующие модели с описаниями
- 1 балл – есть прогресс по macroF1 на трети тестовых выборок относительно своего наилучшего результата
- 1 балл – есть прогресс по macroF1 более чем на половине тестовых выборок относительно своего наилучшего результата\
- 1 балл – мы допускаем, что не для всех категорий можно удовлетворительно решить эту задачу по одним только логам. Этот балл будет, если из рассмотрения исключено будет не больше пяти категорий.
30% – качество кода
- 2 балла – покрытие тестами более 80%
- 1 балл – субъективный бонус за чистоту кода
20% – производительность и стабильность кода
- 1 балл – бонус за быстродействие (TBD)
- 1 балл – стабильность вычислений под Spark
Похожие проекты
TBA
Контактная информация
Юрий Баданин