рекомендация для алгоритма кластеризации данных временных рядов - PullRequest
0 голосов
/ 15 декабря 2018

Я новичок в кластерном анализе и использую модуль Python sklearn.cluster для анализа своих данных.Пока что мне не везет, поэтому я хочу попросить рекомендации.Мои данные состоят из подсчета событий в определенные даты в течение нескольких столетий (более конкретно, числа крещений, браков или захоронений, зарегистрированных в церковных реестрах).Таким образом, мои данные могут быть представлены в виде простого вектора целых чисел: [5,0,0,0,1,0,0,2,0,1 .....], где представлен каждый день, но количество событийможет быть ноль.Я на самом деле хочу определить возможные пробелы в ведении записей, и я подумал, что мог бы кластеризовать события и затем посмотреть на пробелы между кластерами.Это не так просто, как сообщить, превышает ли разрыв между последовательными датами какой-либо порог, потому что это на самом деле зависит от количества событий, записываемых в день, и частоты записи.Например, представьте себе 30 событий в месяц в течение нескольких лет, затем всего 1 событие в неделю в течение 3 месяцев, а затем снова увеличивайте до 30 событий в месяц в течение нескольких лет.В этом случае я бы сказал, что может быть разрыв в трехмесячном периоде, когда количество событий резко сократилось, хотя в этот период было несколько событий.Другими словами, «разрыв» не означает отсутствие событий в течение длительного периода времени.Скорее, это будет обозначено изменением общего количества событий за определенный период относительно количества за предыдущий период и последующий период.

Так что, похоже, это проблема кластеризации на основе плотности,У меня будут кластеры с переменной плотностью, но я не знаю, сколько их будет, поэтому я не могу использовать алгоритм, подобный KMeans, который требует, чтобы вы знали, сколько кластеров там.Я пробовал HDBSCAN, но он находит кластеры, которые даже не являются смежными во времени, то есть кластер 1 состоит из серии дат, затем кластера 2 и затем обратно в кластер 1, что не имеет смысла для моих данных.У меня нет достаточного опыта, чтобы знать сильные и слабые стороны и требования многих алгоритмов, но я хотел бы предложить, что попробовать из sklearn или хотя бы из того, что доступно в python.

1 Ответ

0 голосов
/ 15 декабря 2018

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

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

...