2016-03-17 20 views
6

Mam prostą ramkę danych składającą się z jednej kolumny. W tej kolumnie znajduje się 10320 obserwacji (liczbowych). Symuluję dane Time-Series, wstawiając dane do wykresu z oknem 200 obserwacji każdego. Oto kod do kreślenia.Jak korzystać z Theanets LSTM RNN na moich szeregach czasowych?

import matplotlib.pyplot as plt 
from IPython import display 
fig_size = plt.rcParams["figure.figsize"] 
import time 
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas 
fig, axes = plt.subplots(1,1, figsize=(19,5)) 
df = dframe.set_index(arange(0,len(dframe))) 
std = dframe[0].std() * 6 
window = 200 
iterations = int(len(dframe)/window) 
i = 0 
dframe = dframe.set_index(arange(0,len(dframe))) 
while i< iterations: 
    frm = window*i 
    if i == iterations: 
     to = len(dframe) 
    else: 
     to = frm+window 
    df = dframe[frm : to] 
    if len(df) > 100: 
     df = df.set_index(arange(0,len(df))) 
     plt.gca().cla() 
     plt.plot(df.index, df[0]) 
     plt.axhline(y=std, xmin=0, xmax=len(df[0]),c='gray',linestyle='--',lw = 2, hold=None) 
     plt.axhline(y=-std , xmin=0, xmax=len(df[0]),c='gray',linestyle='--', lw = 2, hold=None) 
     plt.ylim(min(dframe[0])- 0.5 , max(dframe[0])) 
     plt.xlim(-50,window+50) 
     display.clear_output(wait=True) 
     display.display(plt.gcf()) 
     canvas = FigureCanvas(fig) 
     canvas.print_figure('fig.png', dpi=72, bbox_inches='tight') 
    i += 1 
plt.close() 

Symuluje przepływ danych w czasie rzeczywistym i wizualizuje je. Chciałbym zastosować te dane RNN LSTM do danych w celu wykrycia anomalii bez nadzoru. Ponieważ robię to bez nadzoru, nie sądzę, że muszę podzielić swoje dane na szkolenia i zestawy testowe. Nie znalazłem zbyt wiele z tego, co ma sens do tej pory i zostały googling przez około 2 godziny. Mam tylko nadzieję, że wam pomożecie. Chcę również wstawić wyniki prognozowania RNN na wykresie i zdefiniować próg, który, jeśli błąd jest zbyt duży, wartości zostaną uznane za anomalie. Jeśli potrzebujesz więcej informacji, prosimy o komentarz i daj mi znać. Dziękuję Ci!

Odpowiedz

2

CZYTANIE

  1. Ci się neuronów, sieci LSTM są kompilacji połączonym LSTM Blocks których kształcenie odbywa się poprzez BackPropogation Through Time.
  2. Wykrywanie klasycznych anomalii za pomocą szeregów czasowych wymagało prognozowania wyjściowych szeregów czasowych w przyszłości (w jednym lub kilku punktach) i znajdowanie błędów w tych punktach z wartościami rzeczywistymi. Info Błąd powyżej progu będzie odzwierciedlać i amomly

ROZWIĄZANIE

Mimo to

  1. Masz trenować sieć więc trzeba szkoleniowe Zestawy i zestawów testowych zarówno
  2. Użyj N wejść do przewidywania M wyjść (decyduje o N i M z eksperymentami - wartości, dla których błąd treningu jest niski)
  3. Przewiń okno elementów (N + M) w danych wejściowych i użyj tej tablicy danych (N + M) elementów zwanych także ramkami trenować lub testować sieć.
  4. Zazwyczaj używamy 90% początkowej serii do treningu i 10% do testowania.

Ten schemat nie powiedzie jakby szkolenie nie jest właściwa będzie fałszywe błędy predykcji, które są nie-anomalia. Dlatego upewnij się, że zapewniłeś wystarczającą liczbę szkoleń i najważniejszych ramek treningowych shuffle i weź pod uwagę wszystkie odmiany.

Powiązane problemy