Про функторы и кластеризацию
В работе "An Impossibility Theorem for Clustering" (2002) Jon Kleinberg определяет три простых свойства, которым должна удовлетворять любая кластеризация, а затем доказывает, что ни один алгоритм кластеризации не может обладать всеми тремя свойствами одномоментно. Пусть дано множество S, состоящие из n ≥ 2 точек и некоторая полуметрика (без неравенства треугольника) на нем d:S×S→R. Пусть D(S) — множество полуметрик на S, а Π(S) — множество разбиений S на дизъюнктные подмножества. Тогда кластеризацией назовем функцию f: D(S) → Π(S), которая каждой полуметрике на S ставит в соответствие некоторое диз.разбиение. Kleinberg предложил следующие три свойства, которым должна отвечать каждая такая функция f:
1. Инвариантность относительно гомотетии (scale invariance): f(d) = f(alpha * d) для любых d из D(S) и alpha > 0 из R;
2. Насыщенность (?) или richness: f сюръекция;
3. Непротиворечивость или consistency: пусть есть две полуметрики d и d', а Г некоторое разбиение S. d' это Г-трансформация d, если d'(i,j)≤d(i,j) для всех пар из одного кластера в Г, аналогично d'(i,j) ≥ d(i,j) для всех пар в различных кластерах, тогда d и d' не противоречат друг друг, если d' это f(d) трансформация d, то f(d) = f(d'), т.е. кластеры уплотняются и расползаются при замене метрики d на d';
Существуют алгоритмы кластеризации, которые сочетают в себе любые 2 из 3 перечисленных свойств. Допустим S — множество вершина графа, а d(i,j) — вес ребра. Рассмотрим три функции кластеризации, которые находят подграфы, выбирая некоторое подмножество ребер:
1. выберем произвольное 1<k<n и упорядочим ребра по весу, будем добавлять ребра в подграф из упорядоченного списка ребер, пока он не будет иметь ровно k связных компонент;
2. выберем произвольное r и будем добавлять ребра с весом не меньшим r, полученные компоненты связности и назовем кластерами;
3. выберем произвольное 1 > alpha > 0 и пусть R это max(d). Будем сохранять ребра с весом не более alpha * d;
Утверждение: Функция 1 удовлетворяет 1 и 3 (число кластеров ограничено k сверху), функция 2 удовлетворяет 2 и 3 (варьируем r, получаем разные разбиения и теряем инвариантность относительно гомотетии), а функция 3 удовлетворяет 1 и 2.
И тут в дело врывается топологический анализ данных, с уже классической статьей "Classifying Clustering Schemes" (2013) by Gunnar Carlsson & Facundo Memoli. Ключевая идея их работы заключается в том, что эти свойства кластеризации могут быть закодированы как морфизмы в категории конечных метрических пространств таким образом, что ответом будет не функция кластеризации, а функтор кластеризации в подходящую категорию и он будет обладать уже всеми желанными свойствами.
В работе "An Impossibility Theorem for Clustering" (2002) Jon Kleinberg определяет три простых свойства, которым должна удовлетворять любая кластеризация, а затем доказывает, что ни один алгоритм кластеризации не может обладать всеми тремя свойствами одномоментно. Пусть дано множество S, состоящие из n ≥ 2 точек и некоторая полуметрика (без неравенства треугольника) на нем d:S×S→R. Пусть D(S) — множество полуметрик на S, а Π(S) — множество разбиений S на дизъюнктные подмножества. Тогда кластеризацией назовем функцию f: D(S) → Π(S), которая каждой полуметрике на S ставит в соответствие некоторое диз.разбиение. Kleinberg предложил следующие три свойства, которым должна отвечать каждая такая функция f:
1. Инвариантность относительно гомотетии (scale invariance): f(d) = f(alpha * d) для любых d из D(S) и alpha > 0 из R;
2. Насыщенность (?) или richness: f сюръекция;
3. Непротиворечивость или consistency: пусть есть две полуметрики d и d', а Г некоторое разбиение S. d' это Г-трансформация d, если d'(i,j)≤d(i,j) для всех пар из одного кластера в Г, аналогично d'(i,j) ≥ d(i,j) для всех пар в различных кластерах, тогда d и d' не противоречат друг друг, если d' это f(d) трансформация d, то f(d) = f(d'), т.е. кластеры уплотняются и расползаются при замене метрики d на d';
Существуют алгоритмы кластеризации, которые сочетают в себе любые 2 из 3 перечисленных свойств. Допустим S — множество вершина графа, а d(i,j) — вес ребра. Рассмотрим три функции кластеризации, которые находят подграфы, выбирая некоторое подмножество ребер:
1. выберем произвольное 1<k<n и упорядочим ребра по весу, будем добавлять ребра в подграф из упорядоченного списка ребер, пока он не будет иметь ровно k связных компонент;
2. выберем произвольное r и будем добавлять ребра с весом не меньшим r, полученные компоненты связности и назовем кластерами;
3. выберем произвольное 1 > alpha > 0 и пусть R это max(d). Будем сохранять ребра с весом не более alpha * d;
Утверждение: Функция 1 удовлетворяет 1 и 3 (число кластеров ограничено k сверху), функция 2 удовлетворяет 2 и 3 (варьируем r, получаем разные разбиения и теряем инвариантность относительно гомотетии), а функция 3 удовлетворяет 1 и 2.
И тут в дело врывается топологический анализ данных, с уже классической статьей "Classifying Clustering Schemes" (2013) by Gunnar Carlsson & Facundo Memoli. Ключевая идея их работы заключается в том, что эти свойства кластеризации могут быть закодированы как морфизмы в категории конечных метрических пространств таким образом, что ответом будет не функция кластеризации, а функтор кластеризации в подходящую категорию и он будет обладать уже всеми желанными свойствами.