Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2014, 13:27   #21
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

если я правильно понял, то метод описанный в атаче из исходного разбиения делает оптимизированное.

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

m - это конечно не степень, а порядковый номер кластера.
f.hump вне форума Ответить с цитированием
Старый 26.05.2014, 13:59   #22
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
если я правильно понял, то метод описанный в атаче из исходного разбиения делает оптимизированное.

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

m - это конечно не степень, а порядковый номер кластера.
Потихоньку уже начал въезжать что к чему. Значения коэффициентов вхождения может быть от 2 до максимума, но лучше принимать начальное количество кластеров с отклонением от максимумального значения статистики, процентов на 20-30. Это то, до чего я уже домыслил. Так получится меньше итераций, а следовательно и увеличится скорость работы алгоритма. На счёт m у меня были сомнения, но Вы их рассеяли. Я подозревал, что это не может быть степенью.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 26.05.2014 в 14:05.
Smitt&Wesson вне форума Ответить с цитированием
Старый 26.05.2014, 14:16   #23
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

сори,
m - таки степень, более известная как степень размытия.
m >= 1.
(m = 1: без размытия)
f.hump вне форума Ответить с цитированием
Старый 26.05.2014, 14:20   #24
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
сори,
m - таки степень, более известная как степень размытия.
m >= 1.
(m = 1: без размытия)
Опа-на. Так, а что такое размытие? Т.е. это когда кластеры пересекаются? Т.е. элементы одного кластера могут входить и в другой? Я правильно понял?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 26.05.2014, 14:26   #25
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

да. без размытия, коэфициенты вхождения могут принимать только два значения 0 или 1. с размытием от 0 до 1.
f.hump вне форума Ответить с цитированием
Старый 26.05.2014, 14:29   #26
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
да. без размытия, коэфициенты вхождения могут принимать только два значения 0 или 1. с размытием от 0 до 1.
Ага. Т.е. смело m можно задавать = 1 и никакого пересечения кластеров не буде? Если так, то это то, что мне нужно. Иначе говоря, это коэффициент нечёткости.
Тогда не понятен такой вопрос. Там в формуле, есть такая степень 2/m-1. Но на ноль делить нельзя. Чёт тут не вяжется.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 26.05.2014 в 14:33.
Smitt&Wesson вне форума Ответить с цитированием
Старый 26.05.2014, 14:48   #27
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

ну, там анализ показывает, что при m стремящемся к 1, та формула сходится к 0 или 1.

и для m = 1, нужно пользоваться чем-то типа

if (distance(Xi, Cj) == min(distance(Xi, Ck))) Uij = 1;
else Uij = 0;

кстати, при m = 1 этот метод совпадает с k-means.

Последний раз редактировалось f.hump; 26.05.2014 в 15:07.
f.hump вне форума Ответить с цитированием
Старый 04.06.2014, 11:38   #28
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Промучился с c-means. Не подошел он для решения моей задачки. Нашел другой метод - G-means.
Суть метода такова: Делаем кластеризацию по k-means и вычисляем Гауссово распределение. Если отклонение выше заданного, делим данный кластер пополам и всё повторяем до тех пор, пока отклонения не будут превышать заданный порог.
Не стал мучиться с k-means, нашел готовое решение, но в консольном варианте.
В консоли, работает нормально. Решил создать класс Clasters. Поместил туда все функции. Все они нормально скомпилились кроме одной:
Код:
template <class Iterator> vector<list <typename Iterator::value_type> > MClasters::Cluster(const Iterator begin, const Iterator end, int M);
Компиль выдаёт ошибки:
[C++ Error] Clasters.h(36): E2303 Type name expected
[C++ Error] Clasters.h(36): E2139 Declaration missing ;
[C++ Fatal Error] CLACTERS.CPP(151): F1004 Internal compiler error at 0x128a12c with base 0x1200000
Библиотеки vector и list подключены. Ума не приложу в чём ошибка.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 06.06.2014, 15:23   #29
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

как продвигается тема?
очень хочется увидеть картинку после применения выбранного метода.
f.hump вне форума Ответить с цитированием
Старый 20.06.2014, 17:02   #30
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
как продвигается тема?
очень хочется увидеть картинку после применения выбранного метода.
Разобрался с k-means. Возник вопрос.
Дело в том, что все методы кластеризации, очень сильно зависят от первоначальных точек выбора центроидов.
Экспериментально я установил, что наилучшее распределение и количество центроидов, напрямую кореллируется с самыми удалёнными точками.
Вручную, эти точки задать не сложно, если перед глазами диаграмма.
А теперь вопрос: По какой формуле, можно выбрать наиболее удалённые точки? Декартово расстояние не годится, оно не учитывает отношение точек по круговой диаграмме. Может применить полярную систему координат с центром в главном центроиде (отмечен крестиком, вычислен как центр масс всех координат последовательности)?
Но, вот как это сделать математически? На рисунке видно, что точка с координатами 5-3, самая дальняя и противоположна всем остальным, в тоже время, она совпадает с двумя другими из кластера 1, которые не являются самыми дальними.
Тут есть ещё одна особенность. Другие кластеры, могут находиться внутри других кластеров, как быть в этом случае? Есть какие-нибудь идеи?

К стати, заметил несколько особенностей для этой последовательности.
1. Если я беру три кластера, распределение идёт нормально.
2. Если взять 4 кластера, то в одном из них, будет всего одна точка.
3. Если взять 5 кластеров, то один, оказывается пустым.
Возможно этот показатель, можно использовать при определении оптимального числа кластеров?
Изображения
Тип файла: gif Кластеры1.gif (7.3 Кб, 77 просмотров)
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 21.06.2014 в 06:11.
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кластеризация картинки.. goto ∞ Помощь студентам 7 15.04.2013 21:03
Кластеризация Nelli22 Visual C++ 0 23.11.2011 13:11