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 - Отклоните точки данных, если у них нет большого потенциала для того, чтобы быть кластерными центрами.

  • Флаг Verbosity 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' одно из следующего:

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

  • Вектор — Использование различное влияние располагается для каждого ввода и вывода.

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

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

Задайте дополнительные разделенные запятой пары 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] Чю, S., "Нечеткая идентификация модели на основе кластерной оценки", журнал Intelligent & Fuzzy Systems, издания 2, № 3, сентябрь 1994.

[2] Yager, R. и Д. Филев, "Генерация Нечетких Правил Горной Кластеризацией", Журнал Intelligent & Fuzzy Systems, Издания 2, № 3, стр 209-219, 1994.

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