ARTIFICIAL INTELLIGENCE

Moduł Intelligence został stworzony w celu predykcji wartości parametrów istotnych z punktu widzenia utrzymania infrastruktury i systemów IT. Takie parametry to między innymi:

  • wykorzystanie zasobów dyskowych,
  • wykorzystanie zasobów sieciowych,
  • wykorzystanie mocy procesorów

W przyszłości planowane jest uruchomienie algorytmów umożliwiających wykrywanie anomalii np. niestandardowy ruch sieciowy, który może sugerować próby włamania.

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.

Podczas implementacji przeprowadzono szereg badań, które pozwoliły wstępnie skonfigurować hiperparametry algorytmów, jednak ich finalne strojenie powinno odbywać się na docelowym środowisku z uwzględnieniem charakterystyki analizowanych danych.

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 Artificial Intelligence przygotowane w module Intelligence można podzielić na dwie kategorie: Algorytmy klasyfikacji oraz 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 atrybutu „feature to analyze from search” z uwzględnieniem pozostałych wcześniej opisanych w dokumencie. Różnica pomiędzy średnimi SMA i GMA jest znana jako nierówność Cauchy’ego, co oznacza, że wartość SMA >= GMA.

Szczegółowy algorytm polega na iteracyjnego wyliczania średniej dla kolejnych okien czasowych.

Przykład działania algorytmu:

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

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

10

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)

10

Simple Moving Average Line (SMAL) / Geometric Moving Average Line (GMAL).
Krocząca średnia arytmetyczna (SMA) oraz średnia krocząca geometryczna (GMA). Są to algorytmy wyliczające średnią dla atrybutu „feature to analyze from search” z uwzględnieniem pozostałych wcześniej opisanych w dokumencie. Średnia dla okresów > niż najbliższy wynikający z wartości parametru time frame bierze do kalkulacji poprzednie średnie, co dla odległych predykcji powoduje wypłaszczenie się wykresu.

Ważną cechą tych algorytmów jest dostosowywanie się do trendów długoterminowych tzw. średnie wolne (dla dużych wartości parametru max probes) oraz krótkoterminowych średnie szybkie (dla małych wartości parametru max probes).


Linear Regression Shift (LRS)
Regresja liniowa z przesunięciem czasowym. Jest to algorytm regresji liniowej, która próbuje znaleźć linię prostą najbardziej dopasowaną do rozkładu analizowanych danych. 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.
Ze względu na swoją charakterystykę algorytm działa tylko dla jednej cechy tzn. w jednym czasie analizowana i szacowana jest tylko jedna i ta sama cecha.
Typowy algorytm regresji liniowej potrzebuje wartości x do oszacowania y. W naszym przypadku nie znamy wartości x, którą moglibyśmy podać na dowolny okres w przód. W związku z tym zaimplementowany w module Intelligence algorytm kryje w sobie dodatkową modyfikację. Modyfikacja ta polega na iteracyjnej interpolacji dla kolejnych okien czasowych.

10

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 szacuje wartość dla time frame 1Day. Do analizy wzięte zostaną zagregowane dane dla ostatnich 5 dni.
  • w drugim kroku szacuje wartość dla nowego time frame 2Day. Do analizy zostaną wzięte dane zagregowane dla 5 dwudniowych okresów (10 dni)
  • w kolejnym kroku szacuje wartość 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 szacowana jest wartość 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.


Linear Regression Shift Trend (LRST)
Regresja liniowa z przesunięciem czasowym oraz szacowanie wartości x dla funkcji y = ax + b. 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):

10

10

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)

Dla powyższych warunków:

  • w pierwszym kroku algorytm szacuje wartość y na najbliższy okres wynikający z time frame (dzień) oraz znajduje współczynnik a i b dla funkcji y = ax + b
  • W kolejnych krokach algorytm iteracyjnie szacuje wartości cechy storage_cpu dla kolejnych okresów poprzez podstawianie do „x” wartości „y” z bieżącego okresu.


Random Forest Regression Shift (RFRS)
Losowy las drzew decyzyjnych. Jest to przykład algorytmu regresji nieliniowej.

Na podstawie wartości cechy (w naszym przypadku poprzednia wartość prognozowanej cechy) automatycznie tworzone jest wiele losowych drzew decyzyjnych, które dają rozsądne, ale różne i niezależne szacunki wartości docelowej. „Zbiorcza średnia prognoza powinna byś znacznie bliższa poprawnej odpowiedzi niż prognozy poszczególnych drzew. To właśnie przypadkowość zapewnia niezależność tworzenia drzew decyzyjnych. Jest to kluczowa cecha losowego lasu decyzyjnego.”

10

10

Podobnie jak w algorytmie LRS zmodyfikowano algorytm szacowania, który polega na iteracyjnej interpolacji dla kolejnych okien czasowych.

Przykład działania algorytmu:

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

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 szacuje wartość dla time frame 1Day. Do analizy wzięte zostaną zagregowane dane dla ostatnich 5 dni.
  • w drugim kroku szacuje wartość dla nowego time frame 2Day. Do analizy zostaną wzięte dane zagregowane dla 5 dwudniowych okresów (10 dni)
  • w kolejnym kroku szacuje wartość 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 szacowana jest wartość 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”.

10

10

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


Porównanie wykresów dla omówionych algorytmów AI

10