Как предсказать результат только с положительными случаями в качестве обучения?


21

Ради простоты, скажем, я работаю над классическим примером писем со спамом / без спама.

У меня есть набор из 20000 писем. Из них я знаю, что 2000 являются спамом, но у меня нет примеров писем, не являющихся спамом. Я хотел бы предсказать, являются ли оставшиеся 18000 спамом или нет. В идеале, результат, который я ищу, - это вероятность (или значение p) того, что электронная почта является спамом.

Какой алгоритм (ы) я могу использовать, чтобы сделать разумный прогноз в этой ситуации?

В данный момент я думаю о дистанционном методе, который бы сказал мне, насколько моя электронная почта похожа на известную спам-электронную почту. Какие варианты у меня есть?

В более общем смысле, могу ли я использовать метод обучения под наблюдением или мне обязательно нужно иметь отрицательные случаи в моем тренировочном наборе, чтобы сделать это? Я ограничен необученными подходами к обучению? Как насчет методов под наблюдением?


1
Любой алгоритм обучения, который вы будете использовать, предсказывает, что все письма будут спамом. Вы должны иметь примеры из двух категорий для любого разумного обучения.
— JohnRos

Хорошо, это исключило бы классический подход к обучению под наблюдением. Но есть ли алгоритм, который возвращает какие-то метрики подобия? Например, это электронное письмо очень похоже на спам, другое - нет.
— Энрикоферреро

6
@JohnRos не соответствует действительности, обучение на позитивных и немаркированных данных является большой темой в обучении под наблюдением, и это совсем не то, что вы описываете.
— Марк Класен

5
@MarcClaesen: я был незнаком с этой (очень крутой) линией исследований. Я вижу, что это волшебство в предположении, что немаркированные данные представляют собой смесь спама и не спама, что делает проблему разрешимой.
— JohnRos

Ответы:


19

Это называется обучением на основе положительных и немаркированных данных, или сокращенным обучением для ПУ, и представляет собой активную нишу в обучении с полным контролем.

Вкратце, важно использовать немаркированные данные в процессе обучения, поскольку это дает значительно улучшенные модели по сравнению с так называемыми одноклассными классификаторами, которые обучаются исключительно на известных положительных результатах. Немеченые данные могут быть включены несколькими способами, при этом преобладают следующие подходы:

  • каким-то образом вывести набор вероятных негативов из немаркированных данных, а затем обучить контролируемую модель, чтобы отличать известные позитивы от этих предполагаемых негативов.
  • рассматривайте немаркированный набор как отрицательный и каким-то образом учитывайте шум метки, который, как известно, присутствует.

Я активно работаю в этой области, и вместо того, чтобы резюмировать ее здесь для вас, я рекомендую прочитать две мои статьи и ссылки в них, чтобы получить обзор домена:

  • Современный метод изучения моделей на основе положительных и немаркированных данных (официальная публикация доступна здесь ): http://arxiv.org/abs/1402.3144
  • Методика вычисления часто используемых метрик производительности без известных негативов (на рассмотрении, это первый в своем роде): http://arxiv.org/abs/1504.06837

1
Превосходно! Большое спасибо за ссылки. RESVM и пакетированный SVM, кажется, работают аналогично в условиях обучения PU. Можете ли вы порекомендовать реализации (желательно в R) любого из алгоритмов? К сожалению, ни один из них не включен в карет.
— enricoferrero

1
@enricoferrero Да, они работают аналогично, если только нет ложных (известных) положительных результатов, и в этом случае RESVM значительно превосходит пакетные SVM (я разработал RESVM для этой цели, поскольку приложение, над которым я работаю, имеет ложные положительные результаты). Я не думаю, что есть R-реализации, которые легко доступны, но вы можете реализовать их обе легко, обернув реализацию SVM, например kernlabили e1071. Обратите внимание, что SVM и RESVM для пакетов имеют ряд гиперпараметров, которые необходимо оптимизировать, для которых я рекомендую библиотеку Optunity (имеет интерфейс R).
— Марк Клазен

1
@enricoferrero У меня есть реализация RESVM для командной строки, доступная по адресу github.com/claesenm/resvm , хотя этот код не очень хорошо отлажен . Этот конкретный репозиторий написан на Python и используется в качестве драйвера для пакета EnsembleSVM .
— Марк Клазен,

Похоже , еще один вариант хорош для алгоритма тарированного SVM может использовать MLr пакет в R с упаковочной обертки вокруг SVM обучающегося .
— Энрикоферреро

7

Я предполагаю, что в ваших 18000 делах спама не так много. Чтобы использовать контролируемый подход к обучению, вам нужно иметь более 1 категории / класса в ваших данных. Поскольку вы знаете, что 2000 случаев являются спамом, вы можете пометить оставшиеся 18 000 случаев как «неизвестную категорию» и обучить любую контролируемую модель обучения прогнозированию, относится ли случай к спаму или к неизвестной категории. Затем проверьте точность модели из образца, чтобы увидеть, насколько хорошо работает модель, чтобы различать две категории. Если это работает хорошо, то мое предположение о нескольких случаях спама в категории «неизвестно» оправдано. Если он не работает должным образом, вам придется использовать неконтролируемого ученика (например, kmeans и т. Д.), Чтобы кластеризовать и идентифицировать отдельные однородные группы в ваших данных. Затем определите, какие кластеры содержат большинство спам-писем 2000 года, а какие нет, и маркируйте их как спам и не спам соответственно. Затем вы можете приступить к моделированию, используя ученика под наблюдением, как я описал ранее.


2

То, о чем говорит ФП, является задачей классификации с одним классом, которая является очень сложной.

Есть много работ по этой задаче в различных областях исследований. Я также написал одну Эффективную схему внутренней проверки авторства, основанную на ансамблевом обучении . Его очень легко адаптировать, чтобы классифицировать спам / не спам, а не авторов. Попробуйте и дайте мне знать, если вам нужна дополнительная информация ...


Я получаю ошибку 404 при переходе по вашей ссылке.
— Энрикоферреро

Была опечатка. Извините за это, должен работать сейчас ;-)
— необработанное исключение
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.