Работа с отрицательным классом, скрытым в немаркированных данных

Проблема, которая продолжает проявляться в работе, - это отсутствие помеченного отрицательного класса в контексте необходимости обучения двоичного классификатора. Как правило, проблема связана с ужасно несбалансированными наборами данных и нехваткой времени, я часто выбирал упрощенный путь суб-выборки неизвестного набора и рассматривал их как неизвестные. Очевидно, это не идеально, поскольку неизвестный набор загрязнен, и в результате классификаторы не так хорошо обучаются. Тем не менее, в условиях дикой природы, с реальными дедлайнами, подход был эффективным по времени, а результаты часто оказывались на удивление полезными.

Недавно мне посчастливилось несколько дней немного почитать по этой теме. Я нашел несколько интересных подходов и подумал, что стоит сделать несколько заметок, и они превратились в этот пост.

Есть несколько разных подходов к PU. Все подходы включают выделение набора так называемых надежных отрицательных значений (RN) из неизвестного набора данных. Насколько я читал, наиболее часто цитируемые начальные подходы приписываются Liu et al. 2002 и 2003, в которых набор RN итеративно выращивается из неизвестного класса.

Другой подход, который мне понравился, был описан Fusilier et al. 2015. В своей статье авторы описывают подход, который итеративно сокращает набор RN изнутри неизвестного класса, эффективно сужая сеть вокруг тех случаев, которые наиболее не похожи на положительный класс. Этот подход мне понравился, поскольку он неявно имеет дело с классовым дисбалансом.

Третий подход, с которым я столкнулся (Mordelet & Vert, 2013), который также неявно учитывает дисбаланс классов, включает использование мешков или случайную выборку из неизвестного класса и обработку выборки как отрицательной. Это отличается от моего наивного подхода, упомянутого выше, в том, что процесс повторяется много раз и обучаются серии моделей. Модели характеризуют положительный класс против неизвестных наборов данных с различной степенью загрязнения. Полученные в результате оценки модели объединяются, и результат должен лучше изолировать надежные отрицательные результаты от неизвестного класса.

Ниже я подробно расскажу о каждом из трех подходов.

Методы

«Оригинальный» подход (Лю и др., 2002 и 2003 гг.)

Учитывая обучающий набор, содержащий только положительные (P) и неизвестные (U) классы, выполните следующие шаги:

  1. Рассматривая все U как отрицательные (N), обучите классификатор P vs. U
  2. Используя классификатор, оцените неизвестный класс и выделите набор «надежных» отрицательных результатов (RN).
  3. Обучите новый классификатор P по сравнению с RN, используйте его для оценки оставшегося U, выделения дополнительных RN и увеличения RN.
  4. Повторите шаг 3, итеративно увеличивая набор RN до тех пор, пока не будет выполнено условие остановки.

Условие остановки считается выполненным, если новые отрицательные случаи не классифицируются.

Где Q определяется как набор неизвестных, классифицированных как отрицательные, а i - итератор, условие остановки определяется как:

|Qi| > 0

Модифицированный подход (Fusilier et al.2014)

Учитывая обучающий набор, содержащий только положительные (P) и неизвестные (U) классы, выполните следующие шаги:

  1. Рассматривая все U как отрицательные (N), обучите классификатор P vs. U
  2. Используя классификатор, оцените неизвестный класс и выделите набор «надежных» отрицательных результатов (RN).
  3. Обучите новый классификатор P vs. RN. Оценить RN и исключить предсказанные положительные результаты из RN
  4. Повторите шаг 3, итеративно уточняя набор RN, пока не будет выполнено условие остановки.

Где Q определяется как набор неизвестных, классифицированных как отрицательные, а i - итератор, условие остановки определяется как:

|Qi| <= |Q(i-1)| & |P| < |Qi|

Условие остановки гарантирует, что размер Q уменьшается (избегая внезапных значительных сокращений размера RN), в то время как набор RN никогда не становится меньше, чем набор P. Более подробно:

в то время как размер набора неизвестных, классифицированных как отрицательные на этой итерации, меньше или равен размеру набора неизвестных, классифицированных как отрицательные на предыдущей итерации, а размер набора положительных классов меньше, чем набор уточненных RN, полученные в результате этой итерации

Подход с мешком (индуктивный) (Mordelet & Vert, 2013)

Учитывая обучающий набор, содержащий только положительные (P) и неизвестные (U), где K = размер образцов начальной загрузки и T = количество образцов, выполните следующие шаги: 1. Нарисуйте образец начальной загрузки Ut размера K из U 2. Обучите классификатор P vs Ut 3. Повторите шаги 1 и 2 T раз. 4. Оцените тестовые данные с помощью ансамблевого подхода, используя модели с мешками.

Критерий остановки здесь определяется значением T, и авторы предполагают, что обычно не так много дополнительной ценности можно получить, установив T ›100. Однако, судя по их графикам, где |P| и K оба большие, есть небольшие изменения. выше T = 5. Я подозреваю, что стоит попытаться отслеживать это во время обучения, если это возможно, или установить критерий типа ранней остановки в вашей функции, потому что в зависимости от ваших временных ограничений, поскольку обучение 100 моделей может быть нежизнеспособным.

На что нужно обратить внимание:

- В большинстве статей используется SVM, но они также, как правило, связаны с проблемами НЛП. Имеет ли большое значение семейство классификаторов?

- Как в исходных документах указывается пороговое значение для определения «надежности».

- Модифицированный подход: WRT критерий остановки, почему Q может увеличиваться с итерациями?

- Подход с упаковкой: подумайте, как лучше всего наказывать ложноотрицательные результаты.

- Выбор отсечки?

Заключение

Эти три метода обеспечивают разумные подходы к проблеме обучения PU, но только модифицированные подходы и подходы с упаковкой предоставляют неотъемлемые способы работы с несбалансированными данными. Я планирую попробовать реализовать эти два подхода и сравнить их результаты. Хотя я не могу поделиться данными публично, я постараюсь поделиться кодом и общими результатами в блоге и на GitHub. В основном мы работаем на Python / PySpark или Scala / Spark. Несколько хороших ссылок:

использованная литература

Фузильер Д.Х., Монтес-и-Гомес М., Россо П., Гусман Кабрера Р. (2015) Выявление положительных и отрицательных ложных мнений с помощью PU-обучения. Inf Process Manag 51: 433–443. DOI: 10.1016 / j.ipm.2014.11.001

Лю Б., Дай И, Ли Х и др. (2003) Создание классификаторов текста с использованием положительных и немаркированных примеров. В: Третья международная конференция IEEE по интеллектуальному анализу данных. стр 179–186

Лю Б., Ли В.С., Ю П.С., Ли Х (2002) Классификация текстовых документов с частичным контролем. В: Proc. 19-й международный Конф. по машинному обучению. стр. 387–394

Морделет Ф., Верт Дж.П. (2014). SVM-пакет, позволяющий учиться на положительных и немаркированных примерах. Pattern Recognit Lett 37: 201–209. DOI: 10.1016 / j.patrec.2013.06.010

Первоначально опубликовано на philmassie.github.io.