Нечеткая кластеризация c-означает
Чтобы сгенерировать систему нечеткого вывода с помощью кластеризации FCM, используйте genfis
команда. Например, предположим, что вы кластеризуете свои данные с помощью следующего синтаксиса:
[centers,U] = fcm(data,Nc,options);
где первый M
столбцы data
соответствуют входы переменным, а остальные столбцы соответствуют выходу переменным.
Можно сгенерировать нечеткую систему с помощью тех же обучающих данных и строения кластеризации FCM. Для этого:
Настройте опции кластеризации.
opt = genfisOptions('FCMClustering');
opt.NumClusters = Nc;
opt.Exponent = options(1);
opt.MaxNumIteration = options(2);
opt.MinImprovement = options(3);
opt.Verbose = options(4);
Извлеките вход и выходные данные переменной.
inputData = data(:,1:M); outputData = data(:,M+1:end);
Сгенерируйте структуру FIS.
fis = genfis(inputData,outputData,opt);
Нечеткая система, fis
, содержит одно нечеткое правило для каждого кластера, и каждая входная и выходная переменная имеет одну функцию принадлежности к кластеру. Для получения дополнительной информации см. genfis
и genfisOptions
.
Нечеткое c-средство (FCM) является методом кластеризации, который позволяет каждой точке данных принадлежать к нескольким кластерам с различными степенями принадлежности.
FCM основан на минимизации следующей целевой функции
где
D - количество точек данных.
N - количество кластеров.
m является нечетким матричным экспонентом разбиения для управления степенью нечеткого перекрытия с m > 1. Нечеткое перекрытие относится к тому, насколько нечеткими являются контуры между кластерами, то есть количество точек данных, которые имеют значительное членство в более чем одном кластере.
xi - i-я точка данных.
cj является центром j-го кластера.
μij - это степень принадлежности xi к j-му кластеру. Для заданной точки данных, xi, сумма значений принадлежности для всех кластеров является единицей.
fcm
выполняет следующие шаги во время кластеризации:
Случайным образом инициализируйте значения принадлежности к кластеру, μij.
Вычислите центры кластеров:
Обновите μij согласно следующему:
Вычислим целевую функцию, Jm.
Повторяйте шаги 2-4, пока Jm не улучшится меньше, чем заданный минимальный порог, или до тех пор, пока не будет задано максимальное количество итераций.
[1] Bezdek, J.C., Pattern Recognition with Fuzzy Objective Function Algorithms, Plenum Press, New York, 1981.