САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Математико-механический факультет Кафедра информационных систем Скородумов Кирилл Владимирович Кластеризация потока данных Курсовая работа Научный руководитель: д. ф.-м. н., профессор Новиков Б. А. Санкт-Петербург 2015 Оглавление Введение 3 1. Обработка потока данных в реальном времени 4 2. Структура алгоритма кластеризации 2.1. Вектор признаков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Массив прототипов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 7 3. Этап кластеризации 8 4. Оконные модели 4.1. Скользящие окна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. Затухающие окна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3. Окна с фиксированными границами . . . . . . . . . . . . . . . . . . . . . 9 9 9 10 5. Обработка выбросов 11 6. Заключение 12 Список литературы 13 2 Введение Данный документ представляет собой обзор методов, которые помогут решить задачу обработки данных, полученных от группы испытуемых, выполняющих задания на тренажёре для авиадиспетчеров. Датчики, подключённые к испытуемым, несколько раз в секунду считывают активность зрачков во время выполнения заданий. Задача заключается в том, чтобы автоматически по этим данным выделить фазы мозговой активности, чтобы впоследствии использовать их для оценки квалификации испытуемого в качестве авиадиспетчера. Фазы • Отдых • Мобилизация • Стабилизация • Работа • Восстановление Решение этой задачи имеет два важных этапа: разработать алгоритм или комбинацию алгоритмов, которые из имеющихся данных активности зрачка извлечь распределение фаз активности; обеспечить возможность работы этого алгоритма с потоком данных с тренажёра в реальном времени. 3 1. Обработка потока данных в реальном времени Кластеризация потока данных требует иметь возможность непрерывно обрабатывать поступающие объекты при жёстких ограничениях по времени и памяти. Алгоритмы для обработки потока данных должны в идеале удовлетворять следующим условиям: • Выдавать результат в режиме реального времени, быстро и инкрементально обрабатывая поступающие объекты • Быстро приспосабливаться к изменяющимся данным • Масштабироваться к количеству объектов, которые поступают • Предоставлять структуру данных, которая не сильно разрастается с обработкой большого числа объектов • Обнаруживать наличие выбросов В данном тексте я рассмотрю такие алгоритмы кластеризации, как BIRCH[8], DenStream, Stream[3], LSearch Stream[6], CluStream[1]. 4 2. Структура алгоритма кластеризации Обычно алгоритм кластеризации потока данных состоит из двух этапов: этап создания и поддержания структуры данных для кластеризации, который обычно происходит в режиме реального времени и, собственно кластеризация, которая запускается по требованию пользователя или по истечению какого-то промежутка времени. Рассмотрим структуры данных, которые создают различные алгоритмы. 2.1. Вектор признаков Этот вектор обычно обозначают CF, от Clustering Feature Vector. Этот вектор имеет 3 элемент: N – количество объектов, LS – линейная сумма объектов, SS – сумма квадратов объектов. Эти компоненты позволяют считать 3 важных характеристики объектов, на основе которых они посчитаны: центроид, радиус и диаметр. Впервые упомянут он был в алгоритме BIRCH[8]. centroid = √ radius = LS SS ( SS LS − N N (1) )2 v u u 2N ∗ SS − 2N ∗ LS 2 diameter = t N (N − 1) (2) (3) Описанная структура данных обладает двумя важными свойствами: инкрементальностью и аддитивностью. • В неё легко можно вставить новый объект, пересчитав элементы CF. LS = LS + 2 xj ; SS = SS + (xj ) ; N = N + 1 • Два непересекающихся вектора CF1 и CF2 можно объединить, суммируя их компоненты. LS3 = LS1 + LS2 ; SS3 = SS1 + SS2 ; N3 = N1 + N2 Другая структура данных, используемая в BIRCH – это сбалансированное по высоте B+ дерево, названное CF-дерево. Каждый узел в нём содержит не больше B элементов, каждый из которых – CF-вектор и ссылка на дочерний узел. Листья такого дерева содержат не более L элементов, каждый из которых – CF-вектор. В начале работы алгоритма поток просматривается и строится CF дерево, причём максимальный радиус CF вектора ограничивается параметром T, большие значения T позволяют вместить больше объектов в каждый CF-вектор, но дают худшую точность работы. Новый объект спускается вниз по CF-дереву и, либо добавляется к одному из CF-векторов в листе, либо создаётся новый CF-вектор. В случае, если в листе становится больше L элементов, происходит разделение листов B+-дерева. 5 Идея использования CF-векторов, как способа первичной группировки элементов потока данных развивается в алгоритме CluStream[1] в структуре данных, названной авторами микрокластер. Микрокластер имеет 5 составляющих, три из них - те же, что и в CF векторе (N, NS, SS), а также сумма времён появления элементов(timestamp) – LST и сумма их квадратов – SST. В фазе построения структуры данных CluStream держит в памяти q микрокластеров, где q – входной параметр. Каждый новый объект поглощается ближайшим микрокластером. Если никакой микрокластер не может поглотить объект, создаётся новый микрокластер, при этом либо удаляется один из наиболее старых, либо сливается два микрокластера. Denstream также основан на CF-векторах, во время построения микрокластеров поддерживаются следующие метки на них: p-микрокластеры – потенциальные микрокластеры и o-микрокластеры – необходимые для обработки потенциальных выбросов. Каждый p-микрокластер имеет вес, который показывает важность микрокластера на основе временного признака – микрокластеры с большим количесвом недавно поступивших объектов имеют больший вес, который уменьшается с течением времени. Вес вычисляется согласно (4). ∑ w= f (T − tj ) (4) j∈p−microcluster f (t) = 2− λt (5) Соответственно, CF вектор в Denstream хранит взвешенные линейные и квадратичные суммы своих элементов. W LS = ∑ f (T − tj )xj (6) f (T − tj )xj 2 (7) j∈p−microcluster W SS = ∑ j∈p−microcluster o-микрокластер имеет те же компоненты плюс Tini – время его создания. Когда появляется новый элемент xj , алгоритм пытается вставить его в ближайший p-микрокластер, обновляя его элементы. Вставка заканчивается успешно, если радиус полученного микрокластера не превышает предопределённого предела ϵ. Иначе алгоритм пытается вставить элемент в ближайший o-микрокластер. Если после этого его вес превышает порог β ∗ µ, указанный пользователем, o-микрокластер становится р-микрокластером. Если вставка в o-микрокластер также не удалась, создаётся новый o-микрокластер. Раз определённый период времени происходит проверка, которая переводит потерявшие вес p-микрокластеры в o-микрокластеры. 6 2.2. Массив прототипов Массив прототипов является массивом медиан, которые приближённо представляют поток данных. Например, алгоритм Stream[3] делит поток данных на части размера m, из которых затем выбирается 2k элементов для их представления, используя вариант алгоритма k-медиан[7]. Как только количество выбранных медоид достигает m, они снова сжимаются до размера 2k и процесс продолжается. Алгоритм Stream LSearch использует похожий механизм. Он предполагает, что объекты приходят частями X1 , X2 , ...XZ , где каждая часть может быть кластеризована в памяти, получив k кластеров на выходе. На i-м шаге алгоритм держит в памяти O(i*k) медиан, однако при Z → ∞ память неизбежно заполнится. Когда это происходит алгоритм кластеризует O(i*k) медиан и хранит дальше только k элементов, получившихся в результате. 7 3. Этап кластеризации Наиболее популярным алгоритмом кластеризации данных является алгоритм kсредних[4]. Кластеризация потока данных часто оперирует с модификациями этого алгоритма. В [8] авторы предлагают три варианта использования алгоритма kсредних для того, чтобы работать с CF-векторами. 1. Посчитать центроид каждого CF-вектора – вать как объект для кластеризации LS N и каждый центроид рассматри- 2. Сделать то же, что и выше, но сопоставить каждому вектору вес, пропорциональный числу элементов в нём, чтобы CF-вектора с большим весом оказали большее влияние на результат. 3. Использовать непосредственно CF-вектор как объект для кластеризации Clustream использует модифицированный второй вариант, который выбирает стартовые прототипы с вероятностью, пропорциональной количеству объектов в микрокластере. LSearch использует понятие ”расположение объекта”, введённое в [5], чтобы модифицировать алгоритм k-средних. DenStream использует алгоритм DBScan[2]. Этот алгоритм получает на вход pмикрокластеры и два параметра – ϵµ чтобы кластеризовать данные. 8 Рис. 1: Скользящее окно в моменты времени t,t-1,t-2 Рис. 2: Затухающее окно 4. Оконные модели В большинстве приложений более недавние данные могут отражать тенденции в изменении распределения данных, они могут быть использованы для объяснения эволюции рассматриваемого процесса. Различные техники со сдвигаемым временным окном были созданы, чтобы учитывать этот факт. Тремя наиболее часто используемыми моделями являются: • Скользящие окна(Sliding windows) • Затухающие окна(Damped windows) • Окна с фиксированными границами(Landmark windows) 4.1. Скользящие окна В этой модели(Рис. 4.1) учитываются только данные с текущего момента до фиксированного момента времени в прошлом. Обработка поступающих объектов происходит в режиме очереди, где первый добавленный объект является первым в очереди на удаление. 4.2. Затухающие окна Модель затухающих окон(Рис. 4.2) присваивает веса поступающим данным, которые уменьшаются с увеличением давности. Таким образом, только что поступившие объекты окажут большее влияние на кластеры. DenStream использует именно эту модель. 9 Рис. 3: Окно фиксированное в момент t 4.3. Окна с фиксированными границами Эти окна(Рис. 4.3) занимают какой-то фиксированный промежуток времени: час, день, неделю, в зависимости от задачи. Также окно может заканчиваться по получению определённого количества объектов в потоке. Этой моделью пользуются многие алгоритмы, из расмотренных нами: BIRCH, CluStream, Stream и Stream LSearch. 10 5. Обработка выбросов Из рассматриваемых алгоритмов встроенную обработку выбросов имеют DenStream и Clustream. BIRCH также имеет опциональную фазу в которой, аналогично DenStream и CluStream ищет регионы с низкой плотностью. BIRCH сканирует CF-дерево и записывает листья с низкой плотностью(порог плотности является параметром) на диск, удаляя их из дерева. Периодически алгоритм проверяет, могут ли записанные на диск CF-вектора быть поглощены деревом и, возможно, возвращает их. Эти сканирования происходят когда заканчивается место на диске, либо когда поток был полностью просмотрен. DenStream использует о-микрокластеры для обработки выбросов, при этом хранение всех о-микрокластеров может создать нагрузку на систему, поэтому хранятся только те, чей вес увеличивается со временем, то есть они имеют шанс стать pмикрокластерами. Для этого каждый период времени Tp удаляются те о-микрокластеры, чей вес меньше лимита, задаваемого (8). ξ(T, Tini ) = 2−λ(T −Tini +Tp )−1 2−λTp − 1 11 (8) 6. Заключение В данном документе была рассмотрена общая структура некоторых алгоритмов кластеризации потока данных, которые могут быть использованы для решения задачи обработки данных активности зрачков людей, проходивших испытания на тренажёрах для авиадиспетчеров. 12 Список литературы [1] Aggarwal C. C. A framework for diagnosing changes in evolving data streams. // In Proceedings of the ACM SIGMOD International Conference on Management of Data. –– 2003. –– P. 575–586. [2] Ester M. Kriegel H.-P. Sander J., Xu X. A density-based algorithm for discovering clusters in large spatial databases with noise. // In Proceedings of the 2nd International Conference on Knowledge Discovery and Data Mining. –– 1996. –– P. 226–231. [3] Guha S. Mishra N.-Motwani R., O’Callaghan L. Clustering data streams. // In Proceedings of the IEEE Symposium on Foundations of Computer Science. –– 2000. –– P. 359–366. [4] Macqueen J. B. Some methods for classification and analysis of multivariate observations. // In Proceedings of the 5th Berkeley Symposium on Mathematical Statistics and Probability. –– 1967. –– P. 281–297. [5] Meyerson A. Online facility location. // In Proceedings of the Annual IEEE Symposium on Foundations of Computer Science. –– 2001. –– P. 426–431. [6] O’Callaghan L. Mishra N.-Meyerson A. Guha S., Motwani R. Streaming data algorithms for high-quality clustering. // In Proceedings of the 18th International Conference on Data Engineering. –– 2002. –– P. 685–694. [7] Wikipedia. k-medoids // Википедия, свободная энциклопедия. –– 2015. –– URL: http://en.wikipedia.org/wiki/K-medoids (online; accessed: 25.05.2015). [8] Zhang T. Ramakrishnan R., Livny M. BIRCH: A new data clustering algorithm and its applications. // Data Mining Knowl. Discov. –– 1997. –– P. 141–182. 13