Алгоритмы, их применимость и самообразование

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

В итоге в мой список для детального изучения попали такие разные алгоритмы как:

  • MCL (Markov Cluster Algorithm) — алгоритм кластеризации сообществ который сейчас используется в Социоранке для выявления кластеров сообществ
  • DT (Decision Trees) — уже используются в моих алгоритмах выявления SEO-ссылок и геоклассификации.
  • k-Means (Метод k-средних) — использовался в Социоранке до MCL для кластеризации сообществ до MCL
  • SVM (Support Vector Machines)
  • SVD (Singular Value Decomposition)
  • LSI (Latent Semantic Indexing)
  • ID3 и С4.5

Англоязычной литературы у меня уже множество. Если кто-то может подсказать русскоязычную литературу — буду благодарен.

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

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

Или, например, для анализа близости сообществ в Социоранке я рассматривал несколько вариантов, включая экзотические вплоть до анализа внешних ссылок с журналов пользователей, но в итоге получился промежуточный результат со своими недостатками поскольку все сообщества в ЖЖ с базовыми интересами вроде advertka, ru_marazm и так далее четко попадают в один гигантский кластер не менее чем из 200 сообществ и как ни крути, а в наиболее крупный кластер попадает около 10% сообществ и, хотя все остальные кластеры дробятся по тематике очень чётко, но первые и последующие два — всегда обобщённые и для их анализа необходимо менять, либо алгоритм кластеризации, либо длительное время настраивать параметры его работы, либо менять принципиальный подход  учёта отношений между сообществами.

Или если говорить про использование того же SVM, то я как раз сейчас читаю серию публикаций по применению SVM для тематической классификации, но читая их вижу ощутимую разницу — там описываются подходы, в основном, по классификации на основе ключевых слов и предполагающие значительное число этих слов или иных линейных признаков в рассматриваемых объектах классификации, у меня же подход основан на изначальной предпосылке что рассматриваемый объект не линеен, а иерархичен, причём включённые в него объекты не линейны и плоскую структуру значений их не уложить — соответственно классификация идёт на основе деревьев решений.

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

About This Author

Яндекс.Метрика