У меня есть несколько распределений (10 распределений на рисунке ниже).
Фактически это гистограммы: на оси x имеется 70 значений, которые представляют собой размеры некоторых частиц в растворе, и для каждого значения x соответствующее значение y представляет собой долю частиц, размер которых составляет около значения x.
Я хотел бы сгруппировать эти распределения. В настоящее время я использую иерархическую кластеризацию с евклидовым расстоянием, например. Я не удовлетворен выбором расстояния. Я пробовал теоретико-информационное расстояние, такое как Кульбака-Лейблера, но в данных много нулей, и это вызывает трудности. Есть ли у вас предложение подходящего расстояния и / или другого метода кластеризации?
источник
Если ваши данные представляют собой гистограммы, вы можете посмотреть соответствующие функции расстояния, например, «расстояние пересечения гистограммы».
Существует инструмент под названием ELKI, который имеет широкий спектр алгоритмов кластеризации (гораздо более современных, чем k-средства и иерархическая кластеризация), и даже включает версию пересечения гистограмм, которую вы можете использовать в большинстве алгоритмов. Возможно, вы захотите попробовать несколько алгоритмов, доступных в нем. Из сюжета, который вы дали выше, мне неясно, что вы хотите сделать. Группируйте отдельные гистограммы, верно? Судя по 10, которые вы показали выше, кластеров может не быть.
источник
Возможно, вы захотите использовать некоторую технику извлечения признаков для получения дескрипторов для k-средних или другого типа кластеризации.
Основной подход заключается в том, чтобы подогнать определенное распределение к вашим гистограммам и использовать его параметры в качестве дескрипторов. Например, у вас, кажется, есть бимодальные распределения, которые вы можете описать с помощью 2 средних и 2 стандартных отклонений.
Другой возможностью является кластеризация по первым двум или трем основным компонентам подсчетов гистограмм.
В качестве альтернативы могут использоваться вейвлет-подходы.
На этой странице объясняется, как это сделать при работе с внеклеточными шипами. Данные разные, но идея должна быть применима к вашему случаю. Вы также найдете много ссылок внизу.
http://www.scholarpedia.org/article/Spike_sorting
В R вы можете рассчитать основные компоненты ваших пиков, используя либо функцию,
princomp
либоprcomp
. Здесь вы найдете учебник по PCA в R.Для вейвлетов вы можете посмотреть на
wavelets
пакет.Кластеризация k-средних может быть достигнута с помощью
kmeans
функции.источник