Як передбачити результат лише з позитивних випадків як навчання?


21

Для простоти, скажімо, я працюю на класичному прикладі спам / не-спам-листів.

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

Який алгоритм (и) можна використовувати, щоб зробити обґрунтований прогноз у цій ситуації?

На даний момент я думаю про метод, заснований на відстані, який би сказав мені, наскільки мій електронний лист схожий на відомий спам-лист. Які у мене варіанти?

Більш загально, чи можу я користуватися контрольованим методом навчання, чи мені обов'язково потрібно мати у своєму навчальному наборі негативні випадки? Чи обмежуюся я підходами навчання без нагляду? А як щодо напівпідконтрольних методів?


1
Будь-який алгоритм навчання, який ви будете використовувати, передбачає, що всі листи будуть спамом. Ви повинні мати приклади з двох категорій для будь-якого розумного навчання.
JohnRos

Гаразд, це виключає класичний підхід до нагляду під контролем. Але чи існує алгоритм, який повертає якусь метрику подібності? Напр .: цей електронний лист дуже схожий на спам, цей інший - не.
enricoferrero

6
@JohnRos неправда, навчання на основі позитивних та незазначених даних - велика тема напівпідконтрольного навчання, і це не так, як ви описуєте.
Marc Claesen

5
@MarcClaesen: Мені незнайомий був цей (дуже крутий) напрямок досліджень. Я бачу, що ця магія полягає в припущенні, що неозначені дані - це суміш спаму та неспаму, що робить проблему вирішуваною.
JohnRos

2
@JohnRos точно, і я згоден з коефіцієнтом прохолоди. Мені здається, що це дуже цікаво - це той факт, що нещодавно нам вдалося показати, як обчислювати традиційні показники ефективності на основі таблиць на випадок надзвичайних ситуацій (наприклад, точність, точність, нагадування, ...) без відомих негативів !
Marc Claesen

Відповіді:


19

Це називається навчанням за позитивними і немеченими даними, або навчанням через короткий термін, і є активною нішею нагляду під наглядом.

Якщо коротко, важливо використовувати незазначені дані в процесі навчання, оскільки це дає значно покращені моделі порівняно з так званими однокласними класифікаторами, які навчаються виключно за відомими позитивами. Дані без маркування можна включити декількома способами, переважаючими підходами є наступні:

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

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

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

1
Відмінно! Велике спасибі за посилання. RESVM і пакетний SVM, схоже, працюють аналогічно в навчальних умовах з ПУ. Чи можете ви порекомендувати реалізацію (бажано в R) будь-якого алгоритму? На жаль, жодна з них не включається в карету.
enricoferrero

1
@enricoferrero Так, вони виконують аналогічно, якщо немає помилкових (відомих) позитивів, і в цьому випадку RESVM значно перевершує перенесення SVM (я створив RESVM для цієї мети, оскільки додаток, над яким я працюю, має помилкові позитиви). Я не думаю, що є R-реалізації легко доступні, але ви можете реалізувати обидві досить легко, обернувши SVM-реалізацію типу kernlabабо e1071. Зауважте, що і SVM, і RESVM мають ряд гіперпараметрів, які вам доведеться оптимізувати, для чого я рекомендую бібліотеку Optunity (має інтерфейс R).
Marc Claesen

1
@enricoferrero У мене реалізація RESVM в командному рядку доступна на сайті github.com/claesenm/resvm , хоча цей код недостатньо відшліфований. Ця конкретна репо написана в Python і використовується як драйвер для пакету EnsembleSVM .
Marc Claesen

Схоже , ще один варіант хороший для алгоритму тарованого SVM може використовувати MLr пакет в R з пакувальної обгортки навколо SVM навчається .
enricoferrero

7

Я припускаю, що у ваших 18000 випадків не так багато випадків спаму. Для використання підходу під контролем навчання до цього потрібно мати у своїх даних більше 1 категорії / класу. Оскільки ви знаєте, що 2000 випадків є спамом, ви можете позначити решту 18000 випадків як "невідому категорію" і навчити будь-яку контрольовану модель навчання передбачати, чи є справа у спамі чи невідомій категорії. Потім перевірте точність вибіркової моделі, щоб побачити, наскільки добре працює модель, щоб розрізнити дві категорії. Якщо вона працює добре, то моє припущення щодо кількох випадків спаму в категорії "невідомо" є обґрунтованим. Якщо це не добре, тоді вам доведеться використовувати непідвладного учня (наприклад, kmeans тощо) для кластеризації та визначення окремих однорідних груп у ваших даних. Потім визначте, які кластери містять найбільше 2000 спам-листів, а які - ні, і позначати їх відповідно спамом та не спамом. Далі ви можете приступити до моделювання за допомогою контрольованого учня, як я описав раніше.


2

Те, про що йдеться в ОП, - це однокласне класифікаційне завдання, яке є дуже складним.

Про це завдання існує безліч робіт у різних галузях дослідження. Я також написав одну Ефективну схему перевірки внутрішнього авторства на основі ансамблевого навчання . Дуже легко його адаптувати для класифікації спаму / не спаму, а не авторів. Спробуйте, і повідомте мене, якщо вам потрібні додаткові деталі ...


Я отримую помилку 404 при переході за вашим посиланням.
enricoferrero

Був друкарський помилок. Вибачте за це, має працювати зараз ;-)
Неопрацьоване виключення
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.