5 уроĸов из провальных АБ тестов / Сергей Гилев (Playkot)DevGAMM Conference
Многие ĸомпании уверены, что АБ тесты и опора на данных помогут им решить проблемы с принятием продуĸтовых решений. Однаĸо, лишь немногие осознают ограничения этого подхода и знают способы обезопасить себя от них. На этой сессии Сергей рассĸажет о неĸоторых опасностях подхода и посоветует, как их можно избежать. Компаниям, которые только начинают внедрять у себя АБ тестирование, это может помочь избежать этих ошибок.
5 уроĸов из провальных АБ тестов / Сергей Гилев (Playkot)DevGAMM Conference
Многие ĸомпании уверены, что АБ тесты и опора на данных помогут им решить проблемы с принятием продуĸтовых решений. Однаĸо, лишь немногие осознают ограничения этого подхода и знают способы обезопасить себя от них. На этой сессии Сергей рассĸажет о неĸоторых опасностях подхода и посоветует, как их можно избежать. Компаниям, которые только начинают внедрять у себя АБ тестирование, это может помочь избежать этих ошибок.
В настоящее время в интернете можно найти огромное количество полезной информации. Повсеместно встает проблема сбора этой информации в автоматическом режиме. Однако полностью автоматические методы извлечения информации далеко не всегда могут обеспечить необходимую полноту и точность результата. В докладе будет представлен новый инструмент для управляемого извлечения структурированных данных. Пользователь указывает примеры интересующей его информации на нескольких страницах сайта. Система автоматически строит шаблоны специального вида для поиска такой же информации на всех страницах сайта. Будет рассказано об используемых алгоритмах и проблемах, с которыми пришлось столкнуться при их реализации. Также будет дан обзор нерешенных задач и перспектив их развития.
Software craftsmanship 14 online Splitting the MonolithPavel Veinik
Каждый развивающий бизнес на определенном этапе своего жизненного цикла сталкивается с задачей масштабирования. Для монолитного приложения эта задача может оказаться сложнее, чем написать с нуля масштабируемую систему - потому что нужно учитывать миграцию данных и пользователей, а также недостаточные ресурсы.
Мы попытаемся понять, в каких случаях монолит распиливать стоит, а когда можно применить более простые подходы. Рассмотрим преимущества и недостатки монолитной архитектуры и микросервисной. Разберем несколько стратегий распиливания монолита, а также аспекты, которые необходимо учесть во время этого процесса.
Программирование как способ выражения мыслей. Levon Avakyan
Я расскажу на простейших примерах как функционирует современный компьютер, какие языки программирования бывают, для чего они используются, какие парадигмы лежат в их основе. По сути, язык программирования это инструмент, с помощью которого можно рассказать машине, чего же мы от неё хотим, тем самым воплотив свои мысли.
В настоящее время в интернете можно найти огромное количество полезной информации. Повсеместно встает проблема сбора этой информации в автоматическом режиме. Однако полностью автоматические методы извлечения информации далеко не всегда могут обеспечить необходимую полноту и точность результата. В докладе будет представлен новый инструмент для управляемого извлечения структурированных данных. Пользователь указывает примеры интересующей его информации на нескольких страницах сайта. Система автоматически строит шаблоны специального вида для поиска такой же информации на всех страницах сайта. Будет рассказано об используемых алгоритмах и проблемах, с которыми пришлось столкнуться при их реализации. Также будет дан обзор нерешенных задач и перспектив их развития.
Software craftsmanship 14 online Splitting the MonolithPavel Veinik
Каждый развивающий бизнес на определенном этапе своего жизненного цикла сталкивается с задачей масштабирования. Для монолитного приложения эта задача может оказаться сложнее, чем написать с нуля масштабируемую систему - потому что нужно учитывать миграцию данных и пользователей, а также недостаточные ресурсы.
Мы попытаемся понять, в каких случаях монолит распиливать стоит, а когда можно применить более простые подходы. Рассмотрим преимущества и недостатки монолитной архитектуры и микросервисной. Разберем несколько стратегий распиливания монолита, а также аспекты, которые необходимо учесть во время этого процесса.
Программирование как способ выражения мыслей. Levon Avakyan
Я расскажу на простейших примерах как функционирует современный компьютер, какие языки программирования бывают, для чего они используются, какие парадигмы лежат в их основе. По сути, язык программирования это инструмент, с помощью которого можно рассказать машине, чего же мы от неё хотим, тем самым воплотив свои мысли.
The 1-st lecture from the course "Java Core".
Chair of Information Net Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
Владимир Батыгин "Автоматический сбор данных по примерам"Yandex
Владимир Батыгин "Автоматический сбор данных по примерам"
Первый Я.Субботник в Санкт-Петербурге
О докладе:
В настоящее время в интернете можно найти огромное количество полезной информации. Повсеместно встает проблема сбора этой информации в автоматическом режиме. Однако полностью автоматические методы извлечения информации далеко не всегда могут обеспечить необходимую полноту и точность результата. В докладе представлен новый инструмент для управляемого извлечения структурированных данных. Пользователь указывает примеры интересующей его информации на нескольких страницах сайта. Система автоматически строит шаблоны специального вида для поиска такой же информации на всех страницах сайта. Повествуем об используемых алгоритмах и проблемах, с которыми пришлось столкнуться при их реализации. Также даем обзор нерешённых задач и перспектив их развития.
JSLab. Григорий Перетяка "Разработка SPA на мультисайтовом highload-проекте"GeeksLab Odessa
28.03.15. Одесса. Impact Hub Odessa. Конференция JSLab.
Георгий Подсветов "Путь архитектора. Введение в архитектурные паттерны."
В рамках данного доклада мы познакомимся с рядом архитектурных паттернов, поговорим об их назначениях, сильных и слабых сторонах. Обсудим возможность создания гибридных решений. Поговорим о том, почему важно знать и понимать архитектурные паттерны. И конечно же вы получите рекомендации по дальнейшему развитию этого направления.
Подробнее:
http://geekslab.co/
https://www.facebook.com/GeeksLab.co
https://www.youtube.com/user/GeeksLabVideo
Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...Mail.ru Group
Многие тестировщики по той или иной причине задумываются о том, чтобы начать писать автотесты. Доклад ориентирован на тех, кто хочет попробовать изучить автоматизацию, либо пробовал, но не справился. Почему у кого-то получилось, а у кого-то нет? Какие навыки и личные качества могут помочь нам в этом или помешать? Стоит ли пытаться? В своем докладе Максим постарался дать ответ на эти вопросы.
2. План
● Общее описание задачи
○ Формализация
○ Источники возникновения
● Особенности подготовки к решению
○ Разведочный анализ
○ Метрики качества классификации и валидация
● Основные подходы
○ Модификация задачи
○ Модификация моделей
○ Базовое решение абстрактной NLP задачи
○ Немного о нейронных сетях
● NLP ориентированное описание конкретного решения
2/33
3. Какие бывают классификации
● Бинарная - предсказать один из двух классов
● Многоклассовая(Multiclass) - предсказать один из M классов
● Многометковая(Multilabel) - предсказать k (можно 0) из M классов
● Многозадачная(Multioutput) - решить несколько задач на одних признаках
3/33
4. Где возникают такие задачи, и почему это важно
● Тексты
○ Жанры фильмов1
○ Вопросы stackexchange2
○ Научные статьи3
● Картинки и видео
○ Теги к видео youtube4
○ Интересы по профилю instagram
● Звук
● Биология5
● Медицина6
4/33
1-http://www.imdb.com/interfaces/
2-archive.org/details/stackexchange
3-arxiv.org/help/bulk_data_s3
4-research.google.com/youtube8m/
5-archive.ics.uci.edu/ml/datasets/Yeast
6-mimic.physionet.org/mimicdata/whatsnew/
5. Перед решением любой задачи
● Провести разведочный анализ
● Разобраться, можно ли свести задачу к более простой
● Выбрать метрики качества работы алгоритма
● Выбрать схему валидации
Каждый из этих пунктов имеет свои особенности в многометковой задаче
5/33
6. Особенности анализа меток
● N - количество примеров
● M - количество уникальных меток
● Y - множество уникальных комбинаций меток
● Полезные статистики:
○ Кардинальность меток:
○ Плотность меток:
○ Разнообразие меток:
○ Нормализованное разнообразие:
6/33
7. Особенности анализа меток
● N - количество примеров
● M - количество уникальных меток
● Y - множество уникальных комбинаций меток
● Полезные статистики:
○ Кардинальность меток:
○ Плотность меток:
○ Разнообразие меток:
○ Нормализованное разнообразие:
7/33
8. Особенности анализа меток
● Есть ли пренебрежимо редкие метки?
● Насколько взаимосвязаны метки?
● Возможно ли объединить некоторые метки в одну?
● Стоит ли решать многоклассовую задачу на
уникальных комбинациях меток? (Label Powersets)
● Можно ли построить иерархию на метках?
8/33
9. Особенности анализа меток
● Есть ли пренебрежимо редкие метки?
● Насколько взаимосвязаны метки?
● Возможно ли объединить некоторые метки в одну?
● Стоит ли решать многоклассовую задачу на
уникальных комбинациях меток? (Label Powersets)
● Можно ли построить иерархию на метках?
9/33
lift for “training and coaching”
10. Метрики качества классификации
Набор меток для объекта в виде бинарного вектора
● Специализированные метрики:
○ Hamming loss - нормализованное расстояние Хэмминга
○ Accuracy - доля верно предсказанных комбинаций меток
○ Ranking loss - доля неправильно ранжированных пар (верная, неверная) меток
○ Jaccard index - отношение мощностей множеств пересечения и объединения меток
● Решают проблему абстрактного сравнения алгоритмов
● Не до конца помогают понять, хорошо ли решена ваша задача
10/33
11. Метрики качества классификации
● Метрики для бинарной классификации:
○ Площади под ROC и Precision-Recall кривыми
○ Precision, recall, f1
○ Микро- или макро- усреднение
11/33
image: https://en.wikipedia.org/wiki/Precision_and_recal...svg
RankingLoss = 1 - AUCmicro
Получаем:
12. Выбор схемы валидации
● Задача пока не решена в общем случае
● Возможны следующие варианты:
○ Требовать одинакового присутствия каждой метки в фолдах
○ Требовать одинакового присутствия каждой комбинации меток
○ Комбинировать два предыдущих варианта*
12/33*-lpis.csd.auth.gr/publications/sechidis-ecmlpkdd-2011.pdf
13. Выбор схемы валидации
● Задача пока не решена в общем случае
● Возможны следующие варианты:
○ Требовать одинакового присутствия каждой метки в фолдах
○ Требовать одинакового присутствия каждой комбинации меток
○ Комбинировать два предыдущих варианта*
13/33*-lpis.csd.auth.gr/publications/sechidis-ecmlpkdd-2011.pdf
Выбрали плохо Выбрали лучше
Кросс-валидация
Отложеннаявыборка
Кросс-валидация
Отложеннаявыборка
14. Возможные варианты решения
● Модификация моделей
○ Деревья и их ансамбли
● Модифицикация задачи
○ Binary Relevance
○ Classifier Chains
○ Label Powersets
● Нейронные сети
○ Fasttext
○ Общий случай
14/33
15. Деревья и их ансамбли
● Выбираем сплит по среднему улучшению по всем меткам
● В листьях возвращаем несколько меток вместо одной
● Аналогично решается многозадачная регрессия
● Естественным образом работает и в ансамблях деревьев
● Плюсы:
○ Все задачи решаются одной моделью
○ Можно обобщить и на иерархическую классификацию*
● Минусы:
○ Ансамбли деревьев мало применяются во многих сферах возникновения задач
15/33
*-https://link.springer.com/article/10.1007/s10994-008-5077-3
16. Модификация задачи: Binary Relevance
16/33
image: linkedin.com/pulse/multi-class-classification..
● Давайте решать M задач бинарной классификации
○ По модели на класс
○ Каждая решает, относить ли объект к своему классу
● Плюсы:
○ Быстро и параллельно обучается
○ Любая разумная модель внутри
○ Отличное базовое решение
● Минусы:
○ Игнорирование взаимосвязи между классами
○ Не всегда достигается высокое качество
17. Модификация задачи: Classifier Chains
● Выбирается случайный порядок меток
● Классификатор обучается отделять свою метку на:
○ Исходных признаках
○ Предсказаниях предыдущей модели в цепочке
● Плюсы
○ Получаем учет взаимодействий между классами
○ Все еще используем линейное число моделей
● Минусы
○ Нельзя учить модели параллельно
○ Нужно делать out-of-fold предсказания внутри
○ Для хорошей производительности нужно тренировать несколько цепей
17/33
18. Модификация задачи: Classifier Chains
● Выбирается случайный порядок меток
● Классификатор обучается отделять свою метку на:
○ Исходных признаках
○ Предсказаниях предыдущей модели в цепочке
● Плюсы
○ Получаем учет взаимодействий между классами
○ Все еще используем линейное число моделей
● Минусы
○ Нельзя учить модели параллельно
○ Нужно делать out-of-fold предсказания внутри
○ Для хорошей производительности нужно тренировать несколько цепей
18/33
image: scikit-learn.org/stable/auto_examples/multioutput/plot_classifier
производительность на yeast
19. Модификация задачи: Classifier Chains
● Выбирается случайный порядок меток
● Классификатор обучается отделять свою метку на:
○ Исходных признаках
○ Предсказаниях предыдущей модели в цепочке
● Плюсы
○ Получаем учет взаимодействий между классами
○ Все еще используем линейное число моделей
● Минусы
○ Нельзя учить модели параллельно
○ Нужно делать out-of-fold предсказания внутри
○ Для хорошей производительности нужно тренировать несколько цепей
19/33
другая задача
20. Модификация задачи: Classifier Chains
● Выбирается случайный порядок меток
● Классификатор обучается отделять свою метку на:
○ Исходных признаках
○ Предсказаниях предыдущей модели в цепочке
● Плюсы
○ Получаем учет взаимодействий между классами
○ Все еще используем линейное число моделей
● Минусы
○ Нельзя учить модели параллельно
○ Нужно делать out-of-fold предсказания внутри
○ Для хорошей производительности нужно тренировать несколько цепей
20/33
другая задача
21. Базовое решение абстрактной NLP задачи
● Tf-Idf векторизация для построения признаков (TfIdfVectorizer)
○ Короткие шумные тексты: n-граммы символов
○ Длинные тексты: слова(их биграммы) + стандартная предобработка
○ min_df, max_df для регуляризация и уменьшения числа признаков
○ Не забываем удалять атрибут stop_words_
● Binary Relevance как инструмент модификации задачи
● Логистическая регрессия в качестве базовой модели
21/33
22. Нейронные сети: Fasttext
● Название полностью оправдывает себя
● Требует стандартной предобработки
● Строго говоря, softmax не подходит для многометковой задачи
22/33
image: https://arxiv.org/abs/1607.01759
23. Нейронные сети: общий случай
● Делаем сети M выходов
● Активация - сигмоид на каждом выходе
● Оптимизируем среднюю (взвешенную?) бинарную кросс-энтропию
● Решаем все M задач одной сетью
● Приятный бонус - почти всегда параметров меньше, чем у Binary
Relevance
23/33
Например
TfIdf+LR+BR RNN
800к весов 200к весов
24. Настройка порога принятия решения
● Индивидуально для каждой метки
● На независимой выборке
● Возможные варианты:
○ Так, чтобы плотность предсказанных меток совпадала с реальной
○ Так, чтобы доли меток совпадали
○ Так, чтобы хорошо решало вашу задачу
24/33
25. Слайдик с какими-то выводами
● Внимательно анализируйте метки
● Пытайтесь свести задачу к более простой
● Аккуратно выбирайте способ валидации
● Считайте метрики качества бинарной классификации
● Начинайте с TfIdf + LR + Binary Relevance для базового решения
● Используйте Fasttext, если критично важна производительность
● Обучайте нейронные сети, если критично важно качество
● Индивидуально подбирайте порог принятия решения
25/33
26. Несколько полезных библиотек
● Проект Meka1
● Scikit-multilearn2
● StarSpace3
- пока без коммерческой лицензии
26/33
1-http://meka.sourceforge.net
2-http://scikit.ml
3-https://github.com/facebookresearch/StarSpace
27. Категоризация статей
● Датасет: статьи arXiv.org с исходным кодом в LaTeX
● Метки: разделы математики/информатики/физики/астрономии
● Количество документов: ~226 тысяч статей
● Число меток после предобработки: 29
● Размер корпуса:
○ 17.8 гб сырой
○ 6.9 гб предобработанный
27/33
28. Про word2vec и doc2vec
● Обязательный инструмент в NLP
● Моделирует семантические аналогии
● Часто требует обучения под домен
● Лемматизация + границы предложений для
подготовки текстов
28/33
CBOW
skip-gram
images: https://arxiv.org/abs/1301.3781
vec(hochreiter) - vec(lstm)+ vec(cnn) ≈ vec(lecun)
29. Некоторые решения
● Tf-Idf + LR + Binary Relevance
○ Только название и автореферат
○ Лемматизация и приведение к нижнему регистру
● 2 вида doc2vec + LR + Binary Relevance
○ Конкатенация 2-х векторов
○ Не совсем real-time: вектора новых статей требуют отдельного обучения
29/33
DBOW
DM
images: https://arxiv.org/abs/1405.4053
30. Как это выглядит в 2D
● doc2vec - исходные вектора
● t-SNE - понижение размерности
30/33image: Anton Kulesh
31. Комбинируем разнородные источники признаков
● RNN для чтения заголовка
● RNN для чтения автореферата
● Полносвязная сеть для doc2vec
31/33
?
32. Сравнение результатов
Модель ROC-AUC F1 Время
LR + TF-IDF (слова) 0.822 0.584 3 мин
LR + TF-IDF (символы) 0.861 0.632 7 мин
LR + DM 0.935 0.688 0.5 мин (+4ч)
LR + DBOW 0.937 0.69 0.5 мин (+5ч)
LR + DM + DBOW 0.944 0.694 0.5 мин (+9ч)
LSTM без doc2vec 0.973 0.716 3.4 ч (+9ч)
GRU без doc2vec 0.975 0.718 2.9 ч (+9ч)
LSTM + doc2vec 0.977 0.737 3.6 ч (+13ч)
GRU + doc2vec 0.982 0.741 3.1 ч (+13ч)
lstm vs gru: http://proceedings.mlr.press/v37/jozefowicz15.pdf