SlideShare a Scribd company logo
1 of 33
Многометковая классификация в NLP
Алексей Тишуров
Data Scientist, InData Labs
План
● Общее описание задачи
○ Формализация
○ Источники возникновения
● Особенности подготовки к решению
○ Разведочный анализ
○ Метрики качества классификации и валидация
● Основные подходы
○ Модификация задачи
○ Модификация моделей
○ Базовое решение абстрактной NLP задачи
○ Немного о нейронных сетях
● NLP ориентированное описание конкретного решения
2/33
Какие бывают классификации
● Бинарная - предсказать один из двух классов
● Многоклассовая(Multiclass) - предсказать один из M классов
● Многометковая(Multilabel) - предсказать k (можно 0) из M классов
● Многозадачная(Multioutput) - решить несколько задач на одних признаках
3/33
Где возникают такие задачи, и почему это важно
● Тексты
○ Жанры фильмов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/33
Особенности анализа меток
● N - количество примеров
● M - количество уникальных меток
● Y - множество уникальных комбинаций меток
● Полезные статистики:
○ Кардинальность меток:
○ Плотность меток:
○ Разнообразие меток:
○ Нормализованное разнообразие:
6/33
Особенности анализа меток
● N - количество примеров
● M - количество уникальных меток
● Y - множество уникальных комбинаций меток
● Полезные статистики:
○ Кардинальность меток:
○ Плотность меток:
○ Разнообразие меток:
○ Нормализованное разнообразие:
7/33
Особенности анализа меток
● Есть ли пренебрежимо редкие метки?
● Насколько взаимосвязаны метки?
● Возможно ли объединить некоторые метки в одну?
● Стоит ли решать многоклассовую задачу на
уникальных комбинациях меток? (Label Powersets)
● Можно ли построить иерархию на метках?
8/33
Особенности анализа меток
● Есть ли пренебрежимо редкие метки?
● Насколько взаимосвязаны метки?
● Возможно ли объединить некоторые метки в одну?
● Стоит ли решать многоклассовую задачу на
уникальных комбинациях меток? (Label Powersets)
● Можно ли построить иерархию на метках?
9/33
lift for “training and coaching”
Метрики качества классификации
Набор меток для объекта в виде бинарного вектора
● Специализированные метрики:
○ Hamming loss - нормализованное расстояние Хэмминга
○ Accuracy - доля верно предсказанных комбинаций меток
○ Ranking loss - доля неправильно ранжированных пар (верная, неверная) меток
○ Jaccard index - отношение мощностей множеств пересечения и объединения меток
● Решают проблему абстрактного сравнения алгоритмов
● Не до конца помогают понять, хорошо ли решена ваша задача
10/33
Метрики качества классификации
● Метрики для бинарной классификации:
○ Площади под ROC и Precision-Recall кривыми
○ Precision, recall, f1
○ Микро- или макро- усреднение
11/33
image: https://en.wikipedia.org/wiki/Precision_and_recal...svg
RankingLoss = 1 - AUCmicro
Получаем:
Выбор схемы валидации
● Задача пока не решена в общем случае
● Возможны следующие варианты:
○ Требовать одинакового присутствия каждой метки в фолдах
○ Требовать одинакового присутствия каждой комбинации меток
○ Комбинировать два предыдущих варианта*
12/33*-lpis.csd.auth.gr/publications/sechidis-ecmlpkdd-2011.pdf
Выбор схемы валидации
● Задача пока не решена в общем случае
● Возможны следующие варианты:
○ Требовать одинакового присутствия каждой метки в фолдах
○ Требовать одинакового присутствия каждой комбинации меток
○ Комбинировать два предыдущих варианта*
13/33*-lpis.csd.auth.gr/publications/sechidis-ecmlpkdd-2011.pdf
Выбрали плохо Выбрали лучше
Кросс-валидация
Отложеннаявыборка
Кросс-валидация
Отложеннаявыборка
Возможные варианты решения
● Модификация моделей
○ Деревья и их ансамбли
● Модифицикация задачи
○ Binary Relevance
○ Classifier Chains
○ Label Powersets
● Нейронные сети
○ Fasttext
○ Общий случай
14/33
Деревья и их ансамбли
● Выбираем сплит по среднему улучшению по всем меткам
● В листьях возвращаем несколько меток вместо одной
● Аналогично решается многозадачная регрессия
● Естественным образом работает и в ансамблях деревьев
● Плюсы:
○ Все задачи решаются одной моделью
○ Можно обобщить и на иерархическую классификацию*
● Минусы:
○ Ансамбли деревьев мало применяются во многих сферах возникновения задач
15/33
*-https://link.springer.com/article/10.1007/s10994-008-5077-3
Модификация задачи: Binary Relevance
16/33
image: linkedin.com/pulse/multi-class-classification..
● Давайте решать M задач бинарной классификации
○ По модели на класс
○ Каждая решает, относить ли объект к своему классу
● Плюсы:
○ Быстро и параллельно обучается
○ Любая разумная модель внутри
○ Отличное базовое решение
● Минусы:
○ Игнорирование взаимосвязи между классами
○ Не всегда достигается высокое качество
Модификация задачи: Classifier Chains
● Выбирается случайный порядок меток
● Классификатор обучается отделять свою метку на:
○ Исходных признаках
○ Предсказаниях предыдущей модели в цепочке
● Плюсы
○ Получаем учет взаимодействий между классами
○ Все еще используем линейное число моделей
● Минусы
○ Нельзя учить модели параллельно
○ Нужно делать out-of-fold предсказания внутри
○ Для хорошей производительности нужно тренировать несколько цепей
17/33
Модификация задачи: Classifier Chains
● Выбирается случайный порядок меток
● Классификатор обучается отделять свою метку на:
○ Исходных признаках
○ Предсказаниях предыдущей модели в цепочке
● Плюсы
○ Получаем учет взаимодействий между классами
○ Все еще используем линейное число моделей
● Минусы
○ Нельзя учить модели параллельно
○ Нужно делать out-of-fold предсказания внутри
○ Для хорошей производительности нужно тренировать несколько цепей
18/33
image: scikit-learn.org/stable/auto_examples/multioutput/plot_classifier
производительность на yeast
Модификация задачи: Classifier Chains
● Выбирается случайный порядок меток
● Классификатор обучается отделять свою метку на:
○ Исходных признаках
○ Предсказаниях предыдущей модели в цепочке
● Плюсы
○ Получаем учет взаимодействий между классами
○ Все еще используем линейное число моделей
● Минусы
○ Нельзя учить модели параллельно
○ Нужно делать out-of-fold предсказания внутри
○ Для хорошей производительности нужно тренировать несколько цепей
19/33
другая задача
Модификация задачи: Classifier Chains
● Выбирается случайный порядок меток
● Классификатор обучается отделять свою метку на:
○ Исходных признаках
○ Предсказаниях предыдущей модели в цепочке
● Плюсы
○ Получаем учет взаимодействий между классами
○ Все еще используем линейное число моделей
● Минусы
○ Нельзя учить модели параллельно
○ Нужно делать out-of-fold предсказания внутри
○ Для хорошей производительности нужно тренировать несколько цепей
20/33
другая задача
Базовое решение абстрактной NLP задачи
● Tf-Idf векторизация для построения признаков (TfIdfVectorizer)
○ Короткие шумные тексты: n-граммы символов
○ Длинные тексты: слова(их биграммы) + стандартная предобработка
○ min_df, max_df для регуляризация и уменьшения числа признаков
○ Не забываем удалять атрибут stop_words_
● Binary Relevance как инструмент модификации задачи
● Логистическая регрессия в качестве базовой модели
21/33
Нейронные сети: Fasttext
● Название полностью оправдывает себя
● Требует стандартной предобработки
● Строго говоря, softmax не подходит для многометковой задачи
22/33
image: https://arxiv.org/abs/1607.01759
Нейронные сети: общий случай
● Делаем сети M выходов
● Активация - сигмоид на каждом выходе
● Оптимизируем среднюю (взвешенную?) бинарную кросс-энтропию
● Решаем все M задач одной сетью
● Приятный бонус - почти всегда параметров меньше, чем у Binary
Relevance
23/33
Например
TfIdf+LR+BR RNN
800к весов 200к весов
Настройка порога принятия решения
● Индивидуально для каждой метки
● На независимой выборке
● Возможные варианты:
○ Так, чтобы плотность предсказанных меток совпадала с реальной
○ Так, чтобы доли меток совпадали
○ Так, чтобы хорошо решало вашу задачу
24/33
Слайдик с какими-то выводами
● Внимательно анализируйте метки
● Пытайтесь свести задачу к более простой
● Аккуратно выбирайте способ валидации
● Считайте метрики качества бинарной классификации
● Начинайте с TfIdf + LR + Binary Relevance для базового решения
● Используйте Fasttext, если критично важна производительность
● Обучайте нейронные сети, если критично важно качество
● Индивидуально подбирайте порог принятия решения
25/33
Несколько полезных библиотек
● Проект Meka1
● Scikit-multilearn2
● StarSpace3
- пока без коммерческой лицензии
26/33
1-http://meka.sourceforge.net
2-http://scikit.ml
3-https://github.com/facebookresearch/StarSpace
Категоризация статей
● Датасет: статьи arXiv.org с исходным кодом в LaTeX
● Метки: разделы математики/информатики/физики/астрономии
● Количество документов: ~226 тысяч статей
● Число меток после предобработки: 29
● Размер корпуса:
○ 17.8 гб сырой
○ 6.9 гб предобработанный
27/33
Про word2vec и doc2vec
● Обязательный инструмент в NLP
● Моделирует семантические аналогии
● Часто требует обучения под домен
● Лемматизация + границы предложений для
подготовки текстов
28/33
CBOW
skip-gram
images: https://arxiv.org/abs/1301.3781
vec(hochreiter) - vec(lstm)+ vec(cnn) ≈ vec(lecun)
Некоторые решения
● Tf-Idf + LR + Binary Relevance
○ Только название и автореферат
○ Лемматизация и приведение к нижнему регистру
● 2 вида doc2vec + LR + Binary Relevance
○ Конкатенация 2-х векторов
○ Не совсем real-time: вектора новых статей требуют отдельного обучения
29/33
DBOW
DM
images: https://arxiv.org/abs/1405.4053
Как это выглядит в 2D
● doc2vec - исходные вектора
● t-SNE - понижение размерности
30/33image: Anton Kulesh
Комбинируем разнородные источники признаков
● RNN для чтения заголовка
● RNN для чтения автореферата
● Полносвязная сеть для doc2vec
31/33
?
Сравнение результатов
Модель 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
Благодарю за внимание!
Алексей Тишуров
Data Scientist
a_tishurov@indatalabs.com
alexeitishurov@gmail.com
33/33

More Related Content

What's hot

Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.
Vadim Kruchkov
 
Tests bogachkov last_version_120412
Tests bogachkov last_version_120412Tests bogachkov last_version_120412
Tests bogachkov last_version_120412
Vladimir Kukharenko
 
Федор Романенко - "Ранжирование: от строчки кода до Матрикснета"
Федор Романенко - "Ранжирование: от строчки кода до Матрикснета"Федор Романенко - "Ранжирование: от строчки кода до Матрикснета"
Федор Романенко - "Ранжирование: от строчки кода до Матрикснета"
Rostislav Shorgin
 

What's hot (12)

Математика для тестировщиков
Математика для тестировщиковМатематика для тестировщиков
Математика для тестировщиков
 
Machine
MachineMachine
Machine
 
Система критериев оценки качества тестовых заданий
Система критериев оценки качества тестовых заданийСистема критериев оценки качества тестовых заданий
Система критериев оценки качества тестовых заданий
 
Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.Работа с унаследованным кодом. Есть ли жизнь после коммита.
Работа с унаследованным кодом. Есть ли жизнь после коммита.
 
Tests bogachkov last_version_120412
Tests bogachkov last_version_120412Tests bogachkov last_version_120412
Tests bogachkov last_version_120412
 
ооп презентация
ооп   презентацияооп   презентация
ооп презентация
 
My test x
My test xMy test x
My test x
 
Attacks against machine learning algorithms
Attacks against machine learning algorithmsAttacks against machine learning algorithms
Attacks against machine learning algorithms
 
Uml
UmlUml
Uml
 
Омар Ганиев (Россия). Обзор атак на модели машинного обучения
Омар Ганиев (Россия). Обзор атак на модели машинного обученияОмар Ганиев (Россия). Обзор атак на модели машинного обучения
Омар Ганиев (Россия). Обзор атак на модели машинного обучения
 
Федор Романенко - "Ранжирование: от строчки кода до Матрикснета"
Федор Романенко - "Ранжирование: от строчки кода до Матрикснета"Федор Романенко - "Ранжирование: от строчки кода до Матрикснета"
Федор Романенко - "Ранжирование: от строчки кода до Матрикснета"
 
Составные части объектного подхода
Составные части объектного подходаСоставные части объектного подхода
Составные части объектного подхода
 

Similar to Multilabel classification in nlp

Сергей Терехов — Активное обучение при малой доле примеров с известными ответами
Сергей Терехов — Активное обучение при малой доле примеров с известными ответамиСергей Терехов — Активное обучение при малой доле примеров с известными ответами
Сергей Терехов — Активное обучение при малой доле примеров с известными ответами
Yandex
 
Автоматический сбор данных по примерам
Автоматический сбор данных по примерамАвтоматический сбор данных по примерам
Автоматический сбор данных по примерам
yaevents
 
ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)
ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)
ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)
ScalaNsk
 
20120226 information retrieval raskovalov_lecture03-04
20120226 information retrieval raskovalov_lecture03-0420120226 information retrieval raskovalov_lecture03-04
20120226 information retrieval raskovalov_lecture03-04
Computer Science Club
 
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Nikolay Grebenshikov
 
20120415 videorecognition konushin_lecture06
20120415 videorecognition konushin_lecture0620120415 videorecognition konushin_lecture06
20120415 videorecognition konushin_lecture06
Computer Science Club
 
Владимир Батыгин "Автоматический сбор данных по примерам"
Владимир Батыгин "Автоматический сбор данных по примерам"Владимир Батыгин "Автоматический сбор данных по примерам"
Владимир Батыгин "Автоматический сбор данных по примерам"
Yandex
 
Автоматический сбор данных по примерам
Автоматический сбор данных по примерамАвтоматический сбор данных по примерам
Автоматический сбор данных по примерам
yaevents
 
20111001 information retrieval raskovalov_lecture2
20111001 information retrieval raskovalov_lecture220111001 information retrieval raskovalov_lecture2
20111001 information retrieval raskovalov_lecture2
Computer Science Club
 

Similar to Multilabel classification in nlp (20)

Сергей Терехов — Активное обучение при малой доле примеров с известными ответами
Сергей Терехов — Активное обучение при малой доле примеров с известными ответамиСергей Терехов — Активное обучение при малой доле примеров с известными ответами
Сергей Терехов — Активное обучение при малой доле примеров с известными ответами
 
Автоматический сбор данных по примерам
Автоматический сбор данных по примерамАвтоматический сбор данных по примерам
Автоматический сбор данных по примерам
 
Введение в машинное обучение
Введение в машинное обучениеВведение в машинное обучение
Введение в машинное обучение
 
Интерпретация моделей машинного обучения
Интерпретация моделей машинного обученияИнтерпретация моделей машинного обучения
Интерпретация моделей машинного обучения
 
ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)
ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)
ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)
 
Software craftsmanship 14 online Splitting the Monolith
Software craftsmanship 14 online Splitting the MonolithSoftware craftsmanship 14 online Splitting the Monolith
Software craftsmanship 14 online Splitting the Monolith
 
20120226 information retrieval raskovalov_lecture03-04
20120226 information retrieval raskovalov_lecture03-0420120226 information retrieval raskovalov_lecture03-04
20120226 information retrieval raskovalov_lecture03-04
 
Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей. Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей.
 
Ror - The Beginning
Ror - The BeginningRor - The Beginning
Ror - The Beginning
 
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
 
Дизайн больших приложений в ФП
Дизайн больших приложений в ФПДизайн больших приложений в ФП
Дизайн больших приложений в ФП
 
Тестирование Нейронных сетей
Тестирование Нейронных сетейТестирование Нейронных сетей
Тестирование Нейронных сетей
 
20120415 videorecognition konushin_lecture06
20120415 videorecognition konushin_lecture0620120415 videorecognition konushin_lecture06
20120415 videorecognition konushin_lecture06
 
Java Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroJava Core. Lecture# 1. Intro
Java Core. Lecture# 1. Intro
 
Владимир Батыгин "Автоматический сбор данных по примерам"
Владимир Батыгин "Автоматический сбор данных по примерам"Владимир Батыгин "Автоматический сбор данных по примерам"
Владимир Батыгин "Автоматический сбор данных по примерам"
 
Автоматический сбор данных по примерам
Автоматический сбор данных по примерамАвтоматический сбор данных по примерам
Автоматический сбор данных по примерам
 
Разработка SPA на мультисайтовом highload-проекте
Разработка SPA на мультисайтовом highload-проектеРазработка SPA на мультисайтовом highload-проекте
Разработка SPA на мультисайтовом highload-проекте
 
JSLab. Григорий Перетяка "Разработка SPA на мультисайтовом highload-проекте"
JSLab. Григорий Перетяка "Разработка SPA на мультисайтовом highload-проекте"JSLab. Григорий Перетяка "Разработка SPA на мультисайтовом highload-проекте"
JSLab. Григорий Перетяка "Разработка SPA на мультисайтовом highload-проекте"
 
20111001 information retrieval raskovalov_lecture2
20111001 information retrieval raskovalov_lecture220111001 information retrieval raskovalov_lecture2
20111001 information retrieval raskovalov_lecture2
 
Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...
Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...
Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...
 

Multilabel classification in nlp

  • 1. Многометковая классификация в NLP Алексей Тишуров Data Scientist, InData Labs
  • 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
  • 33. Благодарю за внимание! Алексей Тишуров Data Scientist a_tishurov@indatalabs.com alexeitishurov@gmail.com 33/33