Ради простоты, скажем, я работаю над классическим примером писем со спамом / без спама.
У меня есть набор из 20000 писем. Из них я знаю, что 2000 являются спамом, но у меня нет примеров писем, не являющихся спамом. Я хотел бы предсказать, являются ли оставшиеся 18000 спамом или нет. В идеале, результат, который я ищу, - это вероятность (или значение p) того, что электронная почта является спамом.
Какой алгоритм (ы) я могу использовать, чтобы сделать разумный прогноз в этой ситуации?
В данный момент я думаю о дистанционном методе, который бы сказал мне, насколько моя электронная почта похожа на известную спам-электронную почту. Какие варианты у меня есть?
В более общем смысле, могу ли я использовать метод обучения под наблюдением или мне обязательно нужно иметь отрицательные случаи в моем тренировочном наборе, чтобы сделать это? Я ограничен необученными подходами к обучению? Как насчет методов под наблюдением?
Ответы:
Это называется обучением на основе положительных и немаркированных данных, или сокращенным обучением для ПУ, и представляет собой активную нишу в обучении с полным контролем.
Вкратце, важно использовать немаркированные данные в процессе обучения, поскольку это дает значительно улучшенные модели по сравнению с так называемыми одноклассными классификаторами, которые обучаются исключительно на известных положительных результатах. Немеченые данные могут быть включены несколькими способами, при этом преобладают следующие подходы:
Я активно работаю в этой области, и вместо того, чтобы резюмировать ее здесь для вас, я рекомендую прочитать две мои статьи и ссылки в них, чтобы получить обзор домена:
источник
kernlab
илиe1071
. Обратите внимание, что SVM и RESVM для пакетов имеют ряд гиперпараметров, которые необходимо оптимизировать, для которых я рекомендую библиотеку Optunity (имеет интерфейс R).Я предполагаю, что в ваших 18000 делах спама не так много. Чтобы использовать контролируемый подход к обучению, вам нужно иметь более 1 категории / класса в ваших данных. Поскольку вы знаете, что 2000 случаев являются спамом, вы можете пометить оставшиеся 18 000 случаев как «неизвестную категорию» и обучить любую контролируемую модель обучения прогнозированию, относится ли случай к спаму или к неизвестной категории. Затем проверьте точность модели из образца, чтобы увидеть, насколько хорошо работает модель, чтобы различать две категории. Если это работает хорошо, то мое предположение о нескольких случаях спама в категории «неизвестно» оправдано. Если он не работает должным образом, вам придется использовать неконтролируемого ученика (например, kmeans и т. Д.), Чтобы кластеризовать и идентифицировать отдельные однородные группы в ваших данных. Затем определите, какие кластеры содержат большинство спам-писем 2000 года, а какие нет, и маркируйте их как спам и не спам соответственно. Затем вы можете приступить к моделированию, используя ученика под наблюдением, как я описал ранее.
источник
То, о чем говорит ФП, является задачей классификации с одним классом, которая является очень сложной.
Есть много работ по этой задаче в различных областях исследований. Я также написал одну Эффективную схему внутренней проверки авторства, основанную на ансамблевом обучении . Его очень легко адаптировать, чтобы классифицировать спам / не спам, а не авторов. Попробуйте и дайте мне знать, если вам нужна дополнительная информация ...
источник