Студопедия — Демонстрационные примеры 2 страница
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Демонстрационные примеры 2 страница






Построение графиков пи-подобной, трапециевидной, треугольной и сигмоидной функций принадлежности на интервале [0, 10].

В оглавление \ К следующему разделу \ К предыдущему разделу

FCM
Кластеризация на основе нечеткого c-means алгоритма

Синтаксис:

[V, M, obj_fcn] = fcm(X, c)

[V, M, obj_fcn] = fcm(X, c, options)

Описание:

На основе нечеткого c-means алгоритма выполняет кластеризацию данных. Этот алгоритм кластеризации предложил Джеймс Бэздэк (James Bezdek) в 1981 году.

Задача нечеткой кластеризации ставится следующим образом.

Дано:

  • – объекты, подлежащие кластеризации (n – количество объектов). Каждый объект представляет собой точку в p-мерном пространстве признаков ();
  • c – количество кластеров ().

Необходимо каждому элементу множества X поставить в соответствие степени принадлежности с классам.

Элементы одного кластера должны быть так близки каждый каждому, как это только возможно, и, одновременно, кластеры должны быть на наибольшем удалении друг от друга. Для обеспечения управляемости процесса кластеризации необходимо использовать меру близости, в качестве которой обычно определяют расстояние между двумя объектами (точками в p-мерном пространстве) и в виде вещественной функции , такой что:

;
;
.

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

Любое разбиение множества на нечеткие подмножества () может быть полностью описано функцией принадлежности .

Обозначим через - степень принадлежности объекта к подмножеству , т. е. , и через - множество всех действительных матриц размером . Тогда нечетким c-разбиением (или матрицей степеней принадлежности) называется матрица при выполнении следующих условий:

  1. , , ;
  2. , ;
  3. , .

В отличие от четкого, при нечетком c-разбиении любой объект одновременно принадлежит к различным кластерам, но с разной степенью. Условия (2) и (3) требуют только, чтобы сумма степеней принадлежности объекта ко всем кластерам была нормализована к 1, а также, чтобы количество кластеров, к которым принадлежит объект, не превышало .

Обозначим центры кластеров, т. е. точки в p-мерном пространстве, вокруг которых сконцентрированы соответствующие объекты, через , .

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

,

где - центр i-го кластера, ; - так называемый экспоненциальный вес ().

Значение экспоненциального веса устанавливается до начала кластеризации. Экспоненциальный вес влияет на матрицу степеней принадлежности. Чем больше , тем конечная матрица c-разбиения становится более “размазанной”, и при она примет вид , что является очень плохим решением, т. к. все объекты принадлежат ко всем кластерам с одной и той же степенью. Также, экспоненциальный вес позволяет при формировании координат центров кластеров усилить влияние объектов с большими значениями степеней принадлежности и уменьшить влияние объектов с малыми значениями степеней принадлежности. На сегодня не существует теоретически обоснованного правила выбора значения . Обычно устанавливают .

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

Функция fcm может иметь три входных аргумента:

  1. X – матрица, представляющая данные, подлежащие кластеризации. Каждая строка матрицы соответствует одному объекту (образу);
  2. c – количество кластеров, которое должно быть получено в результате выполнения функции fcm. Количество кластеров должно быть больше 1 и меньше числа образов, заданных матрицей X;
  3. options – необязательный аргумент, устанавливающий параметры алгоритма кластеризации:

options(1) – значения экспоненциального веса (значение по умолчанию – 2.0);
options(2) – максимальное количество итераций алгоритма кластеризации (значение по умолчанию – 100);
options(3) – минимально допустимое значение улучшения целевой функции за одну итерацию алгоритма (значение по умолчанию – 0.00001);
options(4) – вывод промежуточных результатов во время работы функции fcm (значение по умолчанию – 1).
Для использования значений по умолчанию можно вести NaN в качестве значения соответствующей координаты вектора options.

Алгоритм кластеризации останавливается когда выполнено максимальное количество итераций или когда улучшение значения целевой функции за одну итерацию меньше указанного минимально допустимого значения.

Функция fcm имеет три выходных аргумента:

  1. V – матрица координат центров кластеров, полученных в результате кластеризации. Каждая строка матрицы соответствует центру одного кластера;
  2. M – матрица степеней принадлежности образов к кластерам. Каждая строка матрицы соответствует функции принадлежности одного кластера.
  3. obj_fcn – вектор значений целевой функции на каждой итерации алгоритма кластеризации.

Примечание: при описании нечеткого c-means алгоритма использована книга Zimmermann H.-J. Fuzzy Set Theory - and Its Applications.3rd ed.- Kluwer Academic Publishers, 1996.- 435p.

Пример.

Проводится кластеризация объектов, образующих фигуру типа “бабочка”. Результаты кластеризации приведены ниже на рисунке. Центры кластеров указаны маркером ‘+’. Размер маркера ‘o’ пропорционален степени принадлежности объекта кластеру. Расположенный в центре объект имеет одинаковые степени принадлежности к красному и к синему кластерам. Это обеспечивает симметричное разбиение объектов по кластерам, что невозможно при четкой кластеризации.

X=[1 1; 1 4; 1 7; 3 2; 3 4; 3 6; 5 4; 7 4; 9 4; 11 2; 11 4; 11 6; 13 1; 13 4; 13 7];
[V M opt]=fcm(X, 2)
subplot(2,1,1);
plot(X(:,1), X(:,2), 'ko', 'markersize', 6)
text='Исходные данные';
title(text)
xlim([0 14])
ylim([0 8])
subplot(2,1,2);
plot(V(1,1), V(1,2), 'r+', 'markersize', 10)
hold on
plot(V(2,1), V(2,2), 'b+', 'markersize', 10)
for i=1:15
plot(X(i,1), X(i,2)+.05, 'ro', 'markersize', M(1,i)*8+2);
plot(X(i,1), X(i,2)-.05, 'bo', 'markersize', M(2,i)*8+2);
end
xlim([0 14])
ylim([0 8])
text='Результаты кластеризации';
title(text)

В оглавление \ К следующему разделу \ К предыдущему разделу

FINDROW
Нахождение строки в матрице, совпадающей с входной строкой

Синтаксис:

rownum = findrow (str, strmat)

Описание:

Функция findrow возвращаетномер строки матрицы strmat, содержащую стринг, заданный аргументом str. Если таких строк несколько, то функция findrow возвратит номера всех строчек. Функция findrow не связана с нечеткими множествами и нечеткой логикой, она используются для выполнения алгоритмов обработки информации, необходимых для других функций Fuzzy Logic Toolbox.

Пример:

rownum = findrow('два ', ['один'; 'два '; 'три '])

===================================================================

Функция возвращает значения 2, которое означает, что стринг 'два ' содержится во второй строке матрицы ['один'; 'два '; 'три '].

В оглавление \ К следующему разделу \ К предыдущему разделу

FSTRVCAT
Конкатенация матриц различных размеров

Синтаксис:

aout = fstrvcat(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)

Описание:

Функция fstrvcat формирует матрицу aout, строки которой содержат вектора a1, a2, a3, …. Для того, чтобы сформировать корректную матрицу, к некоторым векторам добавляется необходимое количество нулевых символов. Количество входных аргументов не должно превышать 11. Входные аргументы функции fstrvcat могут быть заданы как векторами, так и матрицами. Это позволяет формировать выходную матрицу aout пратически любого размера.

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

Пример:

aout = fstrvcat ('hi', 'blue', [110 101 101 100 108 101])

===================================================================

Функция fstrvcat возвращает следующую матрицу:

aout =
104 105 0 0 0 0
98 108 117 101 0 0
110 101 101 100 108 101,

строки которой содержат значения входных аргументов в формате ASCII.

В оглавление \ К следующему разделу \ К предыдущему разделу

FUZARITH
Выполнение нечетких арифметических операций

Синтаксис:

c = fuzarith(x, a, b, operator)

Описание:

Выполняет арифметические операции сложения, вычитания, умножения и деления над нечеткими числами.

Функция fuzarith имеет четыре входных аргумента:

  1. x – универсальное множество, на котором заданны нечеткие числа;
  2. a – вектор, задающий первый операнд. Представляет собой вектор степеней принадлежности элементов универсального множества первому нечеткому множеству. Другими словами, аргументы x и a образует первое нечеткое число;
  3. b – вектор, задающий второй операнд. Представляет собой вектор степеней принадлежности элементов универсального множества второму нечеткому множеству, т.о. аргументы x и b образует второе нечеткое число;
  4. operator – арифметическая операция:
    ‘sum’ – сложение;
    ‘sub’ – вычитание;
    ‘prod’ – умножение;
    ‘div’ – деление.

Выходной переменной функции fuzarith является вектор степеней принадлежности элементов универсального множества x результату выполнения нечеткой арифметической операции. Размерности векторов x, a, b и c должны быть одинаковыми.

В функции fuzarith нечеткие арифметические выполняются по следующему алгоритму:

  • преобразование нечетких чисел-операндов в -уровневые нечеткие множества;
  • выполнения арифметической операции для каждого -уровня в соответствии с принципом обобщения;
  • преобразование результирующего нечеткого числа из -уровнего представления к традиционному виду.

Функция fuzarith использует стандартные процедуры интерполяции для выполнения указанных выше преобразований. Количество -уровней равно 101.

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

При выполнении арифметически операций над нечеткими числами, как правило, носитель результирующего нечеткого числа отличен от носителей нечетких операндов. Функция fuzarith выводит степени принадлежности результата только для универсального множества нечетких операндов, т.е. для множества x. Для вывода всего результирующего нечеткого числа необходима простая модификация функции fuzarith – вывод результата в виде нечеткого множества в -уровневом разложении. Результирующее нечеткое число в виде разложений по -уровням представлено в функции fuzarith переменной intervalC.

Пример:

Рассчитывается нечеткое число c как произведение нечетких чисел a и b с гауссовскими функциями принадлежности, заданных на универсальном множестве {0, 0.01, …, 1}. Графики функций принадлежности показаны ниже на рисунке.

x=0:0.01:1;
a=gaussmf(x, [0.1 0.3]);
b=gaussmf(x, [0.2 0.6]);
c=fuzarith(x, a, b, 'prod');
plot(x, a, x, b, x, c)
legend('a', 'b', 'c=a*b')

В оглавление \ К следующему разделу \ К предыдущему разделу

GAUSS2MF
Двухсторонняя гауссовская функция принадлежности

Синтаксис:

y = gauss2mf (x, params)

Описание:

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

если c1<c2, то ;

если c1>c2, то .

Если c1<c2, то параметры функции принадлежности геометрически интерпретируются следующим образом:

с1 (с2) – минимальное (максимальное) значение ядра нечеткого множества;
a1 (a2) – коэффициент концентрации левой (правой) части функции принадлежности.

Когда c1>c2, нечеткое множество получается субнормальным.

Функция gauss2mf применяется для задания гладних ассиметричных функций принадлежности. Функция gauss2mf имеет два входных аргумента:

  1. x – вектор, для координат которого необходимо рассчитать степени принадлежности;
  2. params – вектор параметров функции принадлежности. Порядок задания параметров – [a1 c1 a2 c2].

Функция gauss2mf возвращает выходной аргумент y, содержащий степени принадлежности координат вектора x.

Пример:

x = 0: 0.1: 10;
y1 = gauss2mf (x, [2 1 1 3]);
y2 = gauss2mf (x, [2 4 1 5]);
y3 = gauss2mf (x, [2 6 1 6]);
plot (x, [y1; y2; y3])
title ('gauss2mf, a1=2, a2=1')
ylim([0 1.05])
legend(‘c1=1, c2=3’, ‘c1=4, c2=5’, ‘c1=6, c2=6’)

===================================================================

Построение графиков двухсторонних гауссовских функций принадлежности с различными параметрами на интервале [0, 10].

В оглавление \ К следующему разделу \ К предыдущему разделу

GAUSSMF
Гауссовская функция принадлежности

Синтаксис:

y = gaussmf (x, params)

Описание:

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

b – координата максимума функции принадлежности;
c – коэффициент концентрации функции принадлежности.

Функция gaussmf применяется для задания гладних симетричных функций принадлежности. Функция gaussmf имеет два входных аргумента:

  1. x – вектор, для координат которого необходимо рассчитать степени принадлежности;
  2. params – вектор параметров функции принадлежности. Порядок задания параметров – [c b].

Функция gaussmf возвращает выходной аргумент y, содержащий степени принадлежности координат вектора x.

Пример:

x = 0: 0.1: 10;
y1 = gaussmf(x, [0.5 5]);
y2 = gaussmf(x, [1 5]);
y3 = gaussmf(x, [2 5]);
y4 = gaussmf(x, [3 5]);
plot (x, [y1; y2; y3; y4])
title (' gaussmf, b=5, c=0.5…3')
legend(‘c=0.5’, ‘c=1’, ‘c=2’, ‘c=3’)

===================================================================

Построение графиков симметричных гауссовских функций принадлежности с различными коэффициентами концентрации.

В оглавление \ К следующему разделу \ К предыдущему разделу

GBELLMF
Обобщенная колокообразная функция принадлежности

Синтаксис:

y = gbellmf (x, params)

Описание:

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

a - коэффициент концентрации функции принадлежности;
b – коэффициент крутизны функции принадлежности;
c – координата максимума функции принадлежности.

Функция gbellmf применяется для задания гладних симетричных функций принадлежности. Функция gbellmf имеет два входных аргумента:

  1. x – вектор, для координат которого необходимо рассчитать степени принадлежности;
  2. params – вектор параметров функции принадлежности. Порядок задания параметров – [a b c].

Функция gbellmf возвращает выходной аргумент y, содержащий степени принадлежности координат вектора x.

Пример:

x = 0: 0.1: 10;
y1 = gbellmf (x, [3 1 5]);
y2 = gbellmf (x, [3 2 5]);
y3 = gbellmf (x, [3 3 5]);
plot (x, [y1; y2; y3])
title (' gbellmf, a=3, b=1,…,3, c=5')
legend(‘b=1’, ‘b=2’, ‘b=3’)

===================================================================

Построение графиков колокообразных функций принадлежности с различными коэффициентами крутизны.

В оглавление \ К следующему разделу \ К предыдущему разделу

GENFIS1
Генерирование исходной системы нечеткого логического вывода типа Сугэно из данных без использования кластеризации

Синтаксис:

fis = genfis1(data, numMFs, inmftype, outmftype)

Описание:

Функция genfis1 генерирует из данных систему нечеткого логического вывода типа Сугэно. Функции принадлежностей входных переменных выбираются таким образом, чтобы термы равномерно распределялись внутри диапазона изменения данных. Количество правил базы знаний определяется как произведение мощностей терм-множеств входных переменных, другими словами, функция genfis1 генерирует все возможные правила. Коэффициенты линейного полинома, который связывает входные и выходную переменные в области действия правила, назначаются равными нулю. Это означает, что при любых значениях входных переменных на выходе системы будет нулевое значение. Полученная система нечеткого логического вывода не отражает представленные данными закономерности между входами и выходом. Она является исходной системой для обучения посредством технологии ANFIS, в результате которого закономерности, заложенные в данных, будут идентифицированы.

Функция genfis1 может имеет до четырех входных аргументов:

  1. data – матрица исходных данных, каждая строчка которой является парой “входы – выход”;
  2. numMFs – необязательный аргумент, задающий количество термов для оценки входных переменных. Если количество термов одинаковое для всех переменных, тогда достаточно задать скалярное значение этого аргумента. Значение по умолчанию – 2;
  3. inmftype – необязательный аргумент, задающий типы функций принадлежности термов входных переменных. Значение этого аргумента в виде одной строки символов указывает на то, что все функции принадлежности одного типа. Массив стрингов задает тип функций принадлежностей для каждой входной переменной. По умолчанию используется обобщенная колокообразная функция принадлежности;
  4. outmftype – необязательный аргумент, задающий тип функций принадлежности термов выходных переменных (точнее тип зависимости, связывающей входные и выходную переменные в области действия правила). Допустимые значения: ‘linear’ – линейная и 'constant' – константа. По умолчанию используется линейная зависимость.

Функция genfis1 возвращает выходной аргумент fis, содержащий систему нечеткого логического вывода типа Сугэно.

Пример:

data = [rand(10,1) 10*rand(10,1)-5 rand(10,1)];
fis = genfis1(data,[3 7],char('pimf','trimf'))

===================================================================

Генерирование системы нечеткого логического вывода из данных data. Система использует три терма с пи-подобными функция принадлежности для оценки первой входной переменной и семь термов с треугольными функциями принадлежности для оценки второй входной переменной.

В оглавление \ К следующему разделу \ К предыдущему разделу

GENFIS2
Генерирование системы нечеткого логического вывода типа Сугэно из данны с использованием субтрактивной кластеризации

Синтаксис:

fis = genfis2(Xin, Xout, radii, xBounds, options)

Описание:

Функция genfis2 генерирует систему нечеткого логического вывода типа Сугэно из данны с использованием субтрактивной кластеризации. При использовании данных только с одной выходной переменной, результат выполнения функции genfis2 может рассматриваться как исходная система для обучения посредством технологии ANFIS.

Экстракция правил из данных в функции genfis2 происходит в два этапа. Вначале используется функция subclust для определения количества правил и мощностей терм-множеств выходных переменных. Затем с помощью метода наименьших квадратов определяется "то-"часть каждого правила. В результате этого получается система нечеткого логического вывода с базой правил, покрывающих все предметную область.

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

  1. Xin – матрица, в которой каждая строчка содержит значения входных переменных данных;
  2. Xout – матрица, в которой каждая строчка содержит значения выходных переменных данных;
  3. radii – вектор, определяющий размеры области правил по каждой координате. Значения координат вектора radii должны находится в диапазоне [0, 1] в связи с тем, что во время выполнения функции subclust данные масштабируется на единичный гиперкуб. Если значение radii задано скаляром, тогда все координаты считаются равноважными;
  4. xBounds – матрица диапазонов изменения данных, необходимая для их масштабирования на единичный гиперкуб. Каждый столбец матрицы задает диапазон изменения данных по одной координате, т.о. размер матрицы – 2 x p, где р – количество входных и выходных переменных. Если аргумент xBounds не задан, тогда диапазоны изменения данных рассчитываются функцией subclust по фактическим значениям матриц Xin и Xout;

options – вектор параметров кластерного анализа, информация о которых приведена в описании функции subclust.

Пример:

x=2*rand(100,2);
y=x(:,1).^2+2*x(:,2);
fis=genfis2(x, y, 0.5)
y_fis=evalfis(x, fis);
plot(y, y_fis, 'r.')
hold on
min_y=min(y);
max_y=max(y);
plot([min_y max_y], [min_y max_y], '-k')
xlabel('target')
ylabel('fis output')

===================================================================

В первых двух строчка примера задаются 100 пар точек “входы-выход”, связанных зависимостью y=x1^2+2*x2. Затем генерируется система нечеткого логического вывода, которая идентифицирует представленную данными зависимость. На рисунке показано желаемое (сплошная линия) и действительное (красные точки) поведения нечеткой модели. Как видно из рисунка, даже без использования технологии обучения ANFIS, нечеткая модель, синтезированная функцией genfis2, хорошо описывает данные.

В оглавление \ К следующему разделу \ К предыдущему разделу

GENPARAM
Генерирования исходных параметров функций принадлежности для ANFIS-обучения

Синтаксис:

mf_param = genparam(data, mf_n, mf_type)

Описание:

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

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







Дата добавления: 2015-09-04; просмотров: 1076. Нарушение авторских прав; Мы поможем в написании вашей работы!



Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

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

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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Субъективные признаки контрабанды огнестрельного оружия или его основных частей   Переходя к рассмотрению субъективной стороны контрабанды, остановимся на теоретическом понятии субъективной стороны состава преступления...

ЛЕЧЕБНО-ПРОФИЛАКТИЧЕСКОЙ ПОМОЩИ НАСЕЛЕНИЮ В УСЛОВИЯХ ОМС 001. Основными путями развития поликлинической помощи взрослому населению в новых экономических условиях являются все...

МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...

ОПРЕДЕЛЕНИЕ ЦЕНТРА ТЯЖЕСТИ ПЛОСКОЙ ФИГУРЫ Сила, с которой тело притягивается к Земле, называется силой тяжести...

СПИД: морально-этические проблемы Среди тысяч заболеваний совершенно особое, даже исключительное, место занимает ВИЧ-инфекция...

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

Studopedia.info - Студопедия - 2014-2024 год . (0.014 сек.) русская версия | украинская версия