стр. 219 из 262
УДК 519.25 DOI: 10.12737/7483
ПРИМЕНЕНИЕ ЗАДАЧ ОПТИМИЗАЦИИ В КЛАСТЕРНОМ АНАЛИЗЕ
Сдвижков Олег Александрович, кандидат физико-математических наук, доцент кафедры сервисного инжиниринга, [email protected] ,
ФГБОУ ВПО «Российский государственный университет туризма и сервиса»,
Москва, Российская Федерация
Кластерный анализ [3] является сравнительно новым разделом математики, в котором изучаются методы разбиения совокупности объектов, заданных конечными наборами признаков, на однородные группы (кластеры). Кластерный анализ широко применяется в психологии, социологии, экономике (сегментация рынка) и многих других областях, в которых возникает задача классификации объектов по их признакам. Методы кластеризации реализованы в пакетах STATISTIC A [1] и SPSS [2], они возвращают разбиения на кластеры, дисперсионную статистику кластеризации и дендрограммы иерархических алгоритмов кластеризации. Макросы MS Excel основных методов кластеризации и примеры применения приведены в монографии [5].
Одной из центральных проблем кластерного анализа является определение по некоторому критерию числа кластеров, обозначим это число через K, на которые разбивается заданное множество объектов. Существуют несколько десятков подходов [4] к определению числа K. В частности, согласно [6] число кластеров K - минимальное число, для которого выполняется ( WK / WK+1 -1)(N - K -1) < 10, где WK - минимальное значение суммарной дисперсии при разбиении на K кластеров, N - число объектов. К числу кластеров автоматически приводит последовательное применение аномальных кластеров [4]. В 2010 году предложен и экспериментально проверен метод получения числа K посредством применения функции плотности [4].
В статье предлагаются два простых подхода к определению K, когда каждый кластер имеет не менее двух объектов. В первом число K определяется через кратчайшие гамильтоновы циклы, во втором - через минимальные остовные деревья. Приведены примеры кластеризации с подробными пошаговыми решениями и графическими иллюстрациями. Показано применение макроса VBA Excel, возвращающего минимальное остовное дерево, к задачам кластеризации. В статью вошел код макроса, снабженный комментариями к основным блокам.
Ключевые слова: кластер, линейное программирование, кратчайший цикл, минимальное остовное дерево
Кластеризация методом минимальных гамильтоновых циклов
Пусть объекты (точки) Ai, i = 1, n, заданы значениями m признаков aik, k = 1, m.
Спрашивается, можно ли считать их однородной группой объектов, и если нет, то, на какие однородные группы они разбиваются.
Будем говорить, что совокупность точек Ai разбивается методом минимальных
гамильтоновых циклов на кластеры fij, fi2,..., fiK, если суммарная длина минимальных
стр. 220 из 262
гамильтоновых циклов ух,у2,...,ук этих кластеров не больше, чем суммарная длина минимальных гамильтоновых циклов кластеров при любом другом разбиении.
Обозначим через С = (cij) матрицу расстояний между точками Д в некоторой
выбранной метрике (евклидовой, квадрата евклидовой и т.д.), будем считать c. = c, c >> тах(сг:/), i Ф j. Методом от противного доказывается теорема 1.
Теорема 1. Матрица смежности графа у, состоящего из циклов у1,у2,...,ук, является решением задачи линейного программирования с двоичными (булевыми) переменными:
z = ZZcjxj ^ ^ Zxij =1 Zxij =1.
. j i J
В силу теоремы 1, число кластеров K равно числу компонент связности графа у, каждый кластер Qr состоит из вершин, через которые проходит цикл yr, r = 1, K .
Пример 1. Применяя метод минимальных гамильтоновых циклов, провести классификацию 10 объектов, заданных значениями трех признаков (табл.1).
Таблица 1
Объекты Признак 1 Признак 2 Признак 3
1. 0,2 2,5 2,3
2. 0,3 2,7 1,8
3. 0,3 2,4 1,6
4. 0,4 2,6 1,6
5. 0,5 2,2 2,4
6. 0,5 2,3 2,2
7. 0,6 2,3 2,5
8. 0,7 2,1 2,1
9. 0,8 2,4 2,1
10. 0,9 2,4 2,5
1. Вводим данные на рабочий лист (рис. 1):
А В С
1 0,2 2,5 2,3
2 0,3 2,7 1 ,з
3 0,3 2,4 1,6
4 0,4 2,6 1,6
5 0,5 2,2 2,4
6 0,5 2,3 2,2
7 0,6 2,3 2,5
8 0,7 2,1 2,1
9 0,8 2,4 2,1
10 0,9 2,4 2,5
Рисунок 1
стр. 221 из 262
2. Составляя в диапазоне E1:N10 с помощью функции СУММКВРАЗН матрицу расстояний между точками, по главной диагонали ставим 10, получаем (рис. 2):
Е F G Н I J К L М N
10 0,3 0,51 0,54 0,19 0,14 0,24 0,45 0,41 0,54
0,3 10 0,13 0,06 0,65 0,36 0,74 0,61 0,43 0,94
0,51 0,13 10 0,05 0,72 0,41 0,91 0,5 0,5 1,17
0,54 0,06 0,05 10 0,81 0,46 0,94 0,59 0,45 1,1
0,19 0,65 0,72 0,81 10 0,05 0,03 0,14 0,22 0,21
0,14 0,36 0,41 0,46 0,05 10 0,1 0,09 0,11 0,26
0,24 0,74 0,91 0,94 0,03 0,1 10 0,21 0,21 0,1
0,45 0,61 0,5 0,59 0,14 0,09 0,21 10 0,1 0,29
0,41 0,43 0,5 0,45 0,22 0,11 0,21 0,1 10 0,17
0,54 0,94 1,17 1,1 0,21 0,26 0,1 0,29 0,17 10
Рисунок 2
3. Диапазон E12 : N21 оставляем за независимыми двоичными переменными.
4. В ячейку O12 вводим формулу = СУММ(E12: N12) и копируем ее в ячейки O13: O21.
5. В ячейку E22 вводим формулу = СУММ(E12: E21) и копируем ее в ячейки F22 : N22.
6. В ячейку O22 вводим формулу целевой функции:
= СУММПРОИЗВ(Е1:Ш0;Е12:Ш1).
7. Вызываем диалоговое окно «Поиск решения» и задаем сценарий решения (рис. 3).
Рисунок 3
стр. 222 из 262
8. Команда «Выполнить» в диапазоне E12 : N21 возвращает (рис. 4):
0 1 0 2.8Е-12 0 0 0 0 0 0
0 0 2.8Е-12 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0 2.4Е-09 0
0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 5.9Е-10 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 1 5.9Е-10 0 0 0
0 0 0 2Е-10 0 0 0 1 0 0
0 0 0 0 0 0 0 0 1 0
Рисунок 4
В первой строке значение 1 во втором столбце, т.е. в цикл включается звено (1, 2), во второй строке значение 1 в четвертом столбце, т.е. следующее звено (2, 4). Продолжая цепочку, приходим к циклу ух : 1 - 2 - 4 - 3 -1. Аналогично показывается, что второй цикл у2 : 5 - 7 -10 - 9 - 8 - 6 - 5. Следовательно, заданная совокупность объектов разбивается на два кластера {1, 2, 3, 4} и {5, 6, 7, 8, 9, 10}. Графическая иллюстрация, выполненная в пакете STATISTICA, приведена на рисунке 5.
Рисунок 5
стр. 223 из 262
Кластеризация методом минимальных остовных деревьев
Остовным деревом (деревом-остовом) графа G называется дерево T е G, содержащее все вершины графа G. Минимальным остовным деревом называется дерево-остов T е G , имеющее минимальную сумму весовых коэффициентов.
Будем говорить, что совокупность точек Д разбивается методом минимальных остовных деревьев на кластеры Q13Q2,...,QK, если суммарная длина минимальных остовных деревьев T1,T2,...,TK этих кластеров не больше, чем суммарная длина минимальных остовных деревьев при любом другом разбиении на кластеры.
Составим матрицу D = (йц ), dtj = cij, если i < j , dtj = c, если i > j, где
c >> maxC ), i Ф j . Имеет место теорема 2, аналогичная теореме 1.
Теорема 2. При разбиении точек Д на кластеры методом минимальных остовных
деревьев число кластеров равно числу компонент связности графа, матрица смежности которого находится как решение задачи линейного программирования с двоичными переменными:
z = ZZdjxj ^^ Zxrj +Zхл >1
i i
г J
Понятно, что вершины каждой компоненты связности образуют кластер.
Пример 2. Применяя метод минимальных остовных деревьев, разбить на кластеры объекты, заданные таблицей 1.
1. Приводим диапазон E1:N10 (рис. 2) к виду (рис. 6):
1 F | G | н I I
10 0,3 0.51 0.54 0.19
10 10 0,13 0,05 0,65
10 10 10 0.05 0,72
10 10 10 10 0,81
10 10 10 10 10
10 10 10 10 10
10 10 10 10 10
10 10 10 10 10
10 10 10 10 10
10 10 10 10 10
J | к I L | М | N
0.14 0,24 0,45 0.41 0.54
0,36 0,74 0,61 0,43 0,94
0.41 0.91 0,5 0,5 1,17
0.46 0.94 0,59 0,45 1,1
0.05 0.03 0,14 0,22 0,21
10 0,1 0,09 0,11 0,26
10 10 0,21 0,21 0.1
10 10 10 0,1 0,29
10 10 10 10 0.17
10 10 10 10 10
Рисунок 6
2. Диапазон E12 : N21 оставляем за независимыми двоичными переменными.
стр. 224 из 262
3. В ячейку O12 вводим формулу =СУММ(Е12:Ш2)+СУММ(Е12:Е21), в ячейку О13 - формулу =CyMM(E13:N13)+CyMM(F12:F21) и так далее, до ячейки О21, в которую вводим формулу =СУММ(Е21:№1)+СУММ(Ш2:№1).
4. В ячейку O22 вводим формулу целевой функции: =СУММПРОИЗВ(Е1:Ш0;Е12:Ш1).
5. Вызываем диалоговое окно «Поиск решения» и задаем сценарий решения (рис. 7).
Рисунок 7
6. Команда «Выполнить» в диапазоне £12 : N21 возвращает (рис. 8):
0 0 0 0 0 1 0 0 ] 0
0 0 0 1 0 0 0 0 ] 0
0 0 0 1 0 0 0 0 ] 0
0 0 0 0 0 0 0 0 ] 0
0 0 0 0 0 0 1 2Е-23 ] 0
0 0 0 0 0 0 0 0 ] 0
0 0 0 0 0 0 0 0 ] 1
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 ] -2Е-28
0 0 0 0 0 0 0 0 ] 0
Рисунок 8
Откуда следует, что кластеры {2, 3, 4}, {1, 6}, {5, 7, 10}, {8, 9}.
Теорема 3. Если матрица С = (ctj) приводится к виду, в котором c1k < crk, где
r, k = 2, n, то для метода минимальных остовных деревьев K=1.
Применение макроса Skeleton
Для нахождения минимального остовного дерева разработан макрос Skeleton [5]. Код макроса:
стр. 225 из 262
Sub Skeleton()
Dim n As Integer, p() As Integer, q() As Integer, _ s As Single, a As Integer, b As Integer, t As Single n = Selection.Rows.Count
'Задание массивов с первоначальным разбиением вершин: ReDim p(1 To 1)
ReDim q(2 To n)
p(1) = 1
For i = 2 To n
q(i) = i
Next
'Нахождение оценки сверху заданных значений: t = Application.WorksheetFunction.Max(Selection) + 1 'Вычислительный цикл:
For k = 1 To n - 1 s = t
For Each x In p For Each y In q If y > 0 Then
If Cells(x, y).Value <> Empty And Cells(x, y).Value < s Then s = Cells(x, y).Value a = x: b = y End If End If Next Next
'Вывод результатов:
Cells(n + 1 + k, 1).Value = a Cells(n + 1 + k, 2).Value = b Cells(n + 1 + k, 3).Value = s 'Присоединение к p нового значения:
ReDim Preserve p(1 To 1 + k) p(k + 1) = b
'Исключение b из q, учитывая y>0:
стр. 226 из 262
q(b) = 0 Next
'Вывод минимальной суммы:
Cells(2 * n + 1, 3).Value = Application.WorksheetFunction. _
Sum(Range(Cells(n + 2, 3), Cells(2 * n, 3)))
End Sub
В частности, для данных диапазона E1:N10 рисунка 2 он возвращает (рис. 9):
12 1 6 0,140
13 6 5 0.050
14 5 7 0.030
15 6 8 0,090
16 7 10 0.100
17 8 9 0,100
18 1 2 0,300
19 2 4 0.060
20 4 3 0.050
21 0.920
Рисунок 9
То есть в минимальное остовное дерево входят дуги (1, 6), (6, 5), (5, 7), (6, 8), (7, 10), (8, 9), (1, 2), (2, 4), (4, 3), в диапазоне С12:С20 - их весовые коэффициенты. Наибольший вес 0,3 имеет дуга (1, 2), удаление ее приводит к двум кластерам (2, 3, 4), (1, 5, 6, 7, 8, 9, 10). После этого дерево, связывающее вершины 1, 5, 6, 7, 8, 9, 10, распадается, если удаляется одна из дуг (5, 7), (6, 8), (5, 6), из которых наибольший вес 0,09 имеет дуга (6, 8). Поэтому разбиение на три кластера получается удалением дуги (6, 8), что дает {2, 3, 4}, {1, 5, 6, 7, 10}, {8, 9}. Следующее разбиение приводит к кластерам, полученным в примере 2.
Заключение
Как следует из изложенного материала, предлагаемые методы минимальных гамильтоновых циклов и минимальных остовных деревьев достаточно эффективны. Единственное, что сдерживает их применение, - ограничения на число независимых переменных, имеющиеся в информационных математических технологиях при решении задач линейного программирования.
стр. 227 из 262
Литература
1. Вуколов, Э.А. Основы статистического анализа: практикум по статистическим методам и исследованию операций с использованием пакетов STATISTICA и EXCEL. -М.: ИНФРА-М, 2004.
2. Дубов, И.Ю. Обработка статистической информации с помощью SPSS. - М.: НТ Пресс, 2004.
3. Мандель, И.Д. Кластерный анализ. - М.: Финансы и статистика, 1988.
4. Миркин, Б.Г. Методы кластер-анализа для поддержки принятия решений. - М.: изд. дом «Высшая школа экономики», 2011.
5. Сдвижков, О. А. Дискретная математика и математические методы экономики с применением VBA Excel. - М.: ДМК Пресс, 2012.
6. Hartigan J. A. Clustering Algorithms. N.Y.: J. Wiley & Sons, 1975.
APPLICATION OF OPTIMIZATION TASKS IN CLUSTER ANALYSIS
Sdvizhkov Oleg Aleksandrovich, PhD (Candidate of Science) in Physics and Mathematics, Associate Professor of Engineering services, [email protected],
Russian State University of Tourism and Service,
Moscow, Russian Federation
Cluster analysis [3] is a relatively new branch of mathematics that studies the methods partitioning a set of objects, given a finite set of attributes into homogeneous groups (clusters). Cluster analysis is widely used in psychology, sociology, economics (market segmentation), and many other areas in which there is a problem of classification of objects according to their characteristics. Clustering methods implemented in a package STATISTICA [1] and SPSS [2], they return the partitioning into clusters, clustering and dispersion statistics dendrogram of hierarchical clustering algorithms. MS Excel Macros for main clustering methods and application examples are given in the monograph [5].
One of the central problems of cluster analysis is to define some criteria for the number of clusters, we denote this number by K, into which separated are a given set of objects. There are several dozen approaches [4] to determine the number K. In particular, according to [6], the number of clusters K - minimum number which satisfies ( WK / WK+1 -1)(N - K -1) < 10 where WK - the minimum value of total dispersion for partitioning into K clusters, N - number of objects. Among the clusters automatically causes the consistent application of abnormal clusters [4]. In 2010, proposed and experimentally validated was a method for obtaining the number of K by applying the density function [4].
The article offers two simple approaches to determining K, where each cluster has at least two objects. In the first number K is determined by the shortest Hamiltonian cycles in the second - through the minimum spanning tree. The examples of clustering with detailed step by step solutions and graphic illustrations are suggested. Shown is the use of macro VBA Excel, which returns the minimum spanning tree to the problems of clustering. The article contains a macro code, with commentaries to the main unit.
Keywords: cluster, linear programming, the shortest cycle, the minimum spanning tree
стр. 228 из 262
References
1. Vukolov, E.A. Osnovy statisticheskogo analiza: praktikum po statisticheskim metodam i issledovaniiu operatsii s ispol'zovaniem paketov STATISTICA i EXCEL [Basics of statistical analysis: a workshop on statistical methods and operations research using STATISTICA packages and EXCEL]. - M.: INFRA-M, 2004.
2. Dubov, I.Iu. Obrabotka statisticheskoi informatsii s pomoshch'iu SPSS [Statistical information processing using SPSS]. - M.: NT Press, 2004.
3. Mandel', I.D. Klasternyi analiz [Cluster analysis]. - M.: Finansy i statistika, 1988.
4. Mirkin, B.G. Metody klaster-analiza dlia podderzhki priniatiia reshenii [Methods of cluster analysis to support decision making]. - M.: izd. dom «Vysshaia shkola ekonomiki», 2011.
5. Sdvizhkov, O. A. Diskretnaia matematika i matematicheskie metody ekonomiki s primeneniem VBA Excel [Discrete mathematics and mathematical methods in economics using VBA Excel]. - M.: DMK Press, 2012.
6. Hartigan, J. A. Clustering Algorithms. N.Y.: J. Wiley & Sons, 1975.