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