№ 2 (44) 2013
М. А. Баранов, аспирант Московского института электроники и математики НИУ ВШЭ
Модификация жадного алгоритма кластеризации
Задача создания эффективных по времени и релевантности результата алгоритмов документального поиска сохраняет свою актуальность. Возможности для усовершенствования предоставляют жадные алгоритмы кластеризации.
Введение
Наблюдаемый рост количества создаваемых документов делает все более актуальной задачу создания эффективных алгоритмов информационного поиска, одной из составляющей которых является кластеризация — разбиение исходного множества документов на группы, состоящие из схожих документов. Из факта принадлежности документа кластеру и его релевантности по отношению к некоторому информационному запросу с высокой вероятностью следует, что и остальные документы данного кластера также релевантны этому запросу [13].
В настоящее время разработано множество алгоритмов кластеризации, использующих различные подходы к решению задачи кластерного анализа. Их классификация подробно изложена в работе [3]. Из всего многообразия используемых при кластеризации подходов стоит выделить так называемые жадные методы, суть работы которых сводится к тому, что на каждом шаге они делают локально оптимальный выбор в расчете на то, что это приведет к оптимальному решению всей задачи [5]. Стоит отметить, что жадные алгоритмы часто используются при решении задач кластеризации (см., например, [1, 2, 9, 12, 18]).
Одним из таких алгоритмов является алгоритм, предложенный в [2]. Суть его состоит в следующем. Предварительно строится матрица схожести документов
размером N х N, где N — число документов в коллекции, а документу с номером k соответствуют k-й столбец и k-я строка. В матрице в каждой ячейке (i, j) задается мера схожести между i-м и j-м документами. Предлагается подбирать меру схожести таким образом, чтобы ее значение лежало в диапазоне от 0 до 1, где 0 соответствует полному различию документов, а 1 — полному сходству.
На первом шаге в матрице схожести находится строка, сумма элементов которой является максимальной. Документ, соответствующий ей, объявляется центром очередного кластера, а сама строка содержит коэффициенты схожести этого документа со всеми остальными документами коллекции.
На втором шаге в кластер добавляются все документы, коэффициент схожести которых с центром кластера больше некоторого заранее заданного значения или равен ему (параметр threshold). После этого из матрицы удаляются все строки и столбцы, соответствующие попавшим в кластер документам.
Шаги 1 и 2 повторяются до тех пор, пока не останется документов, не включенных в какой-либо кластер.
В данной работе предлагается модифицированная версия описанного алгоритма. Суть модификации состоит в том, что при добавлении нового документа в кластер учитываются коэффициенты схожести этого документа по отношению к другим, уже включенным в кластер документам.
№ 2 (44) 2013
Принцип работы модифицированного алгоритма
Для работы предлагаемого модифицированного алгоритма требуется задать три параметра: threshold_center (аналог параметра threshold в исходном алгоритме), threshold_ other и admission.
На вход алгоритма, так же, как и в предыдущем случае, подается матрица схожести документов.
При работе алгоритма используется переменная «счетчик документов», начальное значение которой равно нулю. Алгоритм состоит из следующих шагов.
1. В матрице ищется строка с максимальной суммой элементов. Документ, соответствующий ей, объявляется центром очередного кластера. При этом сама строка копируется в отдельную строку, расположенную вне матрицы, и дальнейшая работа осуществляется только с этой копией.
2. В полученной копии строки находится максимальный элемент. Теперь для документа, соответствующего данному элементу, происходит проверка на необходимость его добавления в кластер, которая проводится следующим образом. Для каждого документа, уже включенного в кластер, в матрице находится коэффициент подобия с кандидатом на включение. Если данный коэффициент меньше значения параметра threshold_other, то счетчик увеличивается на единицу. После просмотра всех документов кластера значение счетчика сравнивается со значением параметра admission. Если значение счетчика меньше, чем admission, то рассматриваемый документ добавляется в кластер. В противном случае документ в кластер не добавляется. В любом случае в рассматриваемой копии строки максимальный элемент становится равным нулю. Счетчик документов также обнуляется.
Этот процесс продолжается до тех пор, пока в строке есть элементы со значением, превышающим threshold_center. Строки и столбцы, соответствующие документам,
попавшим в кластер, удаляются из матри- Ц цы схожести. ^
Шаги 1 и 2 повторяются до тех пор, по- ^ ка не останется документов, не включенных ё в какой-либо кластер.
Можно заметить, что если задать параметр threshold_other равным нулю, а параметр admission установить равным количеству документов в коллекции, то модифицированный алгоритм вырождается в исходный жадный алгоритм.
Алгоритм формирования матрицы схожести
На первом шаге из документов коллекции выделяются одиночные слова и приводятся в нормальную форму — именительный падеж, единственное число.
Для решения данной задачи использовался морфологический анализатор PyMorphy1 для языка Python, распространяемый под лицензией MIT2, что позволяет использовать его как для некоммерческих целей, так и в коммерческих проектах.
В случае неоднозначности смысла за нормальную форму принимается первый вариант, возвращаемый морфологическим анализатором. Такая ситуация может возникнуть, например, при нормализации слова «душа»: это может быть существительное «душ», существительное «душа» или деепричастие от глагола «душить».
Затем подсчитывается количество появлений каждого нормализованного терма в текстах коллекции. Термы упорядочиваются по количеству появлений в порядке убывания. Из полученного таким образом набора термов удаляются стоп-слова, список которых взят с сайта разработчика алгоритма Портера3.
1 Морфологический анализатор PyMorphy. URL: http://pypi.python.org/pypi/pymorphy.
2 Лицензия MIT. URL: http://opensource.org/licenses/ mit-license.php.
3 Список русских стоп-слов. URL: http://snowball. tartarus.org/algorithms/russian/stop.txt.
-N ПРИКЛАДНАЯ ИНФОРМАТИКА
№ 2 (44) 2013 ' -
t S
t is
u
s
I
=s
!
12
0 ï
!
II
1 t s?
Оставшиеся термы проходят фильтрацию по морфологическим шаблонам: из набора удаляются термы, не являющиеся существительными или прилагательными. На этом этапе опять может возникнуть неоднозначность, как, например, с упомянутым выше словом «душа»: невозможно точно установить, какой частью речи является данное слово. В описываемом алгоритме формирования образов документов используется следующее допущение: если в списке возможных частей речи, возвращаемом морфологическим анализатором для конкретного терма, есть часть речи, описываемая одним из морфологических шаблонов, то данный терм не будет удален из набора термов.
На заключительном этапе происходит непосредственное формирование образов документов на основе N наиболее часто встречающихся термов (в дальнейшем этот набор будет называться ^списком). Число N предварительно задается пользователем и зависит от ситуации.
Образ документа — одномерный массив, длина которого равна длине ^списка. Образ формируется следующим образом: если /-е слово из ^списка присутствует в документе, то значением /-го элемента образа документа считается 1, в противном случае — 0.
На основе полученных образов документов составляется матрица схожести. В качестве меры схожести двух документов используется косинусная мера сходства [12]:
__ Хх • у
cos( X ,у) = '=1
I*/2 -JIY
где X и Y — векторы (образы) документов.
Программная реализация
Оба алгоритма — исходный (Greedy) и модифицированный (Greedy2) — были реализованы на языке программирования Python. Матрица схожести реализова-
на с использованием вложенных списков. Код алгоритма Greedy2 приводится в листинге 1.
Поясним алгоритм. На вход подается матрица схожести (si_matrix), список, содержащий названия файлов (file_names), участвующих в кластеризации и параметры threshold_ center, threshold_other и admission. При этом i-я строка матрицы схожести соответствует i-му файлу в списке файлов. В списке clusters будут храниться полученные в результате кластеризации группы файлов. В строках 7-8 определяется строка с максимальной суммой элементов. В строке 13 создается рабочая копия найденной строки с максимальной суммой элементов. Функция is_candidates возвращает значение «истина», если в рабочей копии есть хотя бы один элемент со значением, превышающим значение параметра threshold_other, в противном случае возвращается значение «ложь». Функция require_inclusion_to_cluster определяет, нужно ли добавлять текущий документ в кластер, подсчитывая число документов, уже включенных в него, коэффициент схожести которых с кандидатом на включение меньше параметра threshold_other, и сравнивая полученное значение со значением параметра admission. В список current_cluster заносятся названия файлов, объединенных в одну группу с документом, образующим центр кластера.
Может возникнуть ситуация, когда список current_cluster после завершения цикла while (строка 15) окажется пустым (при этом в матрице еще будут оставаться элементы). Такая ситуация возможна, если, например, среди множества документов на русском языке попадется несколько документов на английском. Тогда возможна ситуация, когда в N-списке будут находиться только русские слова, и именно они используются при вычислении матрицы схожести. В данном случае все русскоязычные документы объединятся в кластеры. Однако в строках и столбцах, относящихся к английским документам, будут находиться одни нули, и функция is_candidates будет всегда воз-
80 у
№ 2 (44) 2013
Листинг 1
«
о
! LQ
1 2
3
4
5
6
7
8
9
10 11 12
13
14
15
16
17
18
19
20 21 22
23
24
25
26
27
28
29
30
31
32
33
34
def greedy2_clustering( si_matrix, file_names, threshold_center, threshold_other, admission ):
clusters = []
while not si_matrix.empty():
max_row_index = si_matrix.find_max_row() max_row_content = si_matrix[ max_row_index ]
indexes = [] current cluster = []
current row = max row content!
]
while is_candidates( current_row, threshold_center ) : max_el_index = find_max_el_in_row( current_row )
if require_inclusion_to_cluster( max_el_index, indexes, threshold_other, admission ) :
indexes.append( max_el_index )
current_cluster.append( file_names[ max_el_index ] ) current_row[ max_el_index ] = 0
if current_cluster != []:
clusters.append( current_cluster ) else :
clusters.append( file_names[ : ] ) return clusters
delete_files( indexes, file_names) si_matrix.delete_rows_columns( indexes )
return clusters
вращать значение «ложь». Это приведет к зацикливанию алгоритма (строка 5), поскольку из матрицы схожести не будут удаляться элементы.
Избежать такого зацикливания призван код в строках 27-29. Если в текущем кластере нет документов, то все необработанные документы объединяются в один кластер, и на этом работа алгоритма завершается.
В строке 31 из списка, содержащего названия файлов, удаляются названия файлов, объединенных в кластер, а в строке 32 из матрицы схожести удаляются строки и столбцы, соответствующие этим файлам.
оптимизация модифицированного алгоритма
В первоначальной реализации использовалась вещественная матрица схожести. В таблице 1 (второй столбец) представлены данные по объему оперативной памяти, занимаемой матрицами схожести различных размерностей. В таблице 4 (столбцы 2 и 3) представлено усредненное время выполнения алгоритмов Greedy и Greedy2 на этих данных. При проведении измерений матрицы схожести были сгенерированы случайным образом.
Существует несколько возможностей оптимизировать данную реализацию. Во-пер-
№ 2 (44) 2013
Таблица 1
Объемы оперативной памяти, занимаемые матрицами схожести
Размер матрицы Размер матрицы схожести в оперативной памяти, Кб
схожести, N х N Вещественная матрица Целочисленная матрица
100х100 208 48
500х500 5 524 1 360
1000х 1000 21 896 5 264
5000х5000 516 624 107 344
вых, можно использовать не вещественную, а целочисленную матрицу схожести. Для этого все элементы матрицы, а также параметры threshold (для алгоритма Greedy), threshold_center и threshold_other (для алгоритма Greedy2) необходимо умножить на 100 и округлить до ближайшего целого. Такой переход позволит сократить объем оперативной памяти, занимаемой матрицей схожести за счет того, что целое число занимает меньше места в оперативной памяти (поскольку элементы матрицы схожести будут лежать в диапазоне от 0 до 100, то в таких языках, как C++, которые позволяют выбирать тип переменной, достаточно отвести под каждый элемент 1 байт). При этом данная замена практически не отражается на результатах кластеризации. В таблице 1 (третий столбец) представлены результаты занимаемого объема оперативной памяти || целочисленными матрицами схожести в случае программной реализации на языке про-¡J граммирования Python. <s Во-вторых, поскольку матрица схожести * является симметричной относительно глав-¡ ной диагонали, то можно преобразовать матрицу к треугольному массиву (triangular <§ array) [17]. Это позволит уменьшить объ-| ем необходимой оперативной памяти почти Ц в два раза, однако несколько усложнит про* граммную реализацию алгоритмов. =| Поскольку вычислительные эксперименте ты проводились с небольшими коллекция-Si ми текстовых документов, для которых мат-Ü рицы схожести занимают относительно не-
много оперативной памяти, то программные реализации алгоритмов Greedy и Greedy2 работали именно с матрицами схожести, а не с треугольными массивами.
Однако при проведении множества экспериментов с целью подбора оптимальных значений параметра threshold (для алгоритма Greedy) или параметров threshold_center, threshold_other и admission (в случае алгоритма Greedy2) имеет смысл один раз посчитать матрицы схожести, сохранить их на жестком диске и в дальнейшем повторно использовать при необходимости.
В таблице 2 представлены данные по объему дискового пространства, занимаемого матрицами схожести при использовании двух типов хранилищ — модуля shelve4 из стандартной библиотеки языка Python и документо-ориентированной базы данных MongoDB5. Данные приведены для 200 матриц (100 размером 200 х 200 и 100 размером 100x100). В первом столбце табл. 2 приведены данные для вещественных матриц, во втором — для целочисленных треугольных массивов.
Таблица 2 Размеры дискового пространства
^■\Тип матрицы Вид хранилища Вещественная матрица схожести Целочисленный треугольный массив
shelve 102 МБ 12,5 МБ
MongoDB 256 МБ 128 МБ
Опишем алгоритм загрузки и сохранения матриц в базе данных при проведении серии экспериментов. Для каждого конкретного ^-списка формируется ключ доступа к хранилищу. Ключ имеет формат:
<коллекция>:<М>,
где <коллекция> — название коллекции; ^> — количество термов в ^списке.
4 Модуль shelve. URL: http://d0cs.pyth0n.0rg/2/library/ shelve.html.
5 MongoDB. URL: http://www.mongodb.org/.
№ 2 (44) 2013
Далее делается попытка извлечения матрицы схожести из хранилища по сформированному ключу. Если матрицы схожести, соответствующей данному ключу в хранилище, нет, то она формируется по алгоритму, описанному в предыдущем разделе, после чего помещается в хранилище.
Если матрица уже была сохранена в хранилище раньше, то происходит ее загрузка, никаких вычислений при этом, естественно, не производится.
Следующая оптимизация касается скорости выполнения алгоритма Greedy2. В изначальной реализации поиск максимального элемента производился в неупорядоченном массиве, т. е. каждый раз массив приходилось просматривать целиком. Для каждой конкретной копии строки такой поиск проводится многократно — пока есть элемент, значение которого больше значения параметра threshold_center. Однако данный массив можно предварительно отсортировать в порядке убывания его элементов. Тогда можно ввести новую переменную cidx, которая изначально равна 0, а на каждой итерации алгоритма увеличивается на 1. В этом случае максимальный элемент можно получить простым обращением к отсортированному массиву по индексу cidx. То же относится и к функции is_candidates: вместо того, чтобы просматривать массив, достаточно сравнить первый элемент копии строки с максимальной суммой элементов со значением параметра threshold_center.
Для сортировки массива можно воспользоваться одним из существующих алгоритмов сортировки: Quicksort [5], Radix Sort [5], TimSort (стандартный алгоритм сортировки в Python, именно он использовался при создании ускоренной версии алгоритма Greedy2 — алгоритма Greedy3) [16]. Код алгоритма Greedy3 на языке Python приведен на листинге 2.
Сортировка массива в порядке убывания происходит в строках 10-11. Проверка в строке 20 предотвращает возможность обращения к несуществующему элементу массива (списка).
Результаты измерения скорости выпол- Ц нения трех алгоритмов на различных матри- ^ цах схожести представлены в табл. 3. ^
Таблица 3 Оценка скорости кластеризации с использованием жадных алгоритмов
Размер матрицы схожести, N х N Среднее время выполнения, с
Алгоритм Greedy Алгоритм Greedy2 Алгоритм Greedy3
100х100 0,01 0,02 0,01
500х500 0,17 0,51 0,28
1000х 1000 0,82 3,42 1,42
5000х5000 23,24 295,97 67,66
Стоит также отметить, что результаты кластеризации алгоритмами Greedy2 и Greedy3 при одинаковых входных данных будут полностью идентичными, поэтому при оценке результатов в следующем разделе будет использоваться только алгоритм Greedy2.
Как видим, скорость работы модифицированного жадного алгоритма уступает скорости выполнения исходного жадного алгоритма. Однако стоит отметить, что время, затрачиваемое на обработку текстовой коллекции для создания матрицы схожести существенно превышает время, затрачиваемое на кластеризацию данных (программе требовалось порядка 4 мин., чтобы вычислить матрицу схожести для коллекции, состоящей из 200 документов).
вычислительные эксперименты
Для проведения вычислительных экспериментов было подготовлено два тестовых набора.
Первый набор (ferra) состоит из документов, размещенных на сайтах ferra.ru6 и ixbt.com7. Эталонное разбиение, с которым в дальнейшем сравнивались результаты работы алгоритмов кластеризации, со-
6 URL: http://www.ferra.ru/.
7 URL: http://www.ixbt.com/.
№ 2 (44) 2013
Листинг 2
1 2
3
4
5
6
7
8
9
10 11 12
13
14
15
16
17
18
19
20 21 22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
def greedy3_clustering( si_matrix, threshold_center, threshold_other, admission ): clusters = []
while not si_matrix.empty():
max_row_index = si_matrix.find_max_row() max_row_content = si_matrix[ max_row_index ]
max_row_content = enumerate( max_row_content ) max_row_content = sorted( max_row_content, key=lambda x: x[ 1 ], reverse=True)
indexes = [] current_cluster = []
current_row = max_row_content[ : ] cidx = 0
while (max_row_content[cidx][1] > threshold_center) and ((cidx+1)<len(max_row_content)):
max_el_index = max_row_content[cidx][0]
if self.require_inclusion_to_cluster( max_el_index, indexes, threshold_other, admission ): indexes.append( max_el_index )
current_cluster.append( self.file_names[ max_el_index ] )
cidx += 1
if current_cluster != []:
clusters.append( current_cluster ) else :
clusters.append( file_names[ : ] ) return clusters
delete_files( indexes, file_names) si_matrix.delete_rows_columns( indexes )
return clusters
«
Î
12
0
!
1 t I
стоит из пяти кластеров по 40 документов в каждом.
Второй набор (ict) составлен из текстов статей, размещенных на сайте журнала «Вычислительные технологии»8. Некоторым из размещенных статей приписаны коды классификатора в соответствии с Mathematics Subject Classification 2000
8 Сайт журнала «Вычислительные технологии» URL: http://ict.nsc.ru/jct/.
(MSC2000); эти коды использовались при формировании эталонного разбиения. Всего для экспериментов было подготовлено около 100 статей, они распределены по 29 кластерам от двух до семи документов в каждом.
Для оценки результатов кластеризации можно использовать два типа критериев: внутренние и внешние.
Внешние меры предполагают сравнение полученного в результате кластеризации раз-
84
№ 2 (44) 2013
биения документов на группы с эталонным разбиением. Внутренние меры предполагают оценку свойств отделимости и компактности полученного разбиения документов [7].
В данной работе используются четыре внешних меры кластеризации: точность (Precision), полнота (Recall), ошибка классификации (Error) и Р1-мера, которые вычисляются по следующим формулам [4, 13]:
Precision = ■
TP
TP + FP
Recall =
TP
Error =
TP + FN ' FP + FN
TP + FP + FN + TN '
F=
2 • Precision • Recall Precision + Recall
где
TP (True Positives) — число пар документов, которые как в эталонном, так и в получившемся в результате кластеризации разбиениях принадлежат к одному классу;
TN (True Negatives) — число пар документов, которые как и в эталонном, так и в получившемся разбиениях принадлежат к разным классам;
FP (False Positives) — число пар документов, которые в эталонном разбиении принадлежат к разным классам, однако в результате кластеризации были отнесены к одному классу (ошибки второго рода);
FN (False Negatives) — число пар документов, которые в эталонном разбиении принадлежат к одному классу, но в результате кластеризации были отнесены к разным классам (ошибки первого рода).
Ниже представлены результаты экспериментов с исходным и модифицированным алгоритмом на двух описанных ранее наборах документов. Для оценки качества результатов кластеризации использовалось значение ошибки кластеризации Error (лучшим считался результат с наименьшим значением Error).
При проведении экспериментов использовались следующие данные. Количество ключевых слов, с использованием которых формировались образы документов, лежало в диапазоне от 20 до 2000 слов с шагом 20. Значения параметров threshold, threshold_ center и threshold_other лежали в диапазоне от 0,4 до 0,8 с шагом 0,1. Для параметра admission задавались следующие значения:
— 1, 2, 5, 10, 15, 20, 25 — при кластеризации коллекции ferra;
— 1, 2, 3, 4, 5 — при кластеризации коллекции ict.
Всего было проведено четыре серии экспериментов, общее количество экспериментов — более 23 000.
Наилучшие результаты (здесь и далее выделены жирным шрифтом) для исходного жадного алгоритма на коллекции ferra были получены при значении параметра threshold, равном 0,7 (табл. 4).
Таблица 4
«
о
! US
Результаты кластеризации коллекции ferra алгоритмом Greedy
Мера Значение параметра threshold
0,5 0,6 0,7 0,8
Precision 0,4757 0,8208 0,8708 0,9247
Recall 0,7433 0,76 0,8364 0,7246
Error 0,2109 0,0795 0,0564 0,0655
Fi 0,5801 0,7892 0,8533 0,8125
Параметры предварительной обработки коллекции
Количество термов в W-списке 1180 660 80 40
85
№ 2 (44) 2013
Таблица 5
Результаты кластеризации коллекции ferra алгоритмом Greedy2
Мера Значение параметров (threshold_center - t_c, threshold_other - t_o)
t_c = 0,5 t_o = 0,7 admission = 25 t_c = 0,6 t_o = 0,7 admission = 25 t_c = 0,7 t_o = 0,7 admission = 15 t_c = 0,5 t_o = 0,6 admission = 10
Precision 0,9341 0,9346 0,9217 0,8928
Recall 0,8538 0,8531 0,8451 0,8608
Error 0,0405 0,0405 0,0444 0,0475
F1 0,8922 0,892 0,8818 0,8765
Параметры предварительной обработки коллекции
Количество термов в N-списке 100 100 40 80
В таблице 5 приведены результаты кластеризации коллекции ferra алгоритмом Greedy2 (представлены четыре различные комбинации параметров threshold_center и threshold_other, дающие наилучшие результаты).
Наилучшие результаты алгоритма Greedy на коллекции ict, как и в случае с коллекцией ferra, были получены при значении параметра threshold, равном 0,7 (табл. 6).
В таблице 7 изложены результаты кластеризации коллекции ict алгоритмом Greedy2 (представлены четыре различные комбина-
ции параметров threshold_center и threshold_ other, дающие наилучшие результаты).
Как можно увидеть, наилучшие результаты для алгоритма Greedy при кластеризации обоих наборов были получены при использовании меньшего количества термов для формирования матрицы схожести, чем при использовании алгоритма Greedy2. Можно предположить, что это является общим свойством двух алгоритмов. В дальнейшем планируется провести дополнительные исследования с целью проверки данного предположения.
Таблица 6
t s
I
SS ! s
ss
! s
0 ï
!
1 S
t
s
Результаты кластеризации коллекции ict алгоритмом Greedy
Мера Значение параметра threshold
0,5 0,6 0,7 0,8
Precision 0,2546 0,5155 0,7755 0,8182
Recall 0,4135 0,3759 0,2857 0,203
Error 0,0584 0,0317 0,0259 0,0274
Fi 0,3152 0,4348 0,4176 0,3253
Параметры предварительной обработки коллекции
Количество термов в N-списке 1920 2000* 600 140
* Примечание. Дополнительно проведенное исследование показало, что при использовании больше 2000 термов для формирования матрицы схожести ошибка кластеризации начинает увеличиваться.
86
№ 2 (44) 2013
Таблица 7 §
Результаты кластеризации коллекции ict алгоритмом Greedy2 ^
Мера Значение параметров (threshold_center - t_c, threshold_other - t_o)
t_c = 0,5 t_o = 0,6 admission = 1 t_c = 0,5 t_o = 0,7 admission = 1 t_c = 0,6 t_o = 0,7 admission = 2 t_c = 0,7 t_o = 0,7 admission = 1
Precision 0,7333 0,7681 0,7333 0,7324
Recall 0,4962 0,3985 0,4135 0,391
Error 0,0222 0,0234 0,0239 0,0244
F1 0,5919 0,5248 0,5288 0,5098
Дополнительные параметры
Количество термов в W-списке 760 780 580 160
Если свойство будет подтверждено экспериментально, это позволит снизить объем проводимых экспериментов для подбора наилучшего сочетания параметров для алгоритма Greedy2 следующим образом. Сначала находится наилучшее решение с помощью алгоритма Greedy, и определяется число термов, используемых для формирования матрицы схожести для этого решения. Полученное значение будет являться нижней границей числа слов при формировании матрицы схожести для алгоритма Greedy2.
Например, поиск наилучшего решения для коллекции ict алгоритмом Greedy2 потребовал 12 500 экспериментов: 100 различных матриц схожести, 5 вариантов значения параметра threshold_center, 5 вариантов значения параметра threshold_other, 5 значений параметра admission. Если принять за нижний порог 600 слов (лучший результат алгоритма Greedy), то количество матриц схожести уменьшилось бы до 70 (2000 - 600) : 20. Таким образом, число экспериментов сократилось бы на 30% — до 8750. При этом количество проведенных экспериментов с помощью алгоритма Greedy для данной коллекции равно 400 (100 матриц схожести и четыре значения параметра threshold).
Заключение
Проведенные эксперименты показали, что наилучшие результаты кластеризации текстовых наборов с использованием алгоритма Greedy получаются при значении параметра threshold, равном 0,7. В статье [2] утверждается, что наилучшие результаты были получены при значении threshold, равном 0,6. Однако ранее указывалось, что значение параметра threshold выбиралось в диапазоне 0,4-0,6, и неясно, почему был выбран именно этот диапазон значений. Таким образом, есть основания считать, что наилучшие результаты при кластеризации алгоритмом Greedy получаются при значении параметра threshold, равном 0,7.
В результате экспериментов установлено, что алгоритм Greedy2 дает лучшие результаты, чем исходный жадный алгоритм, несколько уступая последнему по скорости работы. Но, как уже отмечалось ранее, время, затрачиваемое на кластеризацию, значительно меньше времени, необходимого для формирования матрицы схожести. Поэтому имеющееся различие в скорости работы будет незаметно в случае, когда набор документов подвергается процессу кластеризации однократно.
-N ПРИКЛАДНАЯ ИНФОРМАТИКА
№ 2 (44) 2013 ' -
t S
t К
U
В Ü
!
12 о
!
а
t 5
Также планируется создать параллельную версию алгоритмов Greedy и Greedy2 — ранее для ряда алгоритмов кластеризации уже были созданы их параллельные версии (например, [6, 11]).
При подборе оптимальных параметров при кластеризации некоторой коллекции текстов, для которой не существует эталонного разбиения, можно использовать внутренние меры для оценки результатов кластеризации, такие как индекс Дана [15], индекс Девиса-Булдина [14], индекс Калинско-го и Гарабача [11] и т. п.
Список литературы
1. Барахнин В. Б., Нехаева В. А., Федотов А. М. О задании меры сходства для кластеризации текстовых документов // Вестник Новосибирского государственного университета. Серия: Информационные технологии. 2008. Т. 6. № 1. С. 3-9.
2. Барахнин В. Б., Ткачев Д. А. Кластеризация текстовых документов на основе составных ключевых термов // Вестник Новосибирского государственного университета. Серия: Информационные технологии. 2010. Т. 8. № 2. С. 5-14.
3. Бериков В. С., Лбов Г. С. Современные тенденции в кластерном анализе // [Электронный ресурс] Федеральный портал по научной и инновационной деятельности. Статьи — победители Всероссийского конкурсного отбора обзорно-аналитических статей по приоритетному направлению «Информационно-телекоммуникационные системы» (2008-07-09). Режим доступа: http://www.ict.edu.ru/ft/005638/62315e1-st02. pdf (дата обращения: 10.01.2013).
4. Большакова Е. И., Клышинский Э. С, Ландэ Д. В, Носков А. А., Пескова О. В., Ягунова Е. В. Автоматическая обработка текстов на естественном языке и компьютерная лингвистика: учеб. пособие. М.: МИЭМ, 2011. — 272 с.
5. Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ = Introduction to Algorithms / под ред. И. В. Красикова. 2-е изд. М.: Вильямс, 2005. — 1296 с.
6. Островский А. А. Реализация параллельного выполнения алгоритма FCM-кластеризации // Прикладная информатика. 2009. № 2. С. 101-106.
7. Пескова О. В. Автоматическое формирование рубрикатора полнотекстовых документов // Электронные библиотеки: перспективные методы и технологии, электронные коллекции: Труды Десятой Всероссийской научной конференции «RCDL'2008» (Дубна, 7-11 октября 2008 г.). Дубна: ОИЯИ, 2008. С. 139-148.
8. Цыганова C. В., Стрижов В. В. Построение иерархических тематических моделей коллекции документов // Прикладная информатика. 2013. № 1. С. 109-115.
9. Ali Nadizadeh, Hashed Sahraeian, Ali Sabzevari Zadeh, Seyed Mahdi Homayouni. Using greedy clustering method to solve capacitated location-routing problem //African Journal of Business Management. Vol. 5 (21). 2011. Р. 7499-7506.
10. Calinski RB, Harabasz J. A dendrite method for cluster analysis // Communications in Statistics Theory and Methods. 1974. Vol. 3. Issue. 1. Р. 1-27.
11. Chang D., Kantardzic M., Ouyang M. Hierarchical clustering with CUDA/GPU. In Proceedings of ISCA PDCCS. 2009. Р. 130-135.
12. Christoph F. Eick, Nidal Zeidat, Zhenghong Zhao. Supervised Clustering — Algorithms and Benefits // In proceedings of the 16th IEEE International Conference on Tools with Artificial Intelligence (ICTAI04), 2004. Р. 774-776.
13. Manning C. D., Raghavan P., Schütze H. Introduction to Information Retrieval. NY: Cambridge University Press, 2008. — 496 p.
14. Davies D. L, Bouldin D. W. A Cluster Separation Measure». IEEE Transactions on Pattern Analysis and Machine Intelligence PAMI-1 (2). 1979. Vol. 1. Issue. 3. Р. 32-57.
15. Dunn J. C. A fuzzy relative of the ISODATA process and its use in detecting compact well-separated clusters // Journal of Cybernetics. 1973. Vol. 3. Issue 2. Р. 224-227.
16. Magnus Lie Hetland Python Algorithms: Mastering Basic Algorithms in the Python Language. NY: Apress, 2010. — 336 p.
17. Thomas Koshy. Triangular Arrays with Applications. NY: Oxford University Press, 2011. — 438 p.
18. Yue SH., Li P., Guo JD, Zhou SG. Using Greedy algorithm: DBSCAN revisited II. Journal of Zheji-ang University SCIENCE. 2004. Vol. 5. Issue 11. Р. 1405-1412.
88 j