Mahout — Кластеризация — присвоение имен элементам кластера

Я провожу некоторые исследования и играю с Apache Mahout 0.6.

Моя цель — создать систему, которая будет называть различные категории документов на основе пользовательского ввода. Документы заранее неизвестны, и я не знаю также, какие у меня категории при сборе этих документов. Но я знаю, что все документы в модели должны принадлежать к одной из предопределенных категорий.

Например: Допустим, я собрал N документов, принадлежащих к 3 разным группам:

  • Политика
  • Мадонна (поп-звезда)
  • Научная фантастика

Я не знаю, какой документ относится к какой категории, но я знаю, что каждый из моих N документов принадлежит к одной из этих категорий (например, среди этих N документов нет документов, скажем, о баскетболе)

Итак, у меня возникла следующая идея:

  • Примените кластеризацию mahout (например, k-mean с k = 3 для этих документов). Это должно разделить N документов на 3 группы. Это должно быть своего рода моей моделью для обучения. Я до сих пор не знаю, какой документ действительно принадлежит к какой группе, но, по крайней мере, документы теперь сгруппированы по группам.

  • Попросите пользователя найти в Интернете любой документ, который должен быть о «Мадонне» (я не могу показать пользователю ни один из моих N документов, это ограничение). Затем я хочу измерить «подобие» этого документа и каждой из трех групп. Я ожидаю увидеть, что измерение сходства между user_doc и документами в группе Мадонны в модели будет выше, чем сходство между user_doc и документами о политике.

Мне удалось создать группу документов, используя книгу «Магаут в действии». Но я не понимаю, как мне использовать Mahout для измерения сходства между «готовой» кластерной группой документа и одним данным документом.

Я подумал о том, чтобы перезапустить кластер с k=3 для N+1 документов с одинаковыми центроидами (с точки зрения кластеризации k-mean) и посмотреть, куда падает новый документ, но, может быть, есть какой-то другой способ сделать это?

Можно ли обойтись Mahout или моя идея концептуально неверна? (пример с точки зрения Mahout API был бы действительно хорош)

Большое спасибо и извините за длинный вопрос (не смог описать лучше)

Любая помощь высоко ценится

P.S. Это не домашнее задание :)


person Mark Bramnik    schedule 12.06.2012    source источник


Ответы (1)


Это возможно, но гораздо более простым решением (ИМХО) было бы вручную пометить несколько документов из каждой категории, а затем использовать их для начальной загрузки k-средних. То есть вычислить центроиды помеченных вручную документов о политике/Мадонне/научной фантастике и позволить k-средним взять их оттуда.

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

person Fred Foo    schedule 12.06.2012