Создайте двоичный классификатор только с положительными и непомеченными данными

11

У меня есть 2 набора данных, один с положительными экземплярами того, что я хотел бы обнаружить, и один с немечеными экземплярами. Какие методы я могу использовать?

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

Как мы можем решить эту проблему (не помечая вручную любые немаркированные данные)?

Что мы можем сделать, если у нас есть дополнительная информация о доле спама в немаркированных данных (т. Е. Что если мы оценим, что от 20 до 40% из 100000 непомеченных писем являются спамом)?

nassimhddd
источник
1
В пост должны быть добавлены теги полууправляемого и пу-обучения. Эти теги до сих пор не существуют, и в настоящее время я не могу их создать.
Дал
@DanLevin Да, [tag: полу-контролируемое обучение] имеет смысл. Добавлено :) Я не уверен с частью обучения пу (по крайней мере, я не знаю об этом), так что кто-то другой может сделать это!
Dawny33
1
ПУ-обучение является частным случаем обучения под надзором. Это менее распространенный (результаты 7K в Google), чем полу-контролируемый (298K результаты в Google), что этот вопрос является PU (помеченный набор данных просто положительные). Хотя эта тема обсуждается в академии (например, cs.uic.edu/~liub/NSF/PSC-IIS-0307239.html ), вполне возможно, что этот вопрос будет наедине с этим тегом довольно долгое время.
Дал

Ответы:

7

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

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

Надеюсь, что это имеет смысл, если вы специально ищете алгоритмы кластеризации, некоторые из них, которые лично мне нравятся, которые могут быть хорошими в этом сценарии, это FLAME и TSNE . С другой стороны, если взглянуть на впечатляющую библиотеку gensim в python, вы проделаете долгий путь к кластеризации, которую вы ищете.

Надеюсь, что это помогает и имеет смысл, оставьте комментарий, если у вас есть какие-либо вопросы.

Indico
источник
Спасибо за Ваш ответ. Правильно ли я понимаю: ваша отправная точка - объединение двух наборов данных?
nassimhddd
@ cafe876 Это, безусловно , один из способов , чтобы начать, а затем пытается воссоздать в основном кластеризацию , что приближен к оригиналу.
Indico
3

Ваша задача состоит в рамках обучения ПУ (только позитивы, много немеченных).

Это также близко к более распространенным принципам обучения под наблюдением (мало положительных и отрицательных, много немаркированных).

Есть много обзорных работ, которые вы можете посмотреть на поле.

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

Dal
источник
2

Обучите 2 генеративные модели, по одной для каждого набора данных (только спам, спам и ветчина), что даст вам вероятность того, что точка данных получена из того же распределения вероятности обучающих данных. Назначьте письма как спам или ветчину, на основании которых модель дает самую высокую вероятность документа, вытекающему из обучающих данных, используемых для подготовки его. Пример порождающие модели RBM в, автоассоциатор (в том случае, какая модель имеет самую низкую ошибку реконструкции). Вероятно, существуют также некоторые байесовские генеративные модели, которые назначают вероятность точке данных на основе некоторых обучающих данных.

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

Саймон
источник
Спасибо за Ваш ответ. Это отличный пример того, что порождающие модели могут сделать, а дискриминационные - нет.
nassimhddd