Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбиение на кластеры 
:(
    Опции темы
stab
Дата 2.10.2003, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: нет
Всего: 48



Есть набор точек на плоскости, каждая точка описывается координатами x,y:

Код

       .
      .. .
      . . ..

              .
   .  .      
      ..
    .....           .           ...
     .   . .                 ..
     . .


Каждое из "облаков" тяготеет к некоторому центру. Надо разбить плоскость на кластеры, т.е. вписать каждое облако, скажем, в окружность внутри которой плотность точек имеет некоторое заданное значение или больше этого занчения. Не обязательно что бы каждая точка плоскости принадлежала какому-либо кластеру. В итого должно получиться, если использовать окружности, набор кластеров в виде списка из: x, y - координаты центра, r - радиус.

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

з.ы. точек с одинаковыми координатами может быть несколько.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Crait
Дата 3.10.2003, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 20.2.2003

Репутация: 1
Всего: 1



>но ощушение такое, что я изобретаю велосипед

Поищи "кластерный анализ", вывалится куча ссылок.
PM MAIL   Вверх
podval
Дата 3.10.2003, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Совсем необязательно получишь окружность, прямоугольник или какую-нибудь другую геометрическую фигуру. Дело в том, что существует несколько методов объединения объектов в кластеры и, соответственно, способов задать метрику для вычисления расстояния между объектами.
To be continued...
PM WWW ICQ   Вверх
maxim1000
Дата 3.10.2003, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



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



--------------------
qqq
PM WWW   Вверх
maxim1000
Дата 3.10.2003, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



а вот еще одна идея (она мне даже больше нравится):
Введем функцию плотности заполнения точки пространства (если там есть объект - значение 1, если нет - 0). Локальных максимумов будет столько же, сколько объектов. Теперь как-нибудь сгладим эту функцию. Если сгладили не сильно, локальные максимумы останутся, но объекты станут немного "размытыми". Если сглаживать все больше, максимумы станут объединяться. Так можно сглаживать, пока нас не устраивает количество кластеров (а оно будет со временем уменьшаться).


--------------------
qqq
PM WWW   Вверх
podval
Дата 3.10.2003, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



продолжение

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

Возьми Matlab, там есть готовый инструментарий, которым пользоваться так же просто как и лопатой. Поиграйся со своими точками, хотя бы прочувствуешь, что такое кластерный анализ и как он работает. Дальше уже можно будет засесть за программирование конкретной задачи.
PM WWW ICQ   Вверх
podval
Дата 3.10.2003, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Хотя в общих словах еще добавлю, что кластерным анализом пользуются так:
1. выбирают метрику в заданном пространстве объектов (метрики существуют всякие-разные)
2. вычисляют все возможные попарные расстояния между объектами
3. выполняют процедуру агломерации (способов агломерации тоже известно несколько). Обычно строят дендрограмму (дерево) для наглядности.
4. оценивают качество кластеризации
PM WWW ICQ   Вверх
podval
Дата 3.10.2003, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



И еще мне нравится вот это http://www.clustan.com/
PM WWW ICQ   Вверх
stab
Дата 4.10.2003, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: нет
Всего: 48



Спасибо большое всем, буду разбираться. Не ожидал, что так поддержите smile.gif Еще раз спасибо.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Liner
Дата 24.3.2006, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 28.1.2005

Репутация: нет
Всего: нет



smile А у меня все вроде как проще, но и сложнее (очень медленно smile ).
Тоже набор точек x, y и задаваемое пользователем число R.
Никак не могу сформулировать, проще вот так, образно: вокруг каждой точки рисуем "в уме" окружности радиуса R и объединяем в группы те точки, чьи окружности пересеклись.

Пока алгоритм такой:
1. сначала столько же групп, сколько точек, в каждой по одной точке;
2. взять очередную группу, проверить "пересекается" ли она с какой-нибудь другой, если да, объеденить их;
3. повторять 2. до последней группы.

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

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

PS. Похоже, что-то типа алгоритма "ближайшего соседа". Нигде сам алгоритм не нашел. Он, конечно, очевиден, если грубо в лоб решать. А как-то до n*log(n) он оптимизируется??

Это сообщение отредактировал(а) Liner - 24.3.2006, 23:47
PM MAIL   Вверх
sdeniss
Дата 24.3.2006, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 3.3.2006

Репутация: нет
Всего: 1



Я бы использовал горную кластеризацию. Идея следующая --задается вес -- функция от положений двух точек убывающая с ростом расстояния между точками. Для каждой точки считается качество -- сумма весов по всем отсальным точкам.
Задается параметр отесечения. (т.е. если качество меньше этого параметра то точка не принадлежит кластеру(или сама образует кластер из 1 точки)).
выбираем точку с наибольшим качеством(обозначим ее -- Т1), все точки вокруг качество котрых больше параметра отсечения объединяем в кластер с центром
в Т1. Далее выбираем точку с наибольшим качеством, котроя не попала в первый кластер, формируем кластер воокруг нее и.т.д.
По сути подход maxim1000, в качестве параметра сглаживания взят параметр отсечки




Цитата(maxim1000 @ 3.10.2003, 10:18 Найти цитируемый пост)
Представим себе, что между каждыми двумя точками действует сила притяжения, пусть они двигаются по направлению этой силы. Тогда через некоторое время они сосредоточатся в нескольких точках.
Силу нужно выбирать сильно убывающей с расстоянием.

времени будет жрать много. Тоже через специальные нейроети можно сделать
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0525 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.