В этом примере показано, как использовать отнимающую кластеризацию для шаблонов трафика модели в области на основе демографии области.
В этом примере мы пытаемся изучить отношение между количеством автомобильных прохождений, сгенерированных от области и демографией области. Демографический и данные о прохождении были забраны из аналитических зон трафика в графстве Ньюкасл, Делавэр. Пять демографических факторов рассматриваются: население, количество жилых секций, владения транспортного средства, среднего дохода семьи и общей занятости.
Здесь, демографические факторы будут обращены как входные параметры, и сгенерированные прохождения будут обращены, как выведено. Следовательно наша проблема имеет пять входных переменных (пять демографических факторов) и одна выходная переменная (количество сгенерированных прохождений).
Загрузите переменные ввода и вывода, используемые в этом примере в рабочую область.
tripdata
Две переменные загружаются в рабочей области, datin
и datout
. datin
имеет 5 столбцов, представляющих эти 5 входных переменных и datout
имеет 1 столбец, представляющий 1 выходную переменную.
subplot(2,1,1) plot(datin) legend('population','num. of dwelling units','vehicle ownership',... 'median household income','total employment') title('Input Variables','fontsize',10) subplot(2,1,2) plot(datout) legend('num of trips') title('Output Variable','fontsize',10)
Рисунок 1: переменные Ввода и вывода
Количество строк в datin
и datout
, 75, представляйте количество наблюдений или выборок или доступных точек данных. Строка в datin
, скажите строку 11, составляет набор наблюдаемых величин этих 5 входных переменных (население, количество жилых секций, владения транспортного средства, среднего дохода семьи и общей занятости) и соответствующая строка, строка 11, в datout
представляет наблюдаемую величину для количества прохождений, сгенерированных, учитывая наблюдения, сделанные для входных переменных.
Мы смоделируем отношение между входными переменными (демография) и выходная переменная (прохождения) первой кластеризацией данных. Кластерные центры будут затем использоваться в качестве основания, чтобы задать нечеткую систему вывода (FIS), которая может затем использоваться, чтобы исследовать и изучить шаблоны трафика.
Кластеризация может быть очень эффективным методом, чтобы идентифицировать естественные группировки в данных из большого набора данных, таким образом, позволив краткое представление отношений, встроенных в данные. В этом примере кластеризация позволяет нам шаблонам трафика группы в широкие категории, следовательно допуская более легкую понятность.
Нечеткая логика является эффективной парадигмой, чтобы обработать неточность. Это может использоваться, чтобы взять нечеткие или неточные наблюдения для входных параметров и все же достигнуть четких и точных значений для выходных параметров. Кроме того, нечеткая система вывода является путем к системам сборки, не используя комплексные аналитические уравнения.
В этом примере нечеткая логика используется, чтобы получить широкие категории, идентифицированные во время кластеризации в Нечеткую систему вывода (FIS). FIS будет затем действовать как модель, которая отразит отношение между демографией и автоматическими прохождениями.
Кластеризация и нечеткая логика вместе обеспечивает, простое, все же мощное, означает моделировать отношение трафика, которое мы хотим изучить.
subclust
функция, которая реализует названную отнимающую кластеризацию кластеризирующегося метода. Отнимающая кластеризация, [1], является быстрым, алгоритмом с одной передачей для оценки количества кластеров и кластерных центров в наборе данных.
В этом разделе мы будем видеть, как отнимающая кластеризация выполняется на наборе данных, и в следующем разделе мы исследуем независимо, как кластеризация используется, чтобы создать Нечеткую систему вывода (FIS).
[C,S] = subclust([datin datout],0.5);
Первый аргумент к subclust
функция является данными, которые будут кластеризироваться. Вторым аргументом к функции является radii
который отмечает радиус кластера влияния на входном пробеле.
Переменная C
теперь содержит все центры кластеров, которые были идентифицированы subclust
. Каждая строка C
содержит положение кластера.
C
C = 1.8770 0.7630 0.9170 18.7500 1.5650 2.1830 0.3980 0.1510 0.1320 8.1590 0.6250 0.6480 3.1160 1.1930 1.4870 19.7330 0.6030 2.3850
В этом случае, C
имеет 3 строки, представляющие 3 кластера с 6 столбцами, представляющими положения кластеров в каждой размерности.
subclust
следовательно идентифицировал 3 естественных группировки в рассматриваемом наборе данных демографического прохождения. Следующий график показывает, как кластеры были идентифицированы в 'общей занятости' и размерностях 'прохождений' входного пробела.
clf plot(datin(:,5),datout(:,1),'.',C(:,5),C(:,6),'r*') legend('Data points','Cluster centers','Location','SouthEast') xlabel('total employment','fontsize',10) ylabel('num of trips','fontsize',10) title('Data and Clusters in selected two dimensions of the input space','fontsize',10)
Рисунок 2: Кластерные центры в 'общей занятости' и размерностях 'прохождений' входного пробела
Переменная S
содержит значения сигмы, которые указывают диапазон влияния кластерного центра в каждой из размерностей данных. Все кластерные центры совместно используют тот же набор значений сигмы.
S
S = 1.1621 0.4117 0.6555 7.6139 2.8931 1.4395
S
в этом случае имеет 6 столбцов, представляющих влияние кластерных центров на каждой из этих 6 размерностей.
genfis
функция, которая создает FIS использование отнимающей кластеризации. genfis
использует subclust
негласно, чтобы кластеризировать данные и использование кластер центрируется и их область значений влияний, чтобы создать FIS, который будет затем использоваться, чтобы исследовать и изучить шаблоны трафика.
myfis=genfis(datin,datout, ... genfisOptions('SubtractiveClustering','ClusterInfluenceRange',0.5));
Первый аргумент является матрицей входных переменных datin
, второй аргумент является матрицей выходных переменных datout
и третьим аргументом является radii
это должно использоваться при использовании subclust
.
genfis
имена по умолчанию присвоений для входных параметров, выходных параметров и функций принадлежности. Для нашего понимания его выгодно, чтобы переименовать вводы и выводы обоснованно.
Присвойте имена к вводам и выводам.
myfis.Inputs(1).Name = "population"; myfis.Inputs(2).Name = "dwelling units"; myfis.Inputs(3).Name = "num vehicles"; myfis.Inputs(4).Name = "income"; myfis.Inputs(5).Name = "employment"; myfis.Outputs(1).Name = "num of trips";
FIS состоит из входных параметров, выходных параметров и правил. Каждый ввод и вывод может иметь любое количество функций принадлежности. Правила диктуют поведение нечеткой системы на основе входных параметров, выходных параметров и функций принадлежности. genfis
создает FIS в попытке получить положение и влияние каждого кластера на входном пробеле.
myfis
FIS что genfis
сгенерировал. Поскольку набор данных имеет 5 входных переменных и 1 выходную переменную, genfis
создает FIS с 5 входными параметрами и 1 выходом. Каждый ввод и вывод имеет столько же функций принадлежности сколько количество кластеров что subclust
идентифицировал. Как замечено ранее, для текущего набора данных subclust
идентифицированный 3 кластера. Поэтому каждый ввод и вывод будет характеризоваться 3 функциями принадлежности. Кроме того, количество правил равняется количеству кластеров, и следовательно 3 правила создаются.
Мы можем теперь зондировать FIS, чтобы изучить, как кластеры были преобразованы внутренне в функции принадлежности и правила с помощью приложения Fuzzy Logic Designer.
fuzzyLogicDesigner(myfis)
Рисунок 3: графический редактор для создания Нечетких систем вывода (FIS)
Как видно, FIS имеет 5 входных параметров и 1 выход с входными параметрами, сопоставленными с выходными параметрами через основу правила (белое поле в фигуре).
Давайте теперь попытаемся анализировать, как кластерные центры и функции принадлежности связаны.
mfedit(myfis)
Рисунок 4: графический редактор функции принадлежности
mfedit(myfis)
запускает графический редактор функции принадлежности. Это может также быть запущено путем нажатия на входные параметры или выходные параметры в редакторе FIS, запущенном fuzzyLogicDesigner
.
Заметьте, что все вводы и выводы имеют точно 3 функции принадлежности. Эти 3 функции принадлежности представляют 3 кластера, которые были идентифицированы subclust
.
Каждый вход в FIS представляет входную переменную во входном наборе данных datin
и каждый выход в FIS представляет выходную переменную в выходном наборе данных datout
.
По умолчанию, первая функция принадлежности, in1cluster1
, из первого входа population
был бы выбран в редакторе функции принадлежности. Заметьте, что типом функции принадлежности является gaussmf
(Гауссова функция принадлежности типа), и параметрами функции принадлежности является [1.162 1.877]
, где 1.162
представляет коэффициент распространения Кривой Гаусса и 1.877
представляет центр Кривой Гаусса. in1cluster1
получает положение и влияние первого кластера для входной переменной population
. (C(1,1)=1.877, S(1)=1.1621 )
Точно так же положение и влияние других 2 кластеров для входной переменной population
получены другими двумя функциями принадлежности in1cluster2
и in1cluster3
.
Остальная часть 4 входных параметров следует за точным шаблоном, имитирующим положение и влияние этих 3 кластеров по их соответствующим измерениям в наборе данных.
Теперь давайте исследуем, как нечеткие правила создаются.
ruleedit(myfis)
Рисунок 5: графический редактор правила
ruleedit
графический нечеткий редактор правила. Как можно заметить, существует точно три правила. Каждое правило пытается сопоставить кластер на входном пробеле к кластеру на выходном пробеле.
Первое правило может быть объяснено просто можно следующим образом. Если входные параметры к FIS, population
, dwelling units
, num vehicles
, income
, и employment
, строго принадлежите их соответствующему cluster1
функции принадлежности затем выход, num of trips
, должен строго принадлежать его cluster1
функция принадлежности. (1) в конце правила должен указать, что правило имеет вес или важность "1". Веса могут принять любое значение между 0 и 1. Правила с меньшими весами будут значить меньше в окончательном результате.
Значение правила состоит в том, что оно кратко сопоставляет кластер 1 на входном пробеле к кластеру 1 на выходном пробеле. Точно так же другие два правила сопоставляют кластер 2 и кластер 3 на входном пробеле к кластеру 2 и кластеру 3 на выходном пробеле.
Если точка данных ближе к первому кластеру или другими словами наличию сильного членства в первом кластере, питается, как введено myfis
затем rule1 будет стрелять с большей силой увольнения, чем другие два правила. Точно так же вход с сильным членством во втором кластере будет стрелять, второе правило будет с большей силой увольнения, чем другие два правила и так далее.
Выход правил (запускающий сильные места) затем используется, чтобы сгенерировать выход FIS через выходные функции принадлежности.
Тот выход FIS, num of trips
, имеет 3 линейных функции принадлежности, представляющие эти 3 кластера, идентифицированные subclust
. Коэффициенты линейных функций принадлежности, хотя не взяты непосредственно из кластерных центров. Вместо этого они оцениваются от набора данных с помощью метода оценки методом наименьших квадратов.
Все 3 функции принадлежности в этом случае будут иметь форму a*population + b*dwelling units + c*num vehicles + d*income + e*employment + f
, где a
B
C
D
E
и f
представляйте коэффициенты линейной функции принадлежности. Нажмите на любой num of trips
функции принадлежности в редакторе функции принадлежности, чтобы наблюдать параметры этих линейных функций принадлежности.
Можно теперь использовать FIS, который был создан, чтобы изучить базовую динамику смоделированного отношения.
surfview(myfis)
Рисунок 6: средство просмотра Поверхности ввода - вывода
surfview
поверхностное средство просмотра, которое помогает просмотреть поверхность ввода - вывода нечеткой системы. Другими словами, этот инструмент симулирует ответ нечеткой системы для целой области значений входных параметров, на которые система сконфигурирована, чтобы работать. После этого выход или ответ FIS к входным параметрам построены против входных параметров как поверхность. Эта визуализация очень полезна, чтобы изучить, как система собирается вести себя для целой области значений значений на входном пробеле.
В графике выше поверхностного средства просмотра показывает выходную поверхность для двух входных параметров population
и num of dwelling units
. Когда вы видите количество автоматических увеличений прохождений с увеличением населения и жилых секций, который звучит очень рациональным. Можно изменить входные параметры в X и Y выпадающие поля, чтобы наблюдать выходную поверхность относительно входных параметров, которые вы выбираете.
ruleview(myfis)
Рисунок 7: Управляйте средством просмотра, которое симулирует целый нечеткий процесс вывода
ruleview
графическое средство моделирования для симуляции ответа FIS для определенных значений входных переменных. Теперь создававший нечеткую систему, если мы хотим понять, сколько прохождений произойдет для демографической настройки, скажите, что область с конкретным населением, определенным числом жилых секций и так далее, этот инструмент поможет вам симулировать ответ FIS для входа по вашему выбору.
Другая функция этого инструмента GUI, это дает вам снимок состояния целого нечеткого процесса вывода, прямо от того, как функциям принадлежности удовлетворяют в каждом правиле к тому, как окончательный результат генерируется через defuzzification.
Этот пример попытался передать, как кластеризация и нечеткая логика может использоваться как эффективные методы для моделирования данных и анализа.
Нечеткая логика также нашла различное применение в других областях технологии как нелинейное управление, автоматическое управление, обработка сигналов, система идентификации, распознавание образов, прогноз временных рядов, анализ данных, финансовые приложения и т.д.
[1] - С. Чю, "Нечеткая идентификация модели на основе кластерной оценки", J. Intelligent & Fuzzy Systems, издания 2, № 3, 1994.