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

У меня есть набор данных определенного домена (скажем, спорт - 1 класс). Что я хочу сделать, так это когда я передал веб-страницу классификатору/кластеру, я хочу получить результат, связан ли этот экземпляр (веб-страница) со спортом или нет.

Большинство классификаторов в weka не способны работать с наборами данных унарных классов, за исключением LibSVM (оболочки). Я провел несколько тестов с LibSVM, но проблема заключается в том, что во время тестов на несвязанном наборе данных я правильно классифицирую их все, даже если экземпляры пусты! Есть предложения?
Что, если я воспользуюсь косинусной мерой сходства?




Ответы (1)


Вы видели эту ветку классификацию текста унарного класса в weka? и этот пост https://list.scms.waikato.ac.nz/mailman/htdig/wekalist/2007-October/011631.html ?

Я предполагаю, что вы имели в виду, что когда вы запускаете классификатор для другого набора данных, который не является «спортивным», он получает неправильно классифицированные результаты (т.е. ложные срабатывания), например. "это спорт".

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

В комментариях к ранее упомянутой ветке есть ссылка на PDF-файл по настройке SVM: http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf — я бы сказал, что SVM немного сложнее, чем другие распространенные классификаторы.

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

PS: вы можете использовать другие алгоритмы для обнаружения выбросов: http://en.wikipedia.org/wiki/Outlier_detection

person rei    schedule 13.05.2012
comment
Да, я видел эту ветку, потому что она была начата мной :), а также я видел все другие ресурсы, которые вы упомянули. Да, ваше предположение верно. Мой набор данных содержит экземпляры только одного класса (я использую weka и содержит только одну папку в пути -> 1 класс). Я перепроверил обучающий набор данных, и пустых экземпляров нет (нет необходимости издеваться: D). Я настроил гамму SVM и параметр nu, но не смог получить надежную модель. Я не могу использовать здесь двоичную классификацию, так как я делаю это для исследования веб-сканирования, а веб-страницы, которые вы получаете, заранее неизвестны. Прод.. - person samsamara; 13.05.2012
comment
Как насчет использования косинусного сходства здесь? Я могу построить центроид с наиболее часто встречающимися словами в обучающих данных, а затем, как только будет загружен новый экземпляр, на основе оценки сходства я смогу определить, насколько это актуально или нет? - person samsamara; 13.05.2012
comment
да. Это звучит как хорошее решение. Он должен работать независимо от меры (косинус, евклидов и т.д.). - person rei; 14.05.2012
comment
Если вы собираетесь это сделать, вы получите лучшие результаты, если взвесите частоту слов (фактически удаляя общие слова из уравнения) и примете во внимание стоп-слова. также придайте большее значение словам в заголовке страницы. Одно сложно, для веб-данных легко получить много примеров данных. Я как бы делаю это, используя ссылки на RSS-каналы: новостные сайты, у которых есть специальные каналы для разных категорий (бизнес, спорт, политика), каталоги и т. д., вы можете создавать огромные наборы примеров данных. - person rei; 14.05.2012
comment
Я провел тест в weka с мерой расстояния как евклидовой, но все мои тестовые экземпляры сгруппированы в один и тот же кластер. Я не очень понимаю причину этого. Что может быть причиной? - person samsamara; 14.05.2012
comment
Именно это мы и пытались сделать: 1 категория (например, спорт), 1 кластер. (при условии, что кластер был рассчитан правильно). Теперь рассчитайте расстояние между центром тяжести кластера и примерами из разных категорий (например, программирование, кулинария). Если это работает, эти расстояния должны быть значительно больше, чем между центроидом и примерами, из которых был рассчитан кластер (например, спорт). - person rei; 14.05.2012
comment
Так вы использовали косинусное сходство для этого? Вы получили удовлетворительные результаты? - person samsamara; 14.05.2012
comment
Извиняюсь. в предыдущем комментарии я имел в виду мы как в вас :) теперь, когда у вас есть центроид кластера, попробуйте использовать его таким образом. Теоретически он должен работать как единый классификатор классов. Я никогда не использовал это таким образом. - person rei; 14.05.2012