subclust

Поиск центров кластеров с помощью вычитающей кластеризации

Описание

пример

centers = subclust(data,clusterInfluenceRange) кластеры вводят данные с помощью вычитающей кластеризации с заданной областью значений влияния кластеров и возвращают вычисленные центры кластеров. Алгоритм вычитания кластеризации оценивает количество кластеров во входных данных.

пример

centers = subclust(data,clusterInfluenceRange,Name,Value) кластеризует данные с помощью опций алгоритма, заданных одним или несколькими Name,Value аргументы в виде пар.

пример

[centers,sigma] = subclust(___) возвращает значения сигмы, задающие область значений влияния центра кластера в каждом из размерностей данных.

Примеры

свернуть все

Загрузите набор данных.

load clusterdemo.dat

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

C = subclust(clusterdemo,0.6);

Каждая строка C содержит один центр кластеров.

C
C = 3×3

    0.5779    0.2355    0.5133
    0.7797    0.8191    0.1801
    0.1959    0.6228    0.8363

Загрузите набор данных.

load clusterdemo.dat

Задайте минимальные и максимальные границы нормализации для каждой размерности данных. Используйте одни и те же ограничения для каждой размерности.

dataScale = [-0.2 -0.2 -0.2;
              1.2  1.2  1.2];

Поиск центров кластеров.

C = subclust(clusterdemo,0.5,'DataScale',dataScale);

Загрузите набор данных.

load clusterdemo.dat

Задайте следующие опции кластеризации:

  • Коэффициент сквоша 2.0 - Только кластеры, которые далеки друг от друга.

  • Примите коэффициент 0.8 - Принимать только точки данных с сильным потенциалом быть кластерными центрами.

  • Коэффициент отклонения 0.7 - Отклоните точки данных, если они не имеют сильного потенциала быть центрами кластеров.

  • Флаг подробностей 0 - Не печатать информацию о прогрессе в командное окно.

options = [2.0 0.8 0.7 0];

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

C = subclust(clusterdemo,[0.5 0.25 0.3],'Options',options);

Загрузите набор данных.

load clusterdemo.dat

Данные кластера, возврат значений сигмы кластера, S.

[C,S] = subclust(clusterdemo,0.5);

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

Входные параметры

свернуть все

Данные, которые будут кластеризованы, заданы как M -by - N массив, где M - количество точек данных, а N - количество размерностей данных.

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

  • Скалярное значение в области значений [0 1] - Используйте ту же область значений влияния для всех входов и выходов.

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

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

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'DataScale','auto'устанавливает нормирующие коэффициенты для входа и выхода сигналов, используя минимальное и максимальное значения в наборе данных, который будет кластеризован.

Коэффициенты шкалы данных для нормализации входных и выходных данных в модули гипербокс, заданные как разделенная запятой пара, состоящий из 'DataScale' и массив 2 байта N, где N - общее количество входов и выходов. Каждый столбец DataScale задает минимальное значение в первой строке и максимальное значение во второй строке для соответствующего входа или выходных данных.

Когда DataScale является 'auto', genfis команда использует фактические минимальные и максимальные значения в данных, которые будут кластеризованы.

Опции кластеризации, заданные как разделенная разделенными запятой парами, состоящая из 'Options' и вектор со следующими элементами:

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

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

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

Флаг отображения информации, указывающий, отображать ли информацию о прогрессе во время кластеризации, задается как один из следующих:

  • false - Не отображать информацию о прогрессе.

  • true - отображение информации о прогрессе.

Выходные аргументы

свернуть все

Кластерные центры, возвращенные как J -by N массив, где J - количество кластеров, а N - количество размерностей данных.

Область значений влияния центров кластеров для каждой размерности данных, возвращаемый как вектор-строка N. Все центры кластеров имеют одинаковый набор sigma значения.

Совет

  • Чтобы сгенерировать систему нечеткого вывода с помощью вычитающей кластеризации, используйте genfis команда. Например, предположим, что вы кластеризуете свои данные с помощью следующего синтаксиса:

    C = subclust(data,clusterInfluenceRange,'DataScale',dataScale,'Options',options);

    где первый M столбцы data соответствуют входы переменным, а остальные столбцы соответствуют выходу переменным.

    Можно сгенерировать нечеткую систему с помощью тех же обучающих данных и вычитающих строений кластеризации. Для этого:

    1. Настройте опции кластеризации.

      opt = genfisOptions('SubtractiveClustering');
      opt.ClusterInfluenceRange = clusterInfluenceRange;
      opt.DataScale = dataScale;
      opt.SquashFactor = options(1);
      opt.AcceptRatio = options(2);
      opt.RejectRatio = options(3);
      opt.Verbose = options(4);
    2. Извлеките входные и выходные переменные данные.

      inputData = data(:,1:M);
      outputData = data(:,M+1:end);
      
    3. Сгенерируйте структуру FIS.

      fis = genfis(inputData,outputData,opt);

    Нечеткая система, fis, содержит одно нечеткое правило для каждого кластера, и каждая входная и выходная переменная имеет одну функцию принадлежности к кластеру. Можно сгенерировать только нечеткие системы Sugeno, используя вычитающую кластеризацию. Для получения дополнительной информации см. genfis и genfisOptions.

Алгоритмы

Вычитающая кластеризация предполагает, что каждая точка данных является потенциальным центром кластера. Алгоритм делает следующее:

  1. Вычислите вероятность того, что каждая точка данных будет определять центр кластера, основываясь на плотности окружающих точек данных.

  2. Выберите точку данных с самым высоким потенциалом, чтобы быть первым центром кластера.

  3. Удалите все точки данных рядом с первым центром кластера. Окрестности определяются с помощью clusterInfluenceRange.

  4. Выберите оставшуюся точку с самым высоким потенциалом в качестве следующего центра кластера.

  5. Повторяйте шаги 3 и 4, пока все данные не окажутся в области влияния центра кластера.

Метод вычитающей кластеризации является расширением метода горной кластеризации, предложенного в [2].

Ссылки

[1] Chiu, S., «Fuzzy Model Identification Based on Cluster Estimation», Journal of Intelligent & Fuzzy Systems, Vol. 2, No3, Sept. 1994.

[2] Yager, R. and D. Filev, «Generation of Fuzzy Rules by Mountain Clustering», Journal of Intelligent & Fuzzy Systems, Vol. 2, No3, pp. 209-219, 1994.

Представлено до R2006a