Двоичная классификация датированных документов с сезонной вариацией класса
У меня есть коллекция обучающих документов с датами публикации, где каждый документ помечен как принадлежащий (или нет) к какой-либо теме T. Я хочу обучить модель, которая будет предсказывать для нового документа (с датой публикации), принадлежит ли он или нет T, где дата публикации может быть в прошлом или в будущем. Предположим, что я разложил текст каждого учебного документа на набор функций (например, TF-IDF слов или n-грамм), пригодных для анализа с помощью соответствующего алгоритма двоичной классификации, предоставляемого библиотекой, такой как Weka (например, многочленный наивный Байес, случайные леса или SVM). Понятие, которое нужно изучить, проявляет множественность сезонности; т.е. предыдущая вероятность того, что произвольный документ, опубликованный в данную дату, принадлежит T, сильно зависит от того, когда дата попадает в 4-летний цикл (из-за выборов), где он попадает в годовой цикл (из-за выходных), и в день недели.
Мои исследования показывают, что алгоритмы классификации обычно предполагают (как часть их статистических моделей), что обучающие данные выбираются случайным образом из того же пула данных, к которому в конечном итоге будет применяться модель. Когда распределение классов в обучающих данных существенно отличается от известного распределения в дикой природе, это приводит к так называемой проблеме "дисбаланса классов". Существуют способы компенсации этого, в том числе недопредставленные классы с чрезмерной выборкой, перепредставленные классы с недостаточной выборкой и использование чувствительной к стоимости классификации. Это позволяет создателю модели неявно указывать предыдущую вероятность того, что новый документ будет классифицирован положительно, но важно (и, к сожалению, для моих целей), эта предварительная вероятность предполагается равной для всех новых документов.
Мне требуется больше гибкости в моей модели. Из-за сезонности концепции при классификации нового документа модель должна явно учитывать дату публикации при определении предыдущей вероятности того, что документ принадлежит T, и когда модель вычисляет апостериорную вероятность принадлежности к T в свете особенности документа, эта предварительная вероятность должна быть должным образом учтена. Я ищу реализацию классификатора, которая либо (1) выполняет сложную регрессию априорных вероятностей на основе дат в классификаторе, либо (2) может быть расширена с помощью указанной пользователем функции регрессии, которая принимает дату в качестве входных данных и дает априорную вероятность в качестве вывода.
Я наиболее знаком с библиотекой Weka, но я открыт для использования других инструментов, если они подходят для работы. Какой самый простой способ решения этой задачи?
Изменить (в ответ на пункт № 2 Doxav):
Меня беспокоит то, что атрибуты, основанные на дате, не должны использоваться для изучения правил о том, когда применяется тема, скорее, они должны использоваться только для определения предыдущей вероятности применения темы. Вот конкретный пример: предположим, что тема "Рождество". История, опубликованная в июле, на самом деле гораздо реже рассказывает о Рождестве, чем история, опубликованная в декабре. Но что делает историю о Рождестве текстовым содержанием истории, а не когда она была опубликована. Взаимосвязь между датой публикации и "пребыванием около Рождества" является простой корреляцией, и поэтому полезна только для расчета предварительной вероятности произвольной истории в произвольную дату, касающуюся Рождества. Для сравнения, взаимосвязь между TF-IDF (для некоторого термина в тексте истории) и "быть о Рождестве" является неотъемлемой и причинной, и поэтому заслуживает включения в нашу модель того, что значит для истории быть о Рождестве.
1 ответ
Кажется, что его можно упростить до типичных проблем ОД: классификация текста + несбалансированные данные + идентификация сезонности + архитектура + типичная партия / автономный или потоковый режим / онлайн-обучение:
Классификация текста: https://www.youtube.com/watch?v=IY29uC4uem8 - это хорошее руководство по классификации текста в Weka, которое охватывает проблему данных о дисбалансе.
Идентификация сезонности: цель состоит в том, чтобы позволить модели изучать правила / умозаключения по некоторым различным атрибутам времени, поэтому мы должны упростить ее работу, извлекая наиболее известные полезные атрибуты. Это означает выделение типичных циклов дат (т. Е. День недели, день месяца, месяц, год...) и, если возможно, также объединение их с другими более конкретными циклами или событиями (т. Е. Выборы, праздники, любой пользовательский цикл или частые событие). Если вы ожидаете, что модель изучит временные ряды / последовательности, вы должны создать некоторые данные о задержке (атрибуты, которые произошли раньше, или статистику за последний временной интервал). Может быть хорошо удалить саму дату или любые данные, которые могут повлиять на построение модели.
Я не знаю, планируете ли вы предоставить это как услугу, но это может быть хорошим источником вдохновения: http://fr.slideshare.net/TraianRebedea/autonomous-news-clustering-and-classification-for-an-intelligent-web-portal.
Типичное пакетное / автономное и потоковое / онлайн-обучение. Очевидно, вы уже знаете Weka, которая специализируется на пакетном / автономном обучении. Я не знаю размера ваших данных, и если вы планируете непрерывно обрабатывать новые данные и перестраивать модели, то вы можете рассмотреть возможность перехода к потоковой обработке и онлайн-обучению. Таким образом, вы можете перейти к MOA, который очень близок к Weka, но посвящен классификации потоков, или использовать новые функции потоковой передачи последней версии Weka (обработка паром и новые онлайн-обучающиеся).
ОБНОВЛЕНИЕ 1; Я читаю ваш комментарий и вижу разные решения:
- Ответ № 2 по-прежнему является одним из возможных решений для ваших нужд, даже если он не является оптимальным. Получение атрибута, указывающего, что это период Рождества, будет устанавливать более высокую вероятность пометить его как тему Рождества, то же самое для TF-IDF "слова" Chritmas, НО только оба атрибута вместе установят максимальную вероятность классификации очень Рождеством.
- Вы можете использовать атрибут, обеспечивающий сезонный вес для каждого слова: TF-IDF с временным весом, или использовать текущие данные Google Trends для каждого слова.
- если вам нужен современный уровень адаптивности до контекста, вы можете изучить иерархические байесовские модели и сглаживание из решений НЛП. Это не будет Weka тогда и не так быстро, чтобы проверить.