Intelligence

Artificial Intelligence to centrum obliczeniowe Energy Logserver. Stworzyliśmy moduł, który pozwala w prosty sposób wykorzystać algorytmy matematyczne na zebranych danych. Głównym zadaniem Artificial Intelligence jest prowadzenie kalkulacji dla przyszłych danych, na bazie wartości historycznych. Prowadzona predykcja może odbywać się o mechanizmy uśredniające, tworzące funkcje liniowe lub też poprzez naukę i klasyfikację danych.

Wyliczanie predykcji może być wykorzystane do określanie przyszłego zapotrzebowania na przestrzeń dyskową, odnajdywanie poziomu odniesienia dla pomiarów czasów odpowiedzi aplikacji lub prognoza trendu liczby użytkowników pracujących w aplikacji.
Moduł Intelligence został przygotowany w oparciu o jedną z najlepszych bibliotek udostępniających algorytmy nauczania maszynowego – Apache Spark. Część algorytmów zostało przygotowanych jako autorskie rozwiązanie.

 

Ideą modułu AI jest udostępnienie matematycznych algorytmów użytkownikowi w taki sposób aby w kilki polach mógł mieć wpływ na sposób liczenia nowych wartości i cały przebieg algorytmu. W oknie użytkownika możemy wybrać liczbę próbek dla których pracuje algorytm oraz zakres danych który powinien zostać zwrócony z obliczeń.
Z uwagi na charakterystykę zaimplementowanych algorytmów ważne jest, aby zapewnić na środowisku produkcyjnym dobrej jakości dane za jak najdłuższy okres. Czym większy zbiór danych tym większe prawdopodobieństwo prawidłowego prognozowania.

Dostępne algorytmy sztucznej inteligencji i ich charakterystyki

Algorytmy AI przygotowane w module Intelligence można podzielić na dwie kategorie:
• Algorytmy klasyfikacji
• Algorytmy regresji

Algorytmy klasyfikacji, które umożliwiają określanie klasy danych na podstawie wielu dostępnych cech. Na przykład na podstawie danych dotyczących terenu, gleby, opadów, itp. można określić dla jakiego rodzaju lasu są to najlepsze warunki. Te algorytmy nie biorą pod uwagę czasu, w którym powstały dane, czyli nie analizują historii danych.

Multi Layer Perceptron (MLP)
jest to algorytm sztucznej sieci neuronowej (ANN). Wykorzystywany jest tu proces nauczania z nadzorem (czyli znana jest klasa, której rozpoznawania algorytm się uczy). Podczas nauki dane dzielone są na dane uczące i testowe. Istnieje możliwość utworzenia sieci, która będzie miała do 3 warstw ukrytych (istnieje możliwość rozszerzenia o kolejne warstwy, ale ma to ogromny wpływ na czas przetwarzania danych). Zostały zaimplementowane dobre praktyki dotyczące obliczania odpowiedniej ilości neuronów w poszczególnych ukrytych warstwach ANN. Algorytm nadaje się do wykrywania znanych klas zdarzeń.

Algorytmy regresji, natomiast umożliwiają przewidywanie wartości cechy na podstawie jej wartości historycznych. Na przykład na podstawie danych historycznych dotyczących wykorzystania zasobów dyskowych możemy przewidzieć ich wykorzystanie w przyszłości. Niektóre z tych algorytmów poszukują trendów i na ich podstawie przygotowują predykcję.

Simple Moving Average (SMA) / Geometric Moving Average (GMA).
Krocząca średnia arytmetyczna (SMA) oraz średnia krocząca geometryczna (GMA). Są to algorytmy wyliczające średnią dla wartości „feature to analyze from search”. Szczegółowy algorytm polega na iteracyjnego wyliczania średniej dla kolejnych okien czasowych.

Simple Moving Average

Dane wejściowe:

  • time frame = 1 hour (jedena godzina)
  • max probes = 1 (godzina)
  • feature to analyze from search = RTA  (round trip time)
  • max predictions = 40 (godzin)

Algorytm iteracyjnie wylicza średnią czasu odpowiedzi serwera dla kolejnych okresów poprzez automatyczne zwiększanie okna czasowego – time frame.

 

Tak wyliczone wartości mogą służyć jako poziom odniesienia podczas porównania nowych próbek i ich oceny czy odbiegają znacząco od predykcji czy też mieszczą się z założeniach błędu.

Simple Moving Average Line
Dane wejściowe:
• time frame = 1 hour (jedena godzina)
• max probes = 40 (godzina)
• feature to analyze from search = RTA (round trip time)
• max predictions = 40 (godzin)

Różnicą pomiędzy tymi algorytmami jest fakt, że funkcja Simple Moving Average Line bierze do wyliczeń w swoich kolejnych iteracjach wyliczone wartości z poprzedniego kroku.

Linear Regression Shift

Kolejnym typem estymacji wartości przyszłych jest regresja liniowa Linear Regression Shift. Jest to algorytm, który próbuje znaleźć linię prostą najbardziej dopasowaną do rozkładu analizowanych danych, w zadanym przedziale. Algorytm znajduje funkcję y = ax + b. Algorytm do nauczania wartości analizowanej cechy „feature to analyze from search” analizuje jej wartość z poprzedniego okresu wskazanego w parametrze time frame, czyli poprzednia wartość służy do szacowania wartości na kolejny okres.

Dane wejściowe:

  • time frame = 1 hour (jedena godzina)
  • max probes = 40 (godzina)
  • feature to analyze from search = RTA  (round trip time)
  • max predictions = 40 (godzin)

Odmianą algorytmu LRS jest Linear Regression Shift Trend (LRST)
Regresja liniowa z przesunięciem czasowym oraz szacowanie wartości x dla funkcji y = ax + b z całego zbioru wyników. Algorytm ten wykorzystuje poprzednio oszacowane wartości do szacowania przyszłych. Regresja liniowa szuka funkcji y = Ax + B wykorzystując metodę najmniejszych kwadratów (szuka linii na lub przy której jest najwięcej punktów danych). W wyniku wyliczeń wartości A oraz B są zachowywane w indeksie co pozwana na uruchomienie alertu, gdy kąt nachylenia linii predykcji (parametr B) jest duży.

Random Forest Regression Shift (RFRS)
Zmienny las drzew decyzyjnych jest przykładem algorytmu regresji nieliniowej, który ucząc się przebiegu na podstawie wartości historycznych próbuje go odwzorować w przyszłości. Algorytm zmiennych drzew decyzyjnych to zaawansowany mechanizm grupowania wartości i tworzenia na podstawie historii grafu, który z możliwie najlepiej obrazuje nam przebieg w przyszłości. Ważną cechą tego algorytmu jest fakt, iż próbuje on odwzorować historyczny trend, z zachowaniem typowych cech dla określonych dni czy godzin pracy. Dzięki temu porównywanie wartości rzeczywistych do tak przedstawionej predykcji pozwala na wykrywanie anomalii względem normalnego zachowania naszej infrastruktury.

Dane wejściowe:
• time frame = 1 hour (jedena godzina)
• max probes = 5 (godzin)
• feature to analyze from search = RTA (round trip time)
• max predictions = 40 (godzin)

Gdy nieco zmienimy liczbę próbek przeznaczoną do nauki otrzymamy lepsze lub gorsze dopasowanie do naszych danych.

Dane wejściowe:

  • time frame = 1 hour (jedena godzina)
  • max probes = 20 (godzin)
  • feature to analyze from search = RTA  (round trip time)
  • max predictions = 40 (godzin)

 

Algorytm iteracyjnie szacuje wartości cechy storage_cpu dla kolejnych okresów poprzez automatyczne zwiększanie okna czasowego – time frame.

Dla powyższych warunków:

  • w pierwszym kroku algorytm wylicza średnią dla time frame 1Day. Do analizy wzięte zostaną zagregowane dane dla ostatnich 5 dni.
  • w drugim kroku wylicza średnią dla nowego time frame 2Day. Do analizy zostaną wzięte dane zagregowane dla 5 dwudniowych okresów (10 dni)
  • w kolejnym kroku wylicza średnią dla nowego time frame 3Day. Do analizy zostaną wzięte dane zagregowane dla 5 trzydniowych okresów (15 dni)
  • w kolejnych krokach zwiększana jest wartość nDay, i szacunki dla kolejnego okresu
  • w ostatnim kroku wyliczana jest średnia dla ostatniego okresu time frame 180Day. Do analizy zostaną wzięte dane zagregowane dla 5ciu 180-dniowych okresów (900 dni)

 

Jak widać na powyższym przykładzie potwierdza się wcześniejsza uwaga dotycząca potrzeby długiej historii danych niezbędnych do predykcji.

Trend
Jest to autorskie rozwiązanie, które umożliwia narysowanie linii trendu dla cechy „feature to analyze from search”. Algorytm na podstawie wprowadzonych danych znajduje współczynniki a i b dla funkcji liniowej. Na tej podstawie dokonuje predykcji przyszłych wartości.

Przykład działania algorytmu:
• time frame = Day (jeden dzień)
• max probes = 5 (dni)
• feature to analyze from search = storage_usage
• max predictions = 30 (dni)
• threshold = -1

Algorytm znajduje wartości dla pierwszego rekordu oraz ostatniego. Na tej podstawie wylicza współczynnik kierunkowy funkcji y = ax + b. Następnie wyliczany jest współczynnik b. W kolejnych krokach iteracyjnie pod x podstawiana jest liczba okresów predykcji, aż do osiągnięcia wartości „max predictions”.

Na wykresie widoczne są dwa okna z wykresami. Dolne okno prezentuje rzeczywiste wartości historyczne dla cechy, a wykres górny pokazuje linię trendu z predykcją wartości na kolejne 30 dni.

Algorytm Trend może również działać w trybie poszukiwania momentu przekroczenia wartości granicznej określonej przez użytkownika.

Przykład działania algorytmu:

  • time frame = Day (jeden dzień)
  • max probes = 5 (dni)
  • feature to analyze from search = storage_usage
  • max predictions = 30 (dni)
  • threshold = 100