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