Arama butonu
Bu konudaki kullanıcılar: 1 misafir
27
Cevap
4176
Tıklama
2
Öne Çıkarma
Yapay Sinir Ağları ile Tahmin İşlemi
U
8 yıl
Yüzbaşı
Konu Sahibi

Merhaba arkadaşlar. Yapay sinir ağları ile tahmin etme üzerine bir projemiz var. Elimizde 14000 değerden oluşan bir zaman serimiz var. Bir yapay sinir ağı oluşturup, bu ağı zaman serimizin %70 i ile eğitiyoruz. Kalan %30 unu test ediyoruz. Şimdi amacımız elimizdeki zaman serisinin de ötesini tahmin ettirmek. Yani örneğin 14025. değeri tahmin ettirmek istiyoruz. Ancak burada tıkandık.

MATLAB'ta Neural Network Time Series Toolbox üzerinde çalışıyoruz. Yardımlarınız için şimdiden teşekkürler



U
8 yıl
Yarbay

Merhaba. Ben mühendis değilim, hatta mühendislik öğrencisi de değilim ancak fikrimi sizlerle paylaşmak istedim.

Eğer 14025'i tahmin etmesini isteseydim, kendim 14025'i nasıl tahmin ederdim onu düşünürdüm.

14025 tahminine nasıl ulaşırdım, 14025 değerini nasıl bulurdum onu düşünürdüm.

Belki yardımcı olur.


Bu mesaja 1 cevap geldi.
U
8 yıl
Yüzbaşı
Konu Sahibi

Hocam ardışık olarak tahmin edileceğini düşünüyoruz. Yani 14025 i direk tahmin etmesi mantıksız gibi önce 14001 14002 .... . Gibi ardışık olarak tahmin edip en son 14025 tahmin edilir diye düşünüyoruz ama işte close loop adında bir fonksiyon var bunun parametrelerini kendi problemimize uyarlayamıyoruz.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @umut_baris
R
8 yıl
Binbaşı

Hocam bu konuda eksi cahillerdenim. Proje hakkında resim falan paylsşırmısınız. Yada bu bir makine mi ? Cehalet



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
U
8 yıl
Yüzbaşı
Konu Sahibi

Makine değil hocam MATLAB üzerinde uygulaması bulunan, gerekli adımları takip ettiğinizde size hazır yazılmış kodu veren bir uygulama aslında. Tabi bunun üzerinde birçok düzenleme vs. yapılması gerekiyor.

MATLAB üzerinde Neural Network Time Series Toolbox adındaki araç üzerinde çalışıyoruz. Zaman serisi excel dosyasında 14 bin satır tek sütun şeklinde bulunuyor. Excel in her hücresinde, bir ağ üzerindeki linkin anlık olarak ölçülmüş internet trafiği değerleri var.

Bu linkteki 2. adımda bulunan ağ yapılarından Nonlinear AutoRegresive fonksiyonunu kullanıyoruz(NARnet).

Forumda bu işlere eli değmiş bir hayırsever çıkarsa çok memnun oluruz.




Bu mesajda bahsedilenler: @Redese
U
8 yıl
Yarbay

quote:

Orijinalden alıntı: ugurcan709

Hocam ardışık olarak tahmin edileceğini düşünüyoruz. Yani 14025 i direk tahmin etmesi mantıksız gibi önce 14001 14002 .... . Gibi ardışık olarak tahmin edip en son 14025 tahmin edilir diye düşünüyoruz ama işte close loop adında bir fonksiyon var bunun parametrelerini kendi problemimize uyarlayamıyoruz.

Ardşık olarak tahmin edeceğini düşünmenizin nedeni nedir hocam? Yapacağınız proje gereği mi böyle?

14025 değerine çıkmak istiyorsam onu bana sağlayan önceki koşulları (yani değerleri) sağlamam gerekir diye düşünürdüm.

Sonsuza kadar toplayarak gitmek gibi birşey.


Bu mesaja 1 cevap geldi.
U
8 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: umut_baris

quote:

Orijinalden alıntı: ugurcan709

Hocam ardışık olarak tahmin edileceğini düşünüyoruz. Yani 14025 i direk tahmin etmesi mantıksız gibi önce 14001 14002 .... . Gibi ardışık olarak tahmin edip en son 14025 tahmin edilir diye düşünüyoruz ama işte close loop adında bir fonksiyon var bunun parametrelerini kendi problemimize uyarlayamıyoruz.

Ardşık olarak tahmin edeceğini düşünmenizin nedeni nedir hocam? Yapacağınız proje gereği mi böyle?

14025 değerine çıkmak istiyorsam onu bana sağlayan önceki koşulları (yani değerleri) sağlamam gerekir diye düşünürdüm.

Sonsuza kadar toplayarak gitmek gibi birşey.

Emin değilim tabi ben de bu konularda çok yeniyim ama şöyle ki fonksiyona y (t) veriyorsunuz size y (t+1) i veriyor. Yani bir sonraki durumu veriyor. Daha başka bir fonksiyon var ama onu kullanamadık uzun boylu tahmin ediyor sanırım ama parametreleri ayarlayamıyoruz henüz.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
S
8 yıl
Yarbay

Acikcasi yapay sinir aglari ile extrapolation yapmadim. Ancak yapilabilir diye dusunuyorum. Fakat yapay sinir aglari kesinlikle bir interpolation yontemi bunu da unutmamak lazim. Bu konuda biraz bakindim ama detayli arastirilirsa bulunabilir.

Burada matlab help de biri senle ayni soruyu sormus.

http://www.mathworks.com/matlabcentral/answers/231148-forecasting-and-extrapolation-of-time-series-using-neural-network-algorithm

adamin biri de git asagidaki terimleri arat diye cevap vermis. Konuyu acan adam da cevabini onaylamis. Bence yararli bilgiler bulabilirsin sen de aratirsan (ben aratmadim)

Onun disinda stackoverflow da olmaz mantiksiz denmis. Ancak 2 yontemin birlestirilmesiyle yapilabilir denmis.

http://stackoverflow.com/questions/18310293/extrapolation-with-recurrent-neural-network

Ve bu makalede de adamin biri yapmis

http://arxiv.org/pdf/1405.2262.pdf

Hani bulmussundur bu attiklarimi ama belki bir ihtimal ben yine de yazayim dedim. Derin bir arastirma ile bulunabilirligi var. Bana da "big data" olmaksizin yapay sinir aglari egitimi gerekiyor. Ben de ona bakacagim ilerleyen gunlerde, su an model predictive control ile ugrasiyorum.



K
8 yıl
Yarbay

@Spyxxx dediği gibi extrapolation meselesi.
Sayın @ugurcan709 un da demediği gibi neyi formüle etmemiz gerektiğini bilmiyoruz...
Aslında interpolation için yazılan iç formül sınır dışında da çalıştırılabilir. Ama neye ne yazdığımızı bilmemiz gerekmez mi? Örnekler ve yazılmış formüller lütfen... Sadece bencillik değil aynı zamanda foruma katkı..




Bu mesajda bahsedilenler: @Spyxxx , @ugurcan709
U
8 yıl
Yüzbaşı
Konu Sahibi

Spyxxx hocam bahsettiğiniz sitedeki çoğu ilgili konuya baktık. Zaten tek bir yardım eden kişi var neredeyse. Greg Heath adında biri profesör sanırım. Ama verdiği cevaplar o kadar genel ki. Konularla ilgili önceden hazırladığı bilgiler var, kim ne sorarsa sorsun hep o sayfalara giden linkleri yönlendiriyor. Açıklamaları çok genel ama çoğu soruya da yanıt veriyor üstü kapalı da olsa. Ancak faydasız olduktan sonra anlamı yok. O sitede benim de bir sorum var yine aynı şekilde pek ihtiyacimiz olan cevabı vermedi malesef.

Karafetva hocam proje ile ilgili görüntüleri paylaşırım yeterli bilgiye ulaşınca. Yanlış bilgi paylaşmak da istemiyorum şu anki tecrübesizliğimle.

Interpolasyon gibi Terimleri arastirmam gerek sanırım. Şöyle ki MATLAB ın verdiği kodlarda bunlarla ilgili pek bir bilgi yok yani bizi çözüme ulaştıracak olayın close loop fonksiyonu yada removedelay değeri olduğunu düşünüyoruz. Şu an evde değilim bu aksam gerekli bilgileri paylaşıcam.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Spyxxx , @karafetva
K
8 yıl
Yarbay

inter içerisinde manasını extra da dışında manasını taşıyor.

Mesela bir aralıkla sabitlenmiş formül var ve aralık dışında hata artıyor. inter kısmı uygun aralığı extra da aralık dışına isabet eder.
İnterpolasyonda doğru orantı ile sonuç hemen bulunur. Ama teknikte doğru orantı neredeyse yoktur onun için interpolasyon kabul ile hesap yapmayı sağlar.

Tecrübesizlik önemli değil. Dilediğin gibi paylaş. Herkesin eksiği var malum.... Birlikte güçlenelim...


Bu mesaja 1 cevap geldi.
A
8 yıl
Onbaşı

Data setin hakkında bilgi verebilme şansın var mı? Yada data setini oluşturmak istediğin model hakkında. Bunlar oluşturacağın YSA yapısını belirleyecektir.


Bu mesaja 1 cevap geldi.
A
8 yıl
Yarbay

YSA'da 1+2=3, 2+2=4 öğretip 2+3=4.8 cevabını kendinin vermesini bekleriz. Öğretilenin dışına çıkamıyorsa sistem ezber değilmidir ?


Bu mesaja 1 cevap geldi.
A
8 yıl
Onbaşı

Dediğiniz gibi ezber olmaktadır. Bu nedenle eğitim date setinin çok iyi seçilmesi gerekmektdir.



U
8 yıl
Yüzbaşı
Konu Sahibi

Öncelikle şunu söylemek istiyorum, yazacaklarımın doğruluğundan emin değilim, sadece birkaç haftalık araştırma sonucunda edindiğim bilgileri vermek istiyorum. Yanlışım varsa bilgilendirin düzelteyim. Amacım, biz türkçe kaynakları yeterince bulamadık, bundan sonra google da aratıp buraya gelenlere az da olsa kendi dilinde anlayacakları bir metin sağlamak.

Elimdeki "input" adındaki excel dosyasında(Kullanacağımız verisetini Belgeler/MATLAB/ klasörüne atmamız gerekiyor), resimde de göründüğü tipte devam eden 15000 satır değerim var. Proje konumuz oluşturulacak bir Yapay Sinir Ağı'na, bir link üzerinde oluşacak trafik değerlerini önceden ölçülmüş örnek değerlere bakarak tahmin ettirmek. MATLAB ın toolbox ı yardımıyla oluşturacağım YSA yapısına, istediğim bir değeri, örneğin 15035'inci değeri tahmin ettirebilmek istiyorum.

< Resime gitmek için tıklayın >

----------------------------

Normalde YSA zaman serileri ile çalışırken verisetinde birkaç giriş ve tek çıkış oluyor. Örneğin " Şu şartlarda yağmur yağacak mı ?" problemini YSA ile çözmeye çalışacağımızı düşünürsek. Elimizde bir excel dosyasında 4 sütunlu zaman serisi olsun. İlk sütunda nem oranları, ikinci sütunda rüzgar, üçüncü sütunda da sıcaklık değerleri bulunsun. Her satır için de dördüncü sütunda yağmur yağacak yada yağmayacak sonuçlarına karşılık gelen 1 yada 0 değerleri döndürülsün. Bu problemi eldeki veriseti ile çözmek için 3 giriş bir de çıkış olduğu görülüyor. YSA train edilirken her satırı tek tek inceliyor ve sonuçları öğreniyor, şu durumda yağmur yağmış, şu durumda yağmamış vs. Train edildikten sonra YSA artık sıcaklık, nem ve rüzgara ait ağırlık değerleri oluyor ve siz ona şu nem, sıcaklık ve rüzgar değerlerinde yağmur yağacak mı diye sorarsanız size kendi öğrendiği değerlerin eğitiminden çıkan ağırlıkların hesabının sonucu olarak 1 yada 0 değeri dönüyor.

Ancak ortada bir farklılık var. Bizim verisetimiz tek sütunlu, yani ardışık, lineer olmayan değerlerden oluşuyor. Bu durumda giriş de hedef de aynı oluyor. Burada bizim YSA'dan istediğimiz sayıların sıralamaları arasında, yani örneğin şu değerden 5 dakika sonra bi düşme yaşanmış ve şöyle bir değer gelmiş, ardından yükselmiş şöyle bir değer gelmiş vs vs. Yani bu serinin içerisinde bir bağ formulü kurmasını bekliyoruz ve en sonunda diyeceğiz ki mesela bize 15500. sıradaki değeri bize söyle bakalım.

-----------------------------


Yaptığımız işlemleri anlatayım :

1- MATLAB açtıktan sonra soldaki Current Folder penceresinde sağ tıklayıp "New Script" e tıklayıp yeni bir script oluşturuyoruz. Daha sonra üst kısımda HOME sekmesine gelip "Import Data" ya tıklayıp açılan pencerede ve inputt.xlsx dosyamızı gösteriyoruz. Import ettikten sonra pencereyi kapattığımızda sağ taraftaki Workspace penceresinde inputt.xlsx excel dosyamızın içindeki verilerin projeye matris halinde dahil edildiğini görüyoruz.

< Resime gitmek için tıklayın >

< Resime gitmek için tıklayın >


2- MATLAB üzerinde APPS sekmesindeki araçlardan Neural Network Time Series Tool'u seçince karşımıza böyle bir ekran geliyor. Burada hangi ağ yapısını kullanacağımızı seçiyoruz. Biz araştırmalarımızda ikinci seçeneğin yani Nonlinear Autoregresive(NAR) ağının bizim problemimize uygun olduğunu düşündük. İkinci seçeneği seçip devam ediyoruz.
< Resime gitmek için tıklayın >

3- İkinci seçeneği seçtikten sonra karşımıza hedefleri seçebileceğimiz ekran geliyor.(Targets: YSA'nın verisetiyle eğitildikten sonra test işlemi yaparken tahmin sonuçlarını karşılaştıracağı değerler)
Bizim zaman serimiz satırlar halinde olduğu için Cell Column yerine Matrix Row'u seçiyorum ve Next diyorum.

< Resime gitmek için tıklayın >

4- Gelen ekranda YSA'ya vereceğimiz verisetinin yüzde kaçının train için, yüzde kaç validation, yüzde kaç test için kullanılacağını ayarlayabiliyoruz. Train ve test işleminden bahsetmiştim. Validation işlemi ise YSA'nın "ezber" çıkmazına girmemesi için kullanılan bir durum olduğunu söyleyeyim. Train edildikten sonra "validation" yani "onaylama" işlemi yapılır ki kurulan ağın verdiği çıktılar, ağın iyi mi eğitilmiş yoksa verisetini ezberlemiş mi olduğunu kontrol etmek için kullanılıyor diye biliyorum. 70-15-15 bırakıp next diyoruz.

< Resime gitmek için tıklayın >

5- Buradaki ekranda da "Hidden neuron" ve "number of delays" değerlerini girebiliyoruz. Hidden neuron sayısı, YSA'nın input ile output arasındaki gizli katman sayısını gösteriyor. Gizli katman sayısı ne kadar çoksa, YSA bi o kadar iyi sonuç verecektir(beyindeki kıvrım sayısı olarak düşünebiliriz), küçük verisetlerinde, basit projelerde bu sayı daha küçük seçiliyor.
Input delays sayısı ise verdiğimiz zaman serisinin içindeki verilerin hangi sayıda alınacağını gösteriyor. Örneğin 100 değerimiz var ve input delay 2 verirsek, veriler iki iki seçilecektir(bu kısım biraz karışıyor).

< Resime gitmek için tıklayın >

6- Burda YSA nın hangi fonksiyon ile eğitileceğini belirtiyoruz. Birden fazla fonksiyon var , Levenberg M, Bayes vs. Biz LM yi seçiyoruz. Train tuşuna tıkladıktan sonra Next butonu aktif hale gelecektir, ağı kurarken en az bir defa train etmek zorundayız haliyle.(Sağ tarafta 14772 değerin yüzdelik karşılıklarını görebiliyoruz)

< Resime gitmek için tıklayın >

Ağ kurulduktan sonra gerçekleşen iterasyon sayısını vs gösteren bir grafik ekranı açılıyor, devamında retrain edebileceğimiz bir ekran geliyor. Retrain etmeye gerek yok(birden fazla kez eğitilen ağ, ilk sonuçlarına göre daha iyi değerler üretecektir diye düşünüyorum ancak biz retrain etmeden devam ediyoruz), next diyoruz.

7- Next diyoruz.

< Resime gitmek için tıklayın >

Yine next diyelim :

< Resime gitmek için tıklayın >


8- Advance Script e tıklıyoruz ve MATLAB neural network tool un bizim girdiğimiz seçimlere göre oluşturduğu YSA kodu otomatik olarak açılıyor.

< Resime gitmek için tıklayın >

Buradaki Advance Script'e tıklandıktan sonra gelen kodları veriyim:

 
% Solve an Autoregression Time-Series Problem with a NAR Neural Network
% Script generated by Neural Time Series app
% Created 09-Mar-2016 20:04:18
%
% This script assumes this variable is defined:
%
% X - feedback time series.

T = tonndata(X,false,false);

% Choose a Training Function
% For a list of all training functions type: help nntrain
% 'trainlm' is usually fastest.
% 'trainbr' takes longer but may be better for challenging problems.
% 'trainscg' uses less memory. Suitable in low memory situations.
trainFcn = 'trainlm'; % Levenberg-Marquardt backpropagation.

% Create a Nonlinear Autoregressive Network
feedbackDelays = 1:2;
hiddenLayerSize = 10;
net = narnet(feedbackDelays,hiddenLayerSize,'open',trainFcn);

% Choose Feedback Pre/Post-Processing Functions
% Settings for feedback input are automatically applied to feedback output
% For a list of all processing functions type: help nnprocess
net.input.processFcns = {'removeconstantrows','mapminmax'};

% Prepare the Data for Training and Simulation
% The function PREPARETS prepares timeseries data for a particular network,
% shifting time by the minimum amount to fill input states and layer
% states. Using PREPARETS allows you to keep your original time series data
% unchanged, while easily customizing it for networks with differing
% numbers of delays, with open loop or closed loop feedback modes.
[x,xi,ai,t] = preparets(net,{},{},T);

% Setup Division of Data for Training, Validation, Testing
% For a list of all data division functions type: help nndivide
net.divideFcn = 'dividerand'; % Divide data randomly
net.divideMode = 'time'; % Divide up every sample
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;

% Choose a Performance Function
% For a list of all performance functions type: help nnperformance
net.performFcn = 'mse'; % Mean Squared Error

% Choose Plot Functions
% For a list of all plot functions type: help nnplot
net.plotFcns = {'plotperform','plottrainstate', 'ploterrhist', ...
'plotregression', 'plotresponse', 'ploterrcorr', 'plotinerrcorr'};

% Train the Network
[net,tr] = train(net,x,t,xi,ai);

% Test the Network
y = net(x,xi,ai);
e = gsubtract(t,y);
performance = perform(net,t,y)

% Recalculate Training, Validation and Test Performance
trainTargets = gmultiply(t,tr.trainMask);
valTargets = gmultiply(t,tr.valMask);
testTargets = gmultiply(t,tr.testMask);
trainPerformance = perform(net,trainTargets,y)
valPerformance = perform(net,valTargets,y)
testPerformance = perform(net,testTargets,y)

% View the Network
view(net)

% Plots
% Uncomment these lines to enable various plots.
%figure, plotperform(tr)
%figure, plottrainstate(tr)
%figure, ploterrhist(e)
%figure, plotregression(t,y)
%figure, plotresponse(t,y)
%figure, ploterrcorr(e)
%figure, plotinerrcorr(x,e)

% Closed Loop Network
% Use this network to do multi-step prediction.
% The function CLOSELOOP replaces the feedback input with a direct
% connection from the outout layer.
netc = closeloop(net);
netc.name = [net.name ' - Closed Loop'];
view(netc)
[xc,xic,aic,tc] = preparets(netc,{},{},T);
yc = netc(xc,xic,aic);
closedLoopPerformance = perform(net,tc,yc)

% Multi-step Prediction
% Sometimes it is useful to simulate a network in open-loop form for as
% long as there is known data T, and then switch to closed-loop to perform
% multistep prediction. Here The open-loop network is simulated on the
% known output series, then the network and its final delay states are
% converted to closed-loop form to produce predictions for 5 more
% timesteps.
[x1,xio,aio,t] = preparets(net,{},{},T);
[y1,xfo,afo] = net(x1,xio,aio);
[netc,xic,aic] = closeloop(net,xfo,afo);
[y2,xfc,afc] = netc(cell(0,5),xic,aic);
% Further predictions can be made by continuing simulation starting with
% the final input and layer delay states, xfc and afc.

% Step-Ahead Prediction Network
% For some applications it helps to get the prediction a timestep early.
% The original network returns predicted y(t+1) at the same time it is
% given y(t+1). For some applications such as decision making, it would
% help to have predicted y(t+1) once y(t) is available, but before the
% actual y(t+1) occurs. The network can be made to return its output a
% timestep early by removing one delay so that its minimal tap delay is now
% 0 instead of 1. The new network returns the same outputs as the original
% network, but outputs are shifted left one timestep.
nets = removedelay(net);
nets.name = [net.name ' - Predict One Step Ahead'];
view(nets)
[xs,xis,ais,ts] = preparets(nets,{},{},T);
ys = nets(xs,xis,ais);
stepAheadPerformance = perform(nets,ts,ys)

% Deployment
% Change the (false) values to (true) to enable the following code blocks.
% See the help for each generation function for more information.
if (false)
% Generate MATLAB function for neural network for application
% deployment in MATLAB scripts or with MATLAB Compiler and Builder
% tools, or simply to examine the calculations your trained neural
% network performs.
genFunction(net,'myNeuralNetworkFunction');
y = myNeuralNetworkFunction(x,xi,ai);
end
if (false)
% Generate a matrix-only MATLAB function for neural network code
% generation with MATLAB Coder tools.
genFunction(net,'myNeuralNetworkFunction','MatrixOnly','yes');
x1 = cell2mat(x(1,:));
xi1 = cell2mat(xi(1,:));
y = myNeuralNetworkFunction(x1,xi1);
end
if (false)
% Generate a Simulink diagram for simulation or deployment with.
% Simulink Coder tools.
gensim(net);
end




Buraya kadar sadece ağı kurup hazırlamış olduk. Vaktim olunca devamının ayrıntılarını da ekleyebilirim, konu hazırlamak kolay iş değilmiş. Hatamız varsa söyleyin lütfen düzeltelim, insanları yalan yanlış bilgilendirmek istemem.

Bizim şu an istediğimiz bu işlere yatkınlığı olan bir yardımseverin çıkması, birkaç sorumuza cevap alabilmek. Şu anki sıkıntımız, 15001. değeri bulabilmemize rağmem daha ileriki değerleri tahmin ettiremiyoruz. Cloose loop mu remove delay değeri ile mi ilgili olduğunu öğrenmek istiyoruz. Saygılar

Bu mesaja eklenen görseller:

< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi ugurcan709 -- 9 Mart 2016; 20:28:39 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Antor , @alicavuslu
A
8 yıl
Onbaşı

Yapay sinir ağlarında illa girişler ayrı çıkışlar ayrı olacak diye bir şart yok. Dinamik ve kaotik sistemler gibi. Kaotik sistemde bir örnek verecek olursak y(t) = f(y(t-1), y(t,2), ...) şeklinde olacaktır. Aslında senin sisteminde buna benzemekte. Şöyle bi data seti oluşturabilirsin. t anındaki örnek kendinden önceki 2 örnek değerine bağlı. Bu durumda senin excel tablona gore giriş çıkışları oluşturusak:
y(t-2) y(t-1) y(t)
3562279127 3710215571 3877469703
3710215571 3877469703 3876354871
3877469703 3876354871 ......

şeklinde olabilir. Ki ağ başarımını artırmak için daha fazla geçmiş veri örneği alman gerekebilir. Birde YSA'yı eğitmende önce normalizasyon yapmalısın. 15000. değeri test edebilmen için bu değerden önceki 2 girişi ağa giriş olarak vermelisin.





< Bu mesaj bu kişi tarafından değiştirildi alicavuslu -- 9 Mart 2016; 21:17:13 >
Bu mesaja 1 cevap geldi.
U
8 yıl
Yüzbaşı
Konu Sahibi

Peki hocam normal şu anki yöntemimizle %70 train %30 test yapıyoruz. Validation kullanmamıza gerek olmadığı söylendi. Şu an çoğu kod çalışıyor, YSA'nın tahmin ettiği %30 luk kısım ile excel'deki gerçek %30 luk kısmı karşılaştırp MAPE(ortalama minimum hata oranı) uyguladığımızda 2.9950 civarında olumlu sonuçlar alıyoruz. Ancak normalizasyon ve yeni değerlerin tahmini için tam olarak ne yapılacağını çözemedim.

1- Normalizasyondan kastınız sanırım excel'deki tüm değerleri MATLAB içerisinde belli iki değer arasına çekmek(-1 ile 1 yada 0 ile 1 arasına mesela) değil mi ?
2- Neden iki giriş verdiniz ? Bu giriş sayısı daha yüksek olabilir miydi ? Çünkü sanırım şu anda toolbox içerisinde bahsettiğiniz işlem halihazırda yapılıyor "input delay : 2" verince. Yani bu değeri 2 verince sanırım aynı şekilde ardışık olarak ilk ikisini alıp üçüncüyü test ediyor daha sonra ikinci ve üçüncüyü alıp dördüncüyü test ediyor gibi.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @alicavuslu
A
8 yıl
Onbaşı

Normalizasyondan kastım dediğin gibi belirli bir sınır aralığına almak. Genelde veri setinin mutlak maksimum değerine bölme işlemi yapılır.
2 tane geçmiş kısmını örnek olarak verdim. Bu değer dahada arttırılabilir ki bu senin ağ performansını artıracaktır.


Bu mesaja 1 cevap geldi.
U
8 yıl
Yüzbaşı
Konu Sahibi

Planımız otokorelasyon fonksiyonunu kullanmak hocam. 0 ile 1 arasında olacak tüm değerler. Örneğin otokorelasyon işleminin sonunda elde edilen verilerin içinden, değeri 0.90 üzerinde olan ilk en yüksek değerli 5 veriyi giriş olarak kullanmayı düşünüyoruz. Ancak şu anda takıldığımız nokta ileriyi tahmin ettirme işlemi. Attığım kodu incelediğinizde En altta iki bölüm var birisi "cloose loop" bölümü diğeri "Step Ahead Prediction" bölümü. Mantıken Step Ahead Prediction kısmının ileriyi tahmin etmesi lazım ancak elimizdeki kodu uyarlayamadık tam olarak.


Bu mesaja 2 cevap geldi.

Bu mesajda bahsedilenler: @alicavuslu
A
8 yıl
Onbaşı

Kodları biraz anlamaya çalışıp size dönüş yapmaya çalışacağım.