Upload
technosphere1
View
148
Download
9
Embed Size (px)
Citation preview
Лекция 3Алгоритмы кластеризации
Николай Анохин
9 октября 2014 г.
Задача кластеризации
Дано. N обучающих D-мерных объектов xi ∈ X , образующихтренировочный набор данных (training data set) X .
Найти. Модель h∗(x) из семейства параметрических функцийH = {h(x, θ) : X ×Θ→ N}, ставящую в соответствие произвольномуx ∈ X один из K кластеров так, чтобы объекты внутри одногокластера были похожи, а объекты из разных кластеров различались.
Что мы уже изучилиI принцип Maximum LikelihoodI алгоритм Expectation MaximizationI смесь нормальных распределений и k-meansI различные виды функций расстояния/схожести
1 / 27
План занятия
Байесовская кластеризация
Иерархическая кластеризация
DBSCAN
Выбор количества кластеров
2 / 27
MAPMaximum a posterioriПусть дано семейство параметрических моделей h(x, θ). Вычисляемапостериорное распределение p(θ|D). В качестве оптимального θвыбираем моду этого распределения.
Предположения1. Количество кластеров K задано2. Априорные вероятности кластеров заданы P(cj), ∀j ∈ 1, . . . ,K
3. Распределение x в зависимости от клаcтера cj и параметров θjизвестны p(x|cj , θj)
4. Априорное распределение параметров p(θ) задано5. Дан обучающий набор данных D, состоящий из n объектов x,
независимо выбранных из распределения
p(x|θ) =K∑j=1
P(cj)p(x|cj , θj)
3 / 27
Байесовская кластеризация
Дано. P(cj), p(x|cj , θj), p(θ), p(x|θ)
Найти. p(cj |x)
p(cj |x,D) =p(cj |D)p(x|cj ,D)∑Ki=1 p(ci |D)p(x|ci ,D)
=
=P(cj)
∫p(x|cj , θj)p(θ|D)dθ∑K
i=1 P(ci )∫p(x|ci , θi )p(θ|D)dθ
=
Неизвестно. p(θ|D)
4 / 27
Апостериорное распределение параметров
Дано. P(cj), p(x|cj , θj), p(θ), p(x|θ)
Найти. p(θ|D)
p(θ|D) =p(θ)p(D|θ)∫p(θ)p(D|θ)dθ
=
=p(θ)
∏nk=1 p(xk |θ)∫
p(θ)∏n
k=1 p(xk |θ)dθ
Итеративное обновление θ
p(θ|Dn) =p(xn|θ)p(θ|Dn−1)∫p(xn|θ)p(θ|Dn−1)dθ
5 / 27
Байесовская кластеризация
I при равномерном p(θ)MAP = ML
I для больших наборов данныхMAP ≈ ML
I для маленьких наборовданных MAP лучше ML
I при MAP доверительныеинтервалы из коробки
I ML обычно прощереализовать
6 / 27
Два подхода
Agglomerative1. начинаем с ситуации, когда каждый объект – отдельный кластер2. на каждом шаге совмещаем два наиболее близких кластера3. останавливаемся, когда получаем требуемое количество или
единственный кластер
Divisive1. начинаем с ситуации, когда все объекты составляют один
кластер2. на каждом шаге разделяем два один из кластеров пополам3. останавливаемся, когда получаем требуемое количество или N
кластеров
8 / 27
Дендрограмма
9 / 27
Агломеративный алгоритм1 function agglomerative(X, K):2 initialize N # number of objects3 initialize C = N # number of clusters4 initialize C_i = x_i # initial clusters5 while C > K:6 C_a = C_b = None # closest clusters7 min_dist = +inf # distance between closest8 for i in 1 .. C:9 for j in i + 1 .. C:10 dist = d(C_i, C_j) # dist. betw. clusters11 if dist < min_dist:12 min_dist = dist13 C_a = C_i14 C_b = C_j15 merge(C_a, C_b)16 C = C - 117 return C_1, ..., C_K
память O(N2), сложность O(N2logN)
10 / 27
Расстояние между кластерами
I single-linkagedmin(Ci ,Cj) = min
x∈Ci ,x′∈Cj
‖x− x′‖
I complete-linkage
dmax(Ci ,Cj) = maxx∈Ci ,x′∈Cj
‖x− x′‖
I average
davg (Ci ,Cj) =1
ninj
∑x∈Ci
∑x′∈Cj
‖x− x′‖
I meandmean(Ci ,Cj) = ‖mi −mj‖
11 / 27
ЗадачаКластеризовать данные иерархическим методом с использованиемрасстояний между кластерами dmin и dmax
1 2 3 4 5
01
23
4
x
y
12 / 27
Stepwise-optimal HCКакой критерий мы оптимизируем?
1 function swo(X, K):2 initialize N # number of objects3 initialize C = N # number of clusters4 initialize C_i = x_i # initial clusters5 while C > K:6 # choose the pair that optimizes7 # the given criterion J when merged8 C_a, C_b = find_best_merge(J, C_1, ..., C_C)9 merge(C_a, C_b)10 C = C - 111 return C_1, ..., C_K
dmax обеспечивает наименьшее увеличение диаметра кластераde обеспечивает наименьшее увеличение квадратичного критерия
de(Ci ,Cj) =
√ninj
ni + nj‖mi −mj‖
13 / 27
Неэвклидовы пространства
Проблема. Как измерить расстояние между кластерами, еслиневозможно определить центроид?
Идея. В каждом из кластеров выбрать “типичный” пример –clustroid.
МинимизируемI сумму расстояний до других объектов в кластереI сумму квадратов расстояний до других объектов в кластереI максимальное расстояние до других объектов в кластере
14 / 27
Иерархическая кластеризация: итог
+ Несферические кластеры+ Разнообразие критериев+ Любые K из коробки— Требует много ресурсов
15 / 27
DBSCAN: идея метода
I Кластеризация, основанная на плотности объектовI Кластеры – участки высокой плотности, разделенные участками
низкой плотности
(источник)
16 / 27
Определения
ПлотностьКоличество объектов внутри сферы заданного радиуса ε
Core-объектОбъект x является core-объектом, если плотность вокруг негобольше min_pts
Граничный-объектОбъект x является граничным-объектом, если плотность вокруг негоменьше min_pts, но он находится рядом с core-объектом
ШумОбъект x является шумом, если он не является ни core-объектом, ниграничным объектом
17 / 27
Виды объектов
18 / 27
DBSCAN 1
1 function dbscan(X, eps, min_pts):2 initialize NV = X # not visited objects3 for x in NV:4 remove(NV, x) # mark as visited5 nbr = neighbours(x, eps) # set of neighbours6 if nbr.size < min_pts:7 mark_as_noise(x)8 else:9 C = new_cluster()10 expand_cluster(x, nbr, C, eps, min_pts, NV)11 yield C
19 / 27
DBSCAN 2
1 function expand_cluster(x, nbr, C, eps, min_pts, NV):2 add(x, C)3 for x1 in nbr:4 if x1 in NV: # object not visited5 remove(NV, x1) # mark as visited6 nbr1 = neighbours(x1, eps)7 if nbr1.size >= min_pts:8 # join sets of neighbours9 merge(nbr, nbr_1)10 if x1 not in any cluster:11 add(x1, C)
Сложность: O(n2) или O(n log n) (R∗Tree)Память: O(n) или O(n2)
20 / 27
DBSCAN: итог
+ не требует K
+ кластеры произвольной формы+ учитывает выбросы— Не вполне детерминированный— Не работает при разных плотностях
кластеров
21 / 27
Викторина
22 / 27
Выбор наилучшего K
Идея. Выбрать критерий качества кластеризации и построить егозначение для K = 1, 2, . . .
I средняя сумма квадратоврасстояния до центроида
I средний диаметр кластера
23 / 27
Критерий Silhouette
Пусть дана кластеризация в K кластеров, и объект i попал в Ck
I a(i) – среднее расстояние от i объекта до объектов из Ck
I b(i) = minj 6=kbj(i), где bj(i) – среднее расстояние от i объекта дообъектов из Cj
silhouette(i) =b(i)− a(i)
max(a(i), b(i))
Средний silhouette для всех точек из X является критерием качествакластеризации.
24 / 27
Кластеризация. Что дальше
I Графо-теоретические методы (affinity propagation, mcl, etc.)I Снижение размерности (SOM, PCA, etc.)I Бесконечномерные смеси (Dirichlet process)
25 / 27
Задача
Кластеризовать фотографии с футбольных матчей. Ожидается чтофотографии игроков одной команды окажутся в одном кластере.
I Скачать данные и шаблон кода http://bit.ly/1uALLl4I Запустить код и интерпретировать дендрограмму
python football/football.py football/img/
При K = 3 сколько ошибок дает алгоритм?I Поэкспериментировать с разными видами расстояния между
кластерами (-l). Какой из них дает наилучший результат?I Реализовать критерии выбора количества кластеров: diameter и
silhouette. Какое число кластеров рекомендует каждый изкритериев?
26 / 27
Вопросы