Этот пример показывает, как использовать отнимающую кластеризацию для образцовых шаблонов трафика в области на основе демографии области.
В этом примере мы пытаемся понять отношение между количеством автомобильных прохождений, сгенерированных от области и демографией области. Демографический и данные о прохождении были забраны из аналитических зон трафика в графстве Ньюкасл, Делавэр. Пять демографических факторов рассматриваются: генеральная совокупность, количество жилых секций, владения автомобиля, среднего дохода семьи и общей занятости.
Здесь, демографические факторы будут обращены как входные параметры, и сгенерированные прохождения будут обращены, как выведено. Следовательно наша проблема имеет пять входных переменных (пять демографических факторов) и одна выходная переменная (количество сгенерированных прохождений).
Загрузите переменные ввода и вывода, используемые для этого примера в рабочую область.
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). 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.