что такое k means

Простейшая кластеризация изображени методом к-средних (k-means)

Зачастую при поиске движущихся объектов на видео будь то методом вычитания фона, временной разности, оптического потока, в итоге мы получаем множество точек, которые после действия вышеупомянутых алгоритмов помечены как изменившие свое положение относительно предыдущего кадра и относящиеся к переднему плану.

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

После такой обработки встает вопрос о сегментации объектов методом кластерного анализа, о котором пойдет речь ниже и собственно его реализация на C++.

Сегментация объектов

Для начала немного теории:
Сегментация — это процесс разделения цифрового изображения на несколько сегментов (множеств пикселей). Проще говоря, это вещь, которая позволяет определить какие пиксели из данного множества относятся к Ferrari, а какие к Peugeot.
Очень эффективным с точки зрения вычислительных ресурсов является использование для сегментации методов кластерного анализа. Суть кластеризации состоит в том, что все исходные объекты (в данном случае пиксели ) разбиваются на несколько не пересекающихся групп таким образом, чтобы объекты, попавшие в одну группу, имели сходные характеристики, в то время как у объектов из разных групп эти характеристики должны значительно отличаться. Полученные группы называются кластерами. Исходными значениями в простейшем способе для кластеризации являются координаты пикселя (x, y), в более сложных случаях, например для полутоновых изображений, используется трехмерный вектор (x, y, I(x, y) ), где I(x, y) — градации серого
и пятимерный вектор если используется RGB.

Метод к-средних

Центроид — точка которая является центром кластера.
k-средних (k-means) — наиболее популярный метод кластеризации. Алгоритму широко отдается предпочтение из-за его простоты реализации, большой скорости (а это очень важно при работе с видео).
Действие алгоритма таково, что он стремится минимизировать суммарное квадратичное отклонение точек кластеров от центров этих кластеров. В простонародье говоря, это итеративный алгоритм, который делит данное множество пикселей на k кластеров точки, которых являются максимально приближенными к их центрам, а сама кластеризация происходит за счет смещения этих же центров. Такой себе принцип разделяй и властвуй.
Также следует оговорить то, что метод к-средних очень чувствительный к шуму, который может существенно исказить результаты кластеризации.Так что в идеале, перед кластеризацией, нужно прогнать кадры через фильтры предназначиные для его уменьшения.

Начнем

Для начала нам нужен класс, назовем его Cluster, который будет хранить вектор координат пикселей относящихся к кластеру, текущие и предыдущие значения координат центроида:

Теперь нам надо реализовать метод которой будет распределять начальные координаты центроидов. Можно конечно сделать чего-нибудь по сложнее, но в нашем случае сойдет и равномерное распределение по вектору:

Также нужно написать метод, который будет ответственный за нахождение новых координат центроида в соответствии с пунктом 5.Координаты нового центроида можно найти описав вокруг пикселей кластера прямоугольник и тогда центроидом будет пересечение его диагоналей.

И теперь только остался сделать простенький метод самого «привязывания» пикселей к определенному кластеру по принципу сравнения модулей отрезков:

И наконец главный цикл:

И что же из этого всего следует?

Вернемся к картинке с машинами, кластеризуя движущиеся объекты возникает проблема при использовании алгоритма к-средних, а именно мы не знаем сколько в данной сцене будет движущихся объектов, хотя можем приблизительно предугадать. Например кадр с машинами, на той сцене разумным будет предположить, что ну максимум там будет машин 10. Таким образом задавая на вход программе k = 10 и обведя точки 10 кластеров зелеными прямоугольниками, мы получим примерно следующую картину:

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

Теперь банально объеденив пересекающиеся прямоугольники, мы находим результирующие кластеры, обведя которые прямоугольником мы получим изображение преведенное в начале поста.Все просто.

Источник

Кластеризация: алгоритмы k-means и c-means

Как и обещал, продолжаю серию публикаций о технологии Data Mining. Сегодня хочу рассказать о двух алгоритмах кластеризации (k-means и c-means), описать преимущества и недостатки, дать некоторые рекомендации по их использованию. Итак, поехали…

Кластеризация — это разделение множества входных векторов на группы (кластеры) по степени «схожести» друг на друга.

Кластеризация в Data Mining приобретает ценность тогда, когда она выступает одним из этапов анализа данных, построения законченного аналитического решения. Аналитику часто легче выделить группы схожих объектов, изучить их особенности и построить для каждой группы отдельную модель, чем создавать одну общую модель для всех данных. Таким приемом постоянно пользуются в маркетинге, выделяя группы клиентов, покупателей, товаров и разрабатывая для каждой из них отдельную стратегию (Википедия).

Меры расстояний

Для того, чтобы сравнивать два объекта, необходимо иметь критерий, на основании которого будет происходить сравнение. Как правило, таким критерием является расстояние между объектами.

Есть множество мер расстояния, рассмотрим несколько из них:

Евклидово расстояние — наиболее распространенное расстояние. Оно является геометрическим расстоянием в многомерном пространстве.

Квадрат евклидова расстояния. Иногда может возникнуть желание возвести в квадрат стандартное евклидово расстояние, чтобы придать большие веса более отдаленным друг от друга объектам.

Расстояние городских кварталов (манхэттенское расстояние). Это расстояние является просто средним разностей по координатам. В большинстве случаев эта мера расстояния приводит к таким же результатам, как и для обычного расстояния Евклида. Однако отметим, что для этой меры влияние отдельных больших разностей (выбросов) уменьшается (так как они не возводятся в квадрат).

Расстояние Чебышева. Это расстояние может оказаться полезным, когда желают определить два объекта как «различные», если они различаются по какой-либо одной координате (каким-либо одним измерением).

Степенное расстояние. Иногда желают прогрессивно увеличить или уменьшить вес, относящийся к размерности, для которой соответствующие объекты сильно отличаются. Это может быть достигнуто с использованием степенного расстояния.

Выбор расстояния (критерия схожести) лежит полностью на исследователе. При выборе различных мер результаты кластеризации могут существенно отличаться.

Алгоритм k-means (k-средних)

Наиболее простой, но в то же время достаточно неточный метод кластеризации в классической реализации. Он разбивает множество элементов векторного пространства на заранее известное число кластеров k. Действие алгоритма таково, что он стремится минимизировать среднеквадратичное отклонение на точках каждого кластера. Основная идея заключается в том, что на каждой итерации перевычисляется центр масс для каждого кластера, полученного на предыдущем шаге, затем векторы разбиваются на кластеры вновь в соответствии с тем, какой из новых центров оказался ближе по выбранной метрике. Алгоритм завершается, когда на какой-то итерации не происходит изменения кластеров.

Проблемы алгоритма k-means:
* необходимо заранее знать количество кластеров. Мной было предложено метод определения количества кластеров, который основывался на нахождении кластеров, распределенных по некоему закону (в моем случае все сводилось к нормальному закону). После этого выполнялся классический алгоритм k-means, который давал более точные результаты.
* алгоритм очень чувствителен к выбору начальных центров кластеров. Классический вариант подразумевает случайный выбор класторов, что очень часто являлось источником погрешности. Как вариант решения, необходимо проводить исследования объекта для более точного определения центров начальных кластеров. В моем случае на начальном этапе предлагается принимать в качестве центов самые отдаленные точки кластеров.
* не справляется с задачей, когда объект принадлежит к разным кластерам в равной степени или не принадлежит ни одному.

Нечеткий алгоритм кластеризации с-means

С последней проблемой k-means успешно справляется алгоритм с-means. Вместо однозначного ответа на вопрос к какому кластеру относится объект, он определяет вероятность того, что объект принадлежит к тому или иному кластеру. Таким образом, утверждение «объект А принадлежит к кластеру 1 с вероятностью 90%, к кластеру 2 — 10% » верно и более удобно.

Классический пример с-means — т.н. «бабочка» (butterfly):

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

Как видно, точка с координатами (3,2) в равной степени принадлежит как первому так и второму кластеру.

Остальные проблемы у с-means такие же, как у k-means, но они нивелируются благодаря нечеткости разбиения.

Источник

Открытый курс машинного обучения. Тема 7. Обучение без учителя: PCA и кластеризация

Привет всем! Приглашаем изучить седьмую тему нашего открытого курса машинного обучения!

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansДанное занятие мы посвятим методам обучения без учителя (unsupervised learning), в частности методу главных компонент (PCA — principal component analysis) и кластеризации. Вы узнаете, зачем снижать размерность в данных, как это делать и какие есть способы группирования схожих наблюдений в данных.

UPD: теперь курс — на английском языке под брендом mlcourse.ai со статьями на Medium, а материалами — на Kaggle (Dataset) и на GitHub.

Видеозапись лекции по мотивам этой статьи в рамках второго запуска открытого курса (сентябрь-ноябрь 2017).

План этой статьи

0. Введение

Основное отличие методов обучения без учителя от привычных классификаций и регрессий машинного обучения в том, что разметки для данных в этом случае нет. От этого образуются сразу несколько особенностей — во-первых это возможность использования несопоставимо больших объёмов данных, поскольку их не нужно будет размечать руками для обучения, а во-вторых это неясность измерения качества методов, из-за отсутствия таких же прямолинейных и интуитивно понятных метрик, как в задачах обучения с учителем.

Одной из самых очевидных задач, которые возникают в голове в отсутствие явной разметки, является задача снижения размерности данных. С одной стороны её можно рассматривать как помощь в визуализации данных, для этого часто используется метод t-SNE, который мы рассмотрели во второй статье курса. С другой стороны подобное снижение размерности может убрать лишние сильно скоррелированные признаки у наблюдений и подготовить данные для дальнейшей обработки в режиме обучения с учителем, например сделать входные данные более «перевариваемыми» для деревьев решений.

1. Метод главных компонент (PCA)

Интуиция, теория и особенности применения

Метод главных компонент (Principal Component Analysis) — один из самых интуитивно простых и часто используемых методов для снижения размерности данных и проекции их на ортогональное подпространство признаков.

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansВ совсем общем виде это можно представить как предположение о том, что все наши наблюдения скорее всего выглядят как некий эллипсоид в подпространстве нашего исходного пространства и наш новый базис в этом пространстве совпадает с осями этого эллипсоида. Это предположение позволяет нам одновременно избавиться от сильно скоррелированных признаков, так как вектора базиса пространства, на которое мы проецируем, будут ортогональными.

В общем случае размерность этого эллипсоида будет равна размерности исходного пространства, но наше предположение о том, что данные лежат в подпространстве меньшей размерности, позволяет нам отбросить «лишнее» подпространство в новой проекции, а именно то подпространство, вдоль осей которого эллипсоид будет наименее растянут. Мы будем это делать «жадно», выбирая по-очереди в качестве нового элемента базиса нашего нового подпространства последовательно ось эллипсоида из оставшихся, вдоль которой дисперсия будет максимальной.

«To deal with hyper-planes in a 14 dimensional space, visualize a 3D space and say ‘fourteen’ very loudly. Everyone does it.» — Geoffrey Hinton

Рассмотрим как это делается математически:

Чтобы снизить размерность наших данных из что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansв что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means, нам нужно выбрать топ- что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansосей такого эллипсоида, отсортированные по убыванию по дисперсии вдоль осей.

Начнём с того, что посчитаем дисперсии и ковариации исходных признаков. Это делается просто с помощью матрицы ковариации. По определению ковариации, для двух признаков что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansи что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansих ковариация будет

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

где что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means— матожидание что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means-ого признака.
При этом отметим, что ковариация симметрична и ковариация вектора с самим собой будет равна его дисперсии.

Таким образом матрица ковариации представляет собой симметричную матрицу, где на диагонали лежат дисперсии соответствующих признаков, а вне диагонали — ковариации соответствующих пар признаков. В матричном виде, где что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansэто матрица наблюдений, наша матрица ковариации будет выглядеть как

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

Чтобы освежить память — у матриц как у линейных операторов есть такое интересное свойство как собственные значения и собственные вектора (eigenvalues и eigenvectors). Эти штуки замечательны тем, что когда мы нашей матрицей действуем на соответствующее линейное пространство, собственные вектора остаются на месте и лишь умножаются на соответствующие им собственные значения. То есть определяют подпространство, которое при действии этой матрицей как линейным оператором, остаётся на месте или «переходит в себя». Формально собственный вектор что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansс собственным значением что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansдля матрицы что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansопределяется просто как что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means.

Матрицу ковариации для нашей выборки что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansможно представить в виде произведения что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means. Из отношения Релея вытекает, что максимальная вариация нашего набора данных будет достигаться вдоль собственного вектора этой матрицы, соответствующего максимальному собственному значению. Таким образом главные компоненты, на которые мы бы хотели спроецировать наши данные, являются просто собственными векторами соответствующих топ- что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansштук собственных значений этой матрицы.

Дальнейшие шаги просты до безобразия — надо просто умножить нашу матрицу данных на эти компоненты и мы получим проекцию наших данных в ортогональном базисе этих компонент. Теперь если мы транспонируем нашу матрицу данных и матрицу векторов главных компонент, мы восстановим исходную выборку в том пространстве, из которого мы делали проекцию на компоненты. Если количество компонент было меньше размерности исходного пространства, мы потеряем часть информации при таком преобразовании.

Примеры использования

Набор данных по цветкам ириса

Начнём с того, что загрузим все необходимые модули и покрутим привычный датасет с ирисами по примеру из документации пакета scikit-learn.

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

Теперь посмотрим, насколько PCA улучшит результаты для модели, которая в данном случае плохо справится с классификацией из-за того, что у неё не хватит сложности для описания данных:

Теперь попробуем сделать то же самое, но с данными, для которых мы снизили размерность до 2D:

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

Смотрим на возросшую точность классификации:

Видно, что качество возросло незначительно, но для более сложных данных более высокой размерности, где данные не разбиваются тривиально вдоль одного признака, применение PCA может достаточно сильно улучшить качество работы деревьев решений и ансамблей на их основе.

Посмотрим на 2 главные компоненты в последнем PCA-представлении данных и на тот процент исходной дисперсии в даных, который они «объясняют».

Набор данных по рукописным цифрам

Теперь возьмем набор данных по рукописным цифрам. Мы с ним уже работали в 3 статье про деревья решений и метод ближайших соседей.

Вспомним, как выглядят эти цифры – посмотрим на первые десять. Картинки здесь представляются матрицей 8 x 8 (интенсивности белого цвета для каждого пикселя). Далее эта матрица «разворачивается» в вектор длины 64, получается признаковое описание объекта.

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

Получается, размерность признакового пространства здесь – 64. Но давайте снизим размерность всего до 2 и увидим, что даже на глаз рукописные цифры неплохо разделяются на кластеры.

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

Ну, правда, с t-SNE картинка получается еще лучше, поскольку у PCA ограничение – он находит только линейные комбинации исходных признаков. Зато даже на этом относительно небольшом наборе данных можно заметить, насколько t-SNE дольше работает.

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

На практике, как правило, выбирают столько главных компонент, чтобы оставить 90% дисперсии исходных данных. В данном случае для этого достаточно выделить 21 главную компоненту, то есть снизить размерность с 64 признаков до 21.

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

2. Кластеризация

Интуитивная постановка задачи кластеризации довольно проста и представляет из себя наше желание сказать: «Вот тут у меня насыпаны точки. Я вижу, что они сваливаются в какие-то кучки вместе. Было бы круто иметь возможность эти точки относить к кучкам и в случае появления новой точки на плоскости говорить, в какую кучку она падает.» Из такой постановки видно, что пространства для фантазии получается много, и от этого возникает соответствующее множество алгоритмов решения этой задачи. Перечисленные алгоритмы ни в коем случае не описывают данное множество полностью, но являются примерами самых популярных методов решения задачи кластеризации.

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

K-means

Алгоритм К-средних, наверное, самый популярный и простой алгоритм кластеризации и очень легко представляется в виде простого псевдокода:

В случае обычной евклидовой метрики для точек лежащих на плоскости, этот алгоритм очень просто расписывается аналитически и рисуется. Давайте посмотрим соответствующий пример:

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

Также стоит заметить, что хоть мы и рассматривали евклидово расстояние, алгоритм будет сходиться и в случае любой другой метрики, поэтому для различных задач кластеризации в зависимости от данных можно экспериментировать не только с количеством шагов или критерием сходимости, но и с метрикой, по которой мы считаем расстояния между точками и центроидами кластеров.

Другой особенностью этого алгоритма является то, что он чувствителен к исходному положению центроид кластеров в пространстве. В такой ситуации спасает несколько последовательных запусков алгоритма с последующим усреднением полученных кластеров.

Выбор числа кластеров для kMeans

В отличие от задачи классификации или регресии, в случае кластеризации сложнее выбрать критерий, с помощью которого было бы просто представить задачу кластеризации как задачу оптимизации.
В случае kMeans распространен вот такой критерий – сумма квадратов расстояний от точек до центроидов кластеров, к которым они относятся.

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

здесь что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means– множество кластеров мощности что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means, что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means– центроид кластера что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means.

Понятно, что здравый смысл в этом есть: мы хотим, чтобы точки располагались кучно возле центров своих кластеров. Но вот незадача: минимум такого функционала будет достигаться тогда, когда кластеров столько же, сколько и точек (то есть каждая точка – это кластер из одного элемента).
Для решения этого вопроса (выбора числа кластеров) часто пользуются такой эвристикой: выбирают то число кластеров, начиная с которого описанный функционал что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansпадает «уже не так быстро». Или более формально:

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

Видим, что что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansпадает сильно при увеличении числа кластеров с 1 до 2 и с 2 до 3 и уже не так сильно – при изменении что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansс 3 до 4. Значит, в данной задаче оптимально задать 3 кластера.

Сложности

Само по себе решение задачи K-means NP-трудное (NP-hard), и для размерности что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means, числа кластеров что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansи числа точек что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansрешается за что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means. Для решения такой боли часто используются эвристики, например MiniBatch K-means, который для обучения использует не весь датасет целиком, а лишь маленькие его порции (batch) и обновляет центроиды используя среднее за всю историю обновлений центроида от всех относящихся к нему точек. Сравнение обычного K-means и его MiniBatch имплементации можно посмотреть в документации scikit-learn.

Affinity Propagation

Ещё один пример алгоритма кластеризации. В отличие от алгоритма К-средних, данный подход не требует заранее определять число кластеров, на которое мы хотим разбить наши данные. Основная идея алгоритма заключается в том, что нам хотелось бы, чтобы наши наблюдения кластеризовались в группы на основе того, как они «общаются», или насколько они похожи друг на друга.

Заведём для этого какую-нибудь метрику «похожести», определяющуюся тем, что что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meanss(x_i, x_k)$» data-tex=»inline»/> если наблюдение что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansбольше похоже на наблюдение что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means, чем на что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means. Простым примером такой похожести будет отрицательный квадрат расстояния что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means.

Теперь опишем сам процесс «общения». Для этого заведём две матрицы, инициализируемые нулями, одна из которых что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansбудет описывать, насколько хорошо что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means-тое наблюдение подходит для того, чтобы быть «примером для подражания» для что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means-того наблюдения относительно всех остальных потенциальных «примеров», а вторая — что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansбудет описывать, насколько правильным было бы для что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means-того наблюдения выбрать что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means-тое в качестве такого «примера». Звучит немного запутанно, но чуть дальше увидим пример «на пальцах».

После этого данные матрицы обновляются по очереди по правилам:

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

Спектральная кластеризация

Спектральная кластеризация объединяет несколько описанных выше подходов, чтобы получить максимальное количество профита от сложных многообразий размерности меньшей исходного пространства.

Для работы этого алгоритма нам потребуется определить матрицу похожести наблюдений (adjacency matrix). Можно это сделать таким же образом, как и для Affinity Propagation выше: что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means. Эта матрица также описывает полный граф с вершинами в наших наблюдениях и рёбрами между каждой парой наблюдений с весом, соответствующим степени похожести этих вершин. Для нашей выше выбранной метрики и точек, лежащих на плоскости, эта штука будет интуитивной и простой — две точки более похожи, если ребро между ними короче. Теперь нам бы хотелось разделить наш получившийся граф на две части так, чтобы получившиеся точки в двух графах были в общем больше похожи на другие точки внутри получившейся «своей» половины графа, чем на точки в «другой» половине. Формальное название такой задачи называется Normalized cuts problem и подробнее про это можно почитать тут.

Агломеративная кластеризация

Наверное самый простой и понятный алгоритм кластеризации без фиксированного числа кластеров — агломеративная кластеризация. Интуиция у алгоритма очень простая:

Сам процесс поиска ближайших кластеров может происходить с использованием разных методов объединения точек:

Профит первых трёх подходов по сравнению с четвёртым в том, что для них не нужно будет пересчитывать расстояния каждый раз после склеивания, что сильно снижает вычислительную сложность алгоритма.

По итогам выполнения такого алгоритма можно также построить замечательное дерево склеивания кластеров и глядя на него определить, на каком этапе нам было бы оптимальнее всего остановить алгоритм. Либо воспользоваться тем же правилом локтя, что и в k-means.

К счастью для нас в питоне уже есть замечательные инструменты для построения таких дендрограмм для агломеративной кластеризации. Рассмотрим на примере наших кластеров из K-means:

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

Метрики качества кластеризации

Задача оценки качества кластеризации является более сложной по сравнению с оценкой качества классификации. Во-первых, такие оценки не должны зависеть от самих значений меток, а только от самого разбиения выборки. Во-вторых, не всегда известны истинные метки объектов, поэтому также нужны оценки, позволяющие оценить качество кластеризации, используя только неразмеченную выборку.

Выделяют внешние и внутренние метрики качества. Внешние используют информацию об истинном разбиении на кластеры, в то время как внутренние метрики не используют никакой внешней информации и оценивают качество кластеризации, основываясь только на наборе данных. Оптимальное число кластеров обычно определяют с использованием внутренних метрик.

Adjusted Rand Index (ARI)

Предполагается, что известны истинные метки объектов. Данная мера не зависит от самих значений меток, а только от разбиения выборки на кластеры. Пусть что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means— число объектов в выборке. Обозначим через что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means— число пар объектов, имеющих одинаковые метки и находящихся в одном кластере, через что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means— число пар объектов, имеющих различные метки и находящихся в разных кластерах. Тогда Rand Index это

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

То есть это доля объектов, для которых эти разбиения (исходное и полученное в результате кластеризации) «согласованы». Rand Index (RI) выражает схожесть двух разных кластеризаций одной и той же выборки. Чтобы этот индекс давал значения близкие к нулю для случайных кластеризаций при любом что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansи числе кластеров, необходимо нормировать его. Так определяется Adjusted Rand Index:

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

Эта мера симметрична, не зависит от значений и перестановок меток. Таким образом, данный индекс является мерой расстояния между различными разбиениями выборки. что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansпринимает значения в диапазоне что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means. Отрицательные значения соответствуют «независимым» разбиениям на кластеры, значения, близкие к нулю, — случайным разбиениям, и положительные значения говорят о том, что два разбиения схожи (совпадают при что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means).

Adjusted Mutual Information (AMI)

Данная мера очень похожа на что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means. Она также симметрична, не зависит от значений и перестановок меток. Определяется с использованием функции энтропии, интерпретируя разбиения выборки, как дискретные распределения (вероятность отнесения к кластеру равна доле объектов в нём). Индекс что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansопределяется как взаимная информация для двух распределений, соответствующих разбиениям выборки на кластеры. Интуитивно, взаимная информация измеряет долю информации, общей для обоих разбиений: насколько информация об одном из них уменьшает неопределенность относительно другого.

Аналогично что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansопределяется индекс что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means, позволяющий избавиться от роста индекса что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansс увеличением числа классов. Он принимает значения в диапазоне что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means. Значения, близкие к нулю, говорят о независимости разбиений, а близкие к единице – об их схожести (совпадении при что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means).

Гомогенность, полнота, V-мера

Формально данные меры также определяются с использованием функций энтропии и условной энтропии, рассматривая разбиения выборки как дискретные распределения:

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

здесь что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means— результат кластеризации, что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means— истинное разбиение выборки на классы. Таким образом, что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansизмеряет, насколько каждый кластер состоит из объектов одного класса, а что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means— насколько объекты одного класса относятся к одному кластеру. Эти меры не являются симметричными. Обе величины принимают значения в диапазоне что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means, и большие значения соответствуют более точной кластеризации. Эти меры не являются нормализованными, как что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansили что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means, и поэтому зависят от числа кластеров. Случайная кластеризация не будет давать нулевые показатели при большом числе классов и малом числе объектов. В этих случаях предпочтительнее использовать что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means. Однако при числе объектов более 1000 и числе кластеров менее 10 данная проблема не так явно выражена и может быть проигнорирована.

Для учёта обеих величин что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansи что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k meansодновременно вводится что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means-мера, как их среднее гармоническое:

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

Она является симметричной и показывает, насколько две кластеризации схожи между собой.

Силуэт

В отличие от описанных выше метрик, данный коэффициент не предполагает знания истинных меток объектов, и позволяет оценить качество кластеризации, используя только саму (неразмеченную) выборку и результат кластеризации. Сначала силуэт определяется отдельно для каждого объекта. Обозначим через что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means— среднее расстояние от данного объекта до объектов из того же кластера, через что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means— среднее расстояние от данного объекта до объектов из ближайшего кластера (отличного от того, в котором лежит сам объект). Тогда силуэтом данного объекта называется величина:

что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means

С помощью силуэта можно выбирать оптимальное число кластеров что такое k means. Смотреть фото что такое k means. Смотреть картинку что такое k means. Картинка про что такое k means. Фото что такое k means(если оно заранее неизвестно) — выбирается число кластеров, максимизирующее значение силуэта. В отличие от предыдущих метрик, силуэт зависит от формы кластеров, и достигает больших значений на более выпуклых кластерах, получаемых с помощью алгоритмов, основанных на восстановлении плотности распределения.

И напоследок давайте посмотрим на эти метрики для наших алгоритмов, запущенных на данных рукописных цифр MNIST:

ARIAMIHomogenityCompletenessV-measureSilhouette
K-means0.6622950.7327990.7354480.7429720.7391910.182097
Affinity0.1751740.4512490.9589070.4869010.6458570.115197
Spectral0.7526390.8278180.8295440.8763670.8523130.182195
Agglomerative0.7940030.8560850.8575130.8790960.8681700.178497

3. Домашнее задание

Актуальные домашние задания объявляются во время очередной сессии курса, следить можно в группе ВК и в репозитории курса.

В демо-версии домашнего задания предлагается поработать с данными Samsung по распознаванию видов активностей людей. Задача интересная, мы на нее посмотрим и как на задачу кластеризации (забыв, что выборка размечена) и как на задачу классификации. Jupyter-заготовка, веб-форма для ответов, там же найдете и решение.

4. Полезные источники

Статья написана в соавторстве с yorko (Юрием Кашницким). Материал статьи доступен в виде тетрадки Jupyter в GitHub-репозитории курса.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *