Professional Documents
Culture Documents
Увод
Предвиђање MPG (miles per gallon) је типичан регресиони нелинеарни
проблем, у ком се неколико информација о аутомобилском профилу
користе да предвиде следећи непрекидан атрибут, потрошњу горива у MPG.
Подаци су створени на UCI (Univ. of California at Irvine).
Доле приказана табела има неколико примера из скупа података MPG. Шест
улазних атрибута су број цилиндара, промена места, коњска снага, тежина,
убрзање, и годиште аутомобила. Излазна променљива која се предвиђа је
потрошња горива у MPG. (Произвођачи аутомобила и модели у првој колони
табеле се не користе у предвиђању).
Прављење партиција
Скуп података се добија из оригиналног фајла са подацима 'auto-gas.dat'.
Затим се скуп података дели у скуп обучених података (примери непарних
индекса) и чекирани скуп (пример парних индекса).
[data, input_name] = loadgas;
trn_data = data(1:2:end, :);
chk_data = data(2:2:end, :);
Улазни избор
Функција exhsrch изводи детаљну претрагу унутар доступних улаза да би се
изабрао скуп улаза који највише утиче на потрошњу горива. Први параметар
у функцији одређује број улазних комбинација који се пробају током
претраге. Функција, exhsrch гради ANFIS модел за сваку комбинацију и врши
обуку за једну epoch и извештава о постигнутом извођењу. У следећем
примеру функција exhsrch се користи да одреди најутицајнији улазни атрибут
у предвиђању излаза.
exhsrch(1, trn_data, chk_data, input_name);
Обука 6 ANFIS модела, сваки са 1 улазом изабраним од 6 кандидата...
Nc = size(chk_data,1);
A_ck = [chk_data(:,1:6) ones(Nc,1)];
B_ck = chk_data(:,7);
lr_rmse = norm(A_ck*coef-B_ck)/sqrt(Nc);
% Printing results
fprintf('\nRMSE against checking data\nANFIS : %1.3f\tLinear Regression :
%1.3f\n', a, lr_rmse);
RMSE against checking data
ANFIS : 2.980 Linear Regression : 3.444
Види се да ANFIS модел заостаје у извођењу за линеарним регресионим
моделом.
Анализа ANFIS Модела
Променљива chk_out_fismat представља снимак ANFIS модела при
минималној грешци за време процеса обуке. Улазно излазна површина
модела је приказана на доњој слици.
chk_out_fismat = setfis(chk_out_fismat, 'input', 1, 'name', 'Weight');
chk_out_fismat = setfis(chk_out_fismat, 'input', 2, 'name', 'Year');
chk_out_fismat = setfis(chk_out_fismat, 'output', 1, 'name', 'MPG');
%%
% *Slika 1:* Uticaj svake ulazne velicine na potrosnju goriva
%%
% *Slika 2:* Kombinacija dve ulazne promenljive i njihov
% uticaj
% na potrosnju goriva
%%
% *Slika 3:* Kombinacija tri ulazne promenljive i njihov
% uticaj
% na potrosnju goriva
close all;
new_trn_data = trn_data(:, [input_index, size(trn_data,2)]);
new_chk_data = chk_data(:, [input_index, size(chk_data,2)]);
%%
% ANFIS prikazuje greske u skladu sa obucenim i oznacenim
% podacima
% u listi izlaznih parametara. Grafik gresaka obezbedjuje
% korisne informacije o obucenim podacima.
[a, b] = min(chk_error);
plot(1:100, trn_error, 'g-', 1:100, chk_error, 'r-', b, a, 'ko');
title('Training (green) and checking (red) error
curve','fontsize',10);
xlabel('Epoch numbers','fontsize',10);
ylabel('RMS errors','fontsize',10);
%%
% *Slika 4:* ANFIS obucavanje i oznacene greske
Nc = size(chk_data,1);
A_ck = [chk_data(:,1:6) ones(Nc,1)];
B_ck = chk_data(:,7);
lr_rmse = norm(A_ck*coef-B_ck)/sqrt(Nc);
% Stampanje rezultata
fprintf('\nRMSE against checking data\nANFIS : %1.3f\tLinear
Regression : %1.3f\n', a, lr_rmse);
%%
% *Slika 5:* Ulazno izlazna povrsina za obuceni FIS
%% Ogranicenja i Uzroci