Dodaj wpis w tym temacie
Spis tematów | Strona: 1 2 3 ... 23 24 Wyślij wiadomość do admina |
Przewiń wpisy ↓ | Prognoza MM z sieci neuronowej |
2012-01-04 (21:25) oxys Data rejestracji: 2011-11-28 Ilość postów: 25 | wpis nr 485 367 [ CZCIONKA SPECJALNA ] Adalbert Podczas uczenia sieci co podajesz jako wektory wejściowe i wyjściowe. Pytam się z ciekawości gdyż jakiś czas temu próbowałem prognozować lotto za pomocą sieci neuronowych. |
2012-01-04 (22:16) Adalbert Data rejestracji: 2009-03-19 Ilość postów: 675 | wpis nr 485 381 [ CZCIONKA SPECJALNA ] @oxys W ten weekend (dłuugi weekend) będę miał więcej czasu. Postaram się wrócić do tematu sieci neuronowych. |
2012-01-04 (22:24) Adalbert Data rejestracji: 2009-03-19 Ilość postów: 675 | wpis nr 485 387 [ CZCIONKA SPECJALNA ] Tylko pewniak 56 się wylosował: Do jutra Adalbert |
2012-01-05 (13:41) slawek001 Data rejestracji: 2005-02-24 Ilość postów: 6116 | wpis nr 485 487 [ CZCIONKA SPECJALNA ] Adalbert możesz bardziej obrazkowo podawać jak proponowane są liczby do wyjścia ? |
2012-01-05 (14:30) Adalbert Data rejestracji: 2009-03-19 Ilość postów: 675 | wpis nr 485 506 [ CZCIONKA SPECJALNA ] Sławek001 Możesz doprecyzować, tzn. wytłumaczyć mi, co masz na myśli pisząc: "Adalbert możesz bardziej obrazkowo podawać jak proponowane są liczby do wyjścia ?" 1. Bardziej obrazkowo - czy masz na myśli jakieś schematy, czy też screens (zrzuty ekranu)? 2. Liczby do wyjścia - czy chodzi o prognozę, czyli liczby, które są wynikiem obliczeń? W ten dłuższy weekend mam więcej czasu i postaram się w miarę czytelnie i najprościej opisać, w jaki sposób wykorzystuję sieć neuronową i jak przygotowuję zestaw danych wejściowych, jakie parametry są prognozowane. Będzie to trudne ponieważ na forum nie da się w sposób czytelny przedstawić wielu elementów graficznych w postaci *.jpg tabel, obliczeń itp. Zrobię, co będę mógł Pozdrawiam Adalbert |
2012-01-05 (18:10) slawek001 Data rejestracji: 2005-02-24 Ilość postów: 6116 | wpis nr 485 562 [ CZCIONKA SPECJALNA ] Adalbert Jak sądzę jestem chyba jedyną osobą na forum która nie wykonuje analiz wstecznych wykonuje tylko analizę " teraz " jest to może dziwne dla osób oglądających moje poczynania w poście Programiki - Wspomagacze.....G-16 ale na arkusz przelewam swoje pomysły z tego co widzę " teraz " w zachowaniu wylosowanych liczb a nie analizy jak liczby się zachowywały " kiedyś " bardziej obrazkowo ... może to być wykresy liczb będących wynikiem obliczeń po paru dniach może znajdę jakaś zależność którą akurat sieć nie widzi |
2012-01-11 (16:34) oxys Data rejestracji: 2011-11-28 Ilość postów: 25 | wpis nr 487 100 [ CZCIONKA SPECJALNA ] slawek001 W takim razie jak chcesz nauczyć jakąś sieć neuronową nie analizując wsteczne losowania. Co chcesz podać jako wektory wejściowe oraz wyjściowe podczas etapu uczenia? |
2012-01-11 (18:12) Adalbert Data rejestracji: 2009-03-19 Ilość postów: 675 | wpis nr 487 109 [ CZCIONKA SPECJALNA ] Witam. Kilka informacji, trochę szczegółów. 1. W tej chwili sieć wykonuje prognozę dzisiejszego losowania MM o 22:15, wyniki prognozy zamieszczę przed losowaniem 2. Nie miałem czasu przez ostatnie dni, więc stąd brak mojej aktywności. 3. Pierwsze, co robię to sumuję kolumnami wyniki losowań do losowania N-1 (ostatnie losowanie w bazie, które znam to losowanie N, a to które będzie prognozowane to losowanie N+1) Przykład poniżej: 4. Następnie wykorzystując Matlaba i zmodyfikowaną funkcję predict na podstawie sumy wylosowanych wyników prognozuję wykorzystując model AR (AutoRegressive) dla każdej kolumny wynik będący kolejną wartości sumy, czyli jaka będzie suma wylosowanych liczb w każdej kolumnie w kolejnym losowaniu N 5. Od tak otrzymanego wyniku w postaci jednego wiersza z 20 liczbami będącymi prognozą sumy wyników kolejnego losowania N (które znam, bo to jest ostatnie losowanie w bazie danych) odejmuję ostatni wiersz widoczny na załączonym obrazku (czyli ten z liczbami 235-265-218-261-171-229-249-212-432-198-198-211-249-310-226-316-282-288-209-235) 6. Wynikiem odejmowania jest 20 liczb, które są prognozą losowania N Ponieważ nie wiem ile archiwalnych losowań analizować i jaki ma być wykładnik potęgi modelu AR obliczenia wykonuję w dwóch pętlach for wykladnik_potegi 2:40 for ile_archiwalnych_wyników_wstecz_analizowac ... end end 7. W ten sposób za każdym razem otrzymuję prognozę kolejnego losowania, które jest ostatnim losowaniem w bazie, czyli losowanie N 8. Sprawdzam ile liczb trafiłem i jeżeli jest to 10 liczb lub więcej zapamiętuję w zmiennej matryca dwie liczby: wykładnik_potęgi, ile_archiwalnych_wyników_wstecz_analizować 9. Na podstawie tak utworzonej matrycy, powtarzam cały proces obliczeń, przy czym do modelu AR podstawiam z bazy archiwalnej po kolei wyniki określone zmienną ile_archiwalnych_wynikow_wstecz_analizowac, a jako wykładnik potęgi modelu AR odpowiadający temu zakresowi wykladnik_potegi 10. Wynikiem obliczeń jest prognoza kolejnego losowania, z tym, że tych prognoz jest tyle ile rekordów w matrycy 11. Poniżej kod całego programu w języku Matlaba 2011a. Program wczytuje dwa arkusze Excela: Mutli1.xls - arkusz zawierający wyniki niesortowanych losowań MM (tylko same wyniki począwszy od komórki A1 - bez daty, numeru losowania) do losowania N-1, czyli przedostatniego Mutli.xls - to sam, jak wyżej, tylko w tej bazie na końcu dopisane jest ostatnie losowanie 12. Kod programu (Matlab 2011a) clc; clear global clear memory clear all close all echo off warning('off') archiwum=xlsread('Multi1.xls'); %archiwum=sort(archiwum,2); %można posortować wyniki, ale tego jeszcze nie %testowałem init='e'; ts=1; k = 1; zakres_liczb=[1:80]; kolejne=1; %% prognoza ostatniego znanego losowania (losowanie N) for order=2:40 for nowe=2*order:200 wyniki=archiwum(end-nowe:end-1,:); wyniki_sum=cumsum(wyniki); for liczba=1:20 y=wyniki_sum(:,liczba); ata = iddata(y,[],ts); model = ar(ata,order); YP = forecasta(model,ata,k, init); los(1,liczba)= round(YP.y); end bedzie=los-wyniki_sum(end,:); bedzie=sort(bedzie,2); for i=1:size(bedzie,2) if ismember(bedzie(1,i),zakres_liczb) prognoza(1,i)=bedzie(1,i); end end pozycja=1; zaklad(1,1)=0; for i=1:size(prognoza,2) if prognoza(1,i)~=0 if pozycja==1 zaklad(1,1)=prognoza(1,i); pozycja=pozycja+1; else if prognoza(1,i)>prognoza(1,i-1) zaklad(1,pozycja)=prognoza(1,i); pozycja=pozycja+1; end end end end [jest, pozycja]=ismember(zaklad,archiwum(end,:)); trafiono=cumsum(jest); if trafiono(1,end)>9 matryca(kolejne,1)=order matryca(kolejne,2)=nowe matryca(kolejne,3)=trafiono(1,end) matryca(kolejne,4)=size(zaklad,2) kolejne=kolejne+1; end clear wyniki wyniki_sum end end clear archiwum %% Prognoza losowanie N+1 (czyli tego, co dopiero będzie) na podstawie matrycy [order, nowe] % order to wykladnik_potegi modelu AR % nowe to zakres analizowanych ostatnich losowań, czyli ile losowań wstecz % analizujemy archiwum=xlsread('Multi.xls'); %archiwum=sort(archiwum,2); %można posortować wyniki, ale tego jeszcze nie %testowałem kolejne=1; for start=1:size(matryca,1) wyniki=archiwum(end-matryca(start,2):end-1,:); wyniki_sum=cumsum(wyniki); for liczba=1:20 y=wyniki_sum(:,liczba); ata = iddata(y,[],ts); model = ar(ata,matryca(start,1)); YP = forecasta(model,ata,k, init); los(1,liczba)= round(YP.y); end bedzie=los-wyniki_sum(end,:); bedzie=sort(bedzie,2); for i=1:size(bedzie,2) if ismember(bedzie(1,i),zakres_liczb) prognoza(1,i)=bedzie(1,i); end end pozycja=1; zaklad(1,1)=0; for i=1:size(prognoza,2) if prognoza(1,i)~=0 if pozycja==1 zaklad(1,1)=prognoza(1,i); pozycja=pozycja+1; else if prognoza(1,i)>prognoza(1,i-1) zaklad(1,pozycja)=prognoza(1,i); pozycja=pozycja+1; end end end end for i=1:size(zaklad,2) losowanie(kolejne,i)=zaklad(1,i); end [jest, pozycja]=ismember(zaklad,archiwum(end,:)); trafiono=cumsum(jest); podsumowanie(start,1)=trafiono(1,end) podsumowanie(start,2)=size(zaklad,2) clear wyniki wyniki_sum kolejne=kolejne+1; end Pozostałe funkcje wykorzystywane w programie: zmodyfikowana funkcja predict: function YP = forecasta(model,data,K, Init) %FORECAST Forecast a time series K steps into the future % % YF = FORECAST(MODEL,DATA,K) % % DATA: Existing data up to time N, an IDDATA object. % MODEL: The model as any IDMODEL object, IDPOLY, IDSS, IDARX or IDGREY. % K: The time horizon of forecasting, a positive integer with the number of samples % YF: The forecasted output after time N, an IDDATA object with output % only, covering the time span N+1:N+K. % % YF = FORECAST(MODEL,DATA,K, INIT) % wehere INIT is 'z' or 'e' allows specification of initial conditions (at % time = Data.SamplingInstants(1)). % % See also idmodel/predict, which computes a fixed horizon prediction % along the existing data record. [N, ny] = size(data); % assume data is iddata Mss = idss(model); ord = size(pvget(Mss,'A'),1); if ord>N error('Forecast:TooFewSamples','The data should contain at least %d samples.',ord) end if nargin<4, Init = 'e'; end yp = zeros(K,ny); mp = getPredictor(Mss); [Ap,Bp,Cp] = ssdata(mp); if Init=='z' xt = ltitr(Ap, Bp, data.y); % use zero init x0 = xt(end,:); else % Init == 'e' [A1,B1,C1,D1,K1] = ssdata(Mss); x00 = x0est(data.y,A1,B1,C1,D1,K1,size(C1,1),size(B1,2),250e3,eye(size(C1,1))); x0 = ltitr(Ap,Bp,data.y,x00); x0 = x0(end,:); end u = [data.y(end,:); zeros(1,ny)]; for ct = 1:K xt = ltitr(Ap, Bp, u, x0); x0 = xt(end,:); yp(ct,:) = (Cp*x0.').'; u = [yp(ct,:); zeros(1,ny)]; end YP = data; YP.y = yp; YP.u = []; YP.Name = ''; YP.UserData = []; YP.Notes = ''; YP.Tstart = data.Ts*(N+1); Funkcja obliczająca współczynnik predykcji modelu idss %------local function ----------------------------------- function mp = getPredictor(sysd) [A, B, C, D, K] = ssdata(sysd); Ts = sysd.Ts; Ny = size(D,1); mp = idss(A-K*C, [K B-K*D], C, [zeros(Ny), D], zeros(size(A,1),Ny), 'Ts', Ts); mp.InputDelay = [zeros(Ny,1); sysd.InputDelay]; Na razie tyle, czekam na koniec obliczeń i zamieszczam prognozę |
2012-01-11 (21:13) Adalbert Data rejestracji: 2009-03-19 Ilość postów: 675 | wpis nr 487 155 [ CZCIONKA SPECJALNA ] Bez dalszej obróbki zestaw liczb: Podsumowanie po losowaniu o 22:15 |
2012-01-11 (22:22) Adalbert Data rejestracji: 2009-03-19 Ilość postów: 675 | wpis nr 487 177 [ CZCIONKA SPECJALNA ] I tak to wyszło Rewelacji nie ma |
2012-01-12 (11:45) Adalbert Data rejestracji: 2009-03-19 Ilość postów: 675 | wpis nr 487 246 [ CZCIONKA SPECJALNA ] Tym razem dwa zestawy liczb. Zestaw pierwszy wydaje się być najbardziej obiecujący ponieważ został przez program wytypowany 12x przy zmieniających się parametrach modelu AR Drugi zestaw zawiera więcej prognozowanych układów liczbowych, każdy z nich został przez program wytypowany 11x. Tak, jak wcześniej pisałem prognoza wykorzystuje Model AR w którym zmieniającymi się parametrami są: - współczynnik potęgowania modelu (wykładnik potęgi) - zakres analizowanych losowań od ostatniego znanego wstecz. Ponieważ nie znam tych wartości obliczenia wykonywane są w dwóch zagnieżdżonych pętlach for wykładnik_potęgi =1:50 for zakres_analizowanych_losowan=2:500 .... end end a wynik każdej prognozy jest zapamiętywany w tablicy. Jak łatwo policzyć tych prognoz będzie 50x(500-2). Kolejnym krokiem jest wybranie z tych wszystkich prognoz najczęściej powtarzających się prognoz liczb (nie pojedynczych liczb, a prognoz losowania). W ten sposób z całej bazy otrzymanych prognoz wybrałem dwa zestawy: 1. Zestaw 1 zawiera tylko jedną prognozę, którą program wytypował 12x 2. Zestaw 2 zawiera tych prognoz więcej, bo aż 13 przy czym każdy zestaw liczb w całej bazie prognoz wystąpił 11x. Z drugiego zestawu liczb wybrałem dodatkowo najczęściej powtarzające się liczby. W takim razie nie pozostaje nic innego, jak czekanie na losowanie o 14:00 Adalbert |
2012-01-12 (12:43) slawek001 Data rejestracji: 2005-02-24 Ilość postów: 6116 | wpis nr 487 258 [ CZCIONKA SPECJALNA ] Adalbert możesz podawać graficznie jak wyszło ale tylko te zestawy gdzie jest 18 liczb ? |
2012-01-12 (13:20) Adalbert Data rejestracji: 2009-03-19 Ilość postów: 675 | wpis nr 487 264 [ CZCIONKA SPECJALNA ] @slawek0001 Nie mogę robić podsumowania tylko dla wybranych zestawów, robię podsumowanie dla wszystkich. Mogę natomiast przedstawić podsumowanie w ten sposób, żeby widać było ile liczba zostało trafione w prognozie zawierającej np, 16, 17, 18, 19 i 20 liczb. Tak zrobię po tym losowaniu Pozdrawiam Adalbert |
2012-01-12 (13:26) slawek001 Data rejestracji: 2005-02-24 Ilość postów: 6116 | wpis nr 487 266 [ CZCIONKA SPECJALNA ] Adalbert teraz już wychodzę do pracy będę jutro ale już widzę zestawy 18 liczbowe dają 30% wyjścia i ciekawi mnie jak takie wyjścia układają się w zestawach |
2012-01-12 (16:07) Adalbert Data rejestracji: 2009-03-19 Ilość postów: 675 | wpis nr 487 314 [ CZCIONKA SPECJALNA ] Podsumowanie prognozy Znowu bez rewelacji, ale trzeba walczyć dalej Pracuję nad kolejną prognozą Pozdrawiam Adalbert |
2012-01-12 (20:24) Adalbert Data rejestracji: 2009-03-19 Ilość postów: 675 | wpis nr 487 387 [ CZCIONKA SPECJALNA ] Prognoza na 22:15 |
2012-01-12 (22:21) Adalbert Data rejestracji: 2009-03-19 Ilość postów: 675 | wpis nr 487 438 [ CZCIONKA SPECJALNA ] Chyba spadek formy, jutro będzie lepiej: |
2012-01-13 (10:39) slawek001 Data rejestracji: 2005-02-24 Ilość postów: 6116 | wpis nr 487 537 [ CZCIONKA SPECJALNA ] Adalbert nie zmieniaj ustawień na jednych ustawieniach podawaj choć przez 14 dni |
2012-01-13 (20:18) Adalbert Data rejestracji: 2009-03-19 Ilość postów: 675 | wpis nr 487 687 [ CZCIONKA SPECJALNA ] Wygląda to dziwnie, ale coś się w losowaniach zmieniło. Nic więcej sieć nie wytypowała Pierwszy zestaw wytypowany tylko 11x Drugi zestaw wytypowany tylko 2x Pozdrawiam Adalbert |
2012-01-13 (20:22) Adalbert Data rejestracji: 2009-03-19 Ilość postów: 675 | wpis nr 487 689 [ CZCIONKA SPECJALNA ] Oczywiście trzeciej prognozy w drugim zestawie nie ma, tzn. tego: 21-25-27-31-34-35-37-38-39-40-42-45-47-51-53-55-61-62 bo jest w pierwszym zestawie. Spieszyłem się, bo z pracy wróciłem po 18:00 |
| Dodaj wpis w tym temacie | Spis tematów | Wyniki lotto | Strona: 1 2 3 ... 23 24 Wyślij wiadomość do admina |