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


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.