LINUX.ORG.RU

Помогите формализовать задачу кластеризации


0

0

Доброго времени суток!

Есть такая (в общих чертах) задача:

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

В такой постановке задача вменяема? Из того, что я помню об алгоритмах кластеризации, следует, что они работают с характеристиками точек, а не их множеств. Можно свести эту задачу к какому-нибудь стандартному алгоритму? В общем, буду рад комментариям, соображениям и советам по формализации/решению такой задачи.

anonymous

Метод k-тых соседей не подходит? Нужно что-то посложнее?

А вообще - рекомендую почитать любой внятный учебник по data mining, там непременно найдётся с десяток алгоритмов кластеризации.

anonymous
()
Ответ на: комментарий от anonymous

Все алгоритмы, которые сравнивают точки, не подходят - у меня признак связан не с точкой, а с областью. Была идея разбивать всю кластеризуемую область на кусочки, считать для них характеристическое значение и кластеризовать множество кусочков. Но размеры кусочков зависят от данных - подобрать подходящие размеры и расположение кусочков кажется мне более сложной задачей, чем поставленная.

А вменяемый учебник - какой?

anonymous
()
Ответ на: комментарий от anonymous

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

Куда смотреть? На какие стандартные задачи это похоже?

anonymous
()
Ответ на: комментарий от anonymous

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

Неплохая книга (читал её по диагонали, что мне было нужно - нашел):

http://www.amazon.com/Data-Mining-Techniques-Implementations-Management/dp/15...

anonymous
()
Ответ на: комментарий от anonymous

В принципе, можно, наверное, присвоить каждой точке характеристическое значение некоторой ее окрестности. Тогда можно сегментировать стандартными K-средними или выращиванием областей. Но тогда надо предварительно решать задачу выбора окрестности.

anonymous
()
Ответ на: комментарий от anonymous

Если кластерный анализ - это вот это: http://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%BD... / http://en.wikipedia.org/wiki/Cluster_analysis , то он не подходит (по крайней мере, в исходной постановке), т.к. у меня нет объектов, которые можно сравнивать. Собственно, в этом и затык. Внутри одной области могут быть самые разные точки, но область может при этом быть выделена в сегмент, т.к. все ее подобласти некоторого размера имеют сходное характеристическое значение.

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

anonymous
()
Ответ на: комментарий от anonymous

Ну так и выделить числовые, измеримые признаки из взаимного расположения точек - и потом всё те же методы кластеризации применять.

anonymous
()
Ответ на: комментарий от anonymous

Ты сам тут и сформулировал числовые характеристики, по которым можно определять принадлежность точки к кластеру.

anonymous
()
Ответ на: комментарий от anonymous

Проблема - как выбрать окрестность точки, по которой считать ее характеристику (размер области, которую можно считать представительной, зависит от конкретных данных).

Ну и на границах между сегментами характеристики точек будут смазаны, но, возможно, это не помешает сегментации.

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

anonymous
()
Ответ на: комментарий от Valeriy_Onuchin

странно, почему еще никто не вспомнил байесовы сети.. А еще нейронные..

google: ребе куры столько идей

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

Всякие нечестные методы следует предлагать только после того, как исключены кошерные.

anonymous
()
Ответ на: комментарий от anonymous

> как выбрать окрестность точки, по которой считать ее характеристику

Когда возникает такой вопрос, первое решение (часто работает, хоть и не всегда) - а НИКАК. Сделай это переменной в регрессии.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.