exponenta event banner

subclust

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

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

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

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

данные кластера, возвращающие значения cluster sigma, S.

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

Значения cluster sigma указывают диапазон влияния вычисленных центров кластера в каждом измерении данных.

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

свернуть все

Данные, подлежащие кластеризации, указываются как массив M-by-N, где M - количество точек данных, а N - количество измерений данных.

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

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

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

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

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

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

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

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

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

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

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

Коэффициент принятия, определяемый как доля потенциала первого центра кластера, над которым в качестве центра кластера принимается другая точка данных, определяемая как скалярное значение в диапазоне [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] Чиу, С., «Идентификация нечеткой модели на основе кластерной оценки», Журнал интеллектуальных и нечетких систем, том 2, № 3, сентябрь 1994 года.

[2] Ягер, Р. и Д. Филевы, «Генерация нечетких правил горной кластеризацией», Журнал интеллектуальных и нечетких систем, том 2, № 3, стр. 209-219, 1994.

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