Как кластеризовать точки на основе плотности ядра?

10

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

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

  • каким-то образом разделить растр плотности ядра (который примерно напоминает растр рельефа местности) на отдельные «холмы» вокруг каждого центра. Но я не могу придумать какой-либо инструмент для этого.

Эта проблема мучила меня некоторое время, и я надеялся, что смогу выполнить метод кластеризации в R, но это отнимает много времени, и у меня заканчивается время. Кто-нибудь знает простой метод для разделения растров плотности на районы интенсивности или для быстрой кластеризации больших наборов данных?

Патрик
источник
1
Этот вопрос тесно связан: stats.stackexchange.com/questions/13995/…
whuber
1
А также размещены мной, как выясняется.
Патрик
Я думаю, это будет 1
час

Ответы:

6

Обсуждение после тесно связанной статьи выявило простое и эффективное решение : найти «холмы», перевернуть сетку вверх дном (отрицая ее значения) и найти водоразделы. Холмы - это раковины, а границы водоразделов разделяют сетку на эти раковины.

Whuber
источник
Это простое, быстрое и именно то решение, которое я искал. Спасибо.
Патрик
3

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

Вы также можете найти инструменты пространственной статистики: кластерный анализ на растровых данных полезное обсуждение аналогичной проблемы.

Ян Тертон
источник
Да, это очень актуальная дискуссия! Я читаю Вашу магистерскую диссертацию и опробую некоторые методы.
Патрик
2
Использование порога, вероятно, не сработает, так как я пытаюсь отличить центры от соседних центров. В центре города граница между ними будет иметь очень высокую плотность, но в пригородной зоне она будет иметь очень низкую плотность. Но я надеюсь, что использование второй производной будет эффективным.
Патрик
3

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

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

Зайдите в SatScan http://www.satscan.org/ и запустите космическую модель, распределенную по Пуассону, и вы получите ваши коммерческие квадратные кластеры в довольно быстром порядке. (Вы также можете использовать квадратные метры земли в качестве своего населения, а не квадратные метры площади застройки. Это может быть даже лучше населения.)

blord-Castillo
источник
Вы правы в том, что точки являются центроидами, но, к сожалению, набор данных был скомпилирован другими из слоя участков каждого округа и распределен только в виде точек. Но SatScan выглядит как очень полезная часть программного обеспечения, поэтому я буду помнить о других приложениях.
Патрик