Какой алгоритм кластеризации данных является соответствующим для обнаружения неизвестного количества кластеров во временном ряду событий?

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

Для фазы 1 мой вход является набором (идентификатор забастовки, время забастовки, местоположение забастовки) кортежи. Желаемый вывод является набором кластеров больше чем 1 события, которые поражают то же местоположение в течение короткого времени. Количество кластеров не известно заранее (таким образом, k-средство не настолько полезно здесь). Что рассматривают, поскольку 'короткий' мог быть предопределен для данной кластеризирующейся попытки. Таким образом, я могу установить его на, скажем, 3 минуты, чем выполненный алгоритм; позже попробуйте 4 минутами или 10 минутами. Возможно, приятная черта была бы, чтобы алгоритм определил 'силу' кластеризации, и рекомендуйте, чтобы для данного входа, самая компактная кластеризация была достигнута при помощи конкретного значения для 'короткого', но это не требуется первоначально.

Для фазы 2 я хотел бы учесть амплитуду забастовки (т.е. вещественное число) и искать кластеры, которые являются и в течение короткого времени и с подобными амплитудами.

Я погуглил и проверил ответы здесь о кластеризации данных. Информация является немного озадачивающей (ниже, список ссылок, которые я нашел полезным). AFAIK, k-средства и связанные алгоритмы не были бы полезны, потому что они требуют, чтобы количество кластеров было указано apriori. Я не прошу кого-то решать свою проблему (мне нравится решать ее), но некоторая ориентация в большом мире алгоритмов кластеризации данных была бы полезна, чтобы сэкономить некоторое время. А именно, какие кластеризирующиеся алгоритмы подходят для того, когда количество кластеров неизвестно.

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

Некоторые технические детали:
- поскольку набор данных не является настолько большим, он может приспособить все в памяти.
- параллельная обработка является хорошим, чтобы иметь, но не важная. У меня только есть машина с 4 ядрами и MapReduce, и Hadoop был бы слишком много.
- язык, с которым я главным образом знаком, является Java. Я еще не использовал R, и кривая обучения для него, вероятно, была бы слишком много для того, во сколько мне дали. Я взгляну на него так или иначе в мое свободное время.
- в настоящее время использование инструментов для выполнения анализа в порядке, я не должен производить просто код. Я упоминаю это, потому что, вероятно, Weka предложат.
- визуализация была бы полезна. Поскольку набор данных является достаточно большим, таким образом, он не умещается в памяти, визуализация должна, по крайней мере, поддерживать изменение масштаба и панорамирование. И разъясниться: Я не должен создавать визуализацию GUI, это - просто хорошая возможность использовать для проверки результатов, приведенных с инструментом.

Спасибо. Вопросы, которые я нашел полезным: Как найти центр кластеров чисел? проблема статистики?, Кластеризируя Алгоритм для Разносчиков газет, Библиотеки Кластеризации Java, Как кластеризировать объекты (без координат), Алгоритм для обнаружения "кластеров" точек

11
задан Community 23 May 2017 в 11:53
поделиться

2 ответа

Не могли бы вы просто использовать иерархическую кластеризацию с разницей во времени ударов как часть метрики расстояния?

1
ответ дан 3 December 2019 в 12:05
поделиться

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

Преимущество кластеризации среднего сдвига в том, что количество кластеров не нужно указывать заранее.

Я не использовал Weka, поэтому не уверен, есть ли у него кластеризация среднего сдвига. Однако, если вы используете MATLAB, вот набор инструментов ( Набор инструментов KDE ) для этого. Надеюсь, это поможет.

2
ответ дан 3 December 2019 в 12:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: