Sztuczna inteligencja/SI Moduł 11 - Zadanie i metody regresji

Z Studia Informatyczne
Wersja z dnia 09:27, 5 wrz 2023 autorstwa Luki (dyskusja | edycje) (Zastępowanie tekstu – „,</math>” na „</math>,”)
Przejdź do nawigacjiPrzejdź do wyszukiwania


Metody regresji

W rozdziale tym zajmiemy się nieco dokładniej regresyjnym modelem aproksymacji, w którym aproksymowana funkcja ma postać

Parser nie mógł rozpoznać (błąd składni): {\displaystyle f: R^n \rightarrow R \} , (1)

W nieco ogólniejszym sformułowaniu, o regresji mówi się również wówczas gdy poszukuje się aproksymacji odwzorowania Parser nie mógł rozpoznać (błąd składni): {\displaystyle R^n \rightarrow R^m \} ,. Jeśli jednak nie zaznaczono inaczej, zakłada się postać funkcji (1).

Kwadratowa funkcja błędu

Załóżmy, że zbiór Parser nie mógł rozpoznać (błąd składni): {\displaystyle \Omega \} , tworzą funkcje Parser nie mógł rozpoznać (błąd składni): {\displaystyle D\subseteq R^n \} ,, przy czym każda funkcja z Parser nie mógł rozpoznać (błąd składni): {\displaystyle \Omega \} , jest całkowalna z kwadratem w Parser nie mógł rozpoznać (błąd składni): {\displaystyle D \} ,. Przyjmiemy typowe założenie, że w zbiorze Parser nie mógł rozpoznać (błąd składni): {\displaystyle \Omega \} , obowiązuje metryka

Parser nie mógł rozpoznać (błąd składni): {\displaystyle |f_1, f_2| = \int_D [f_1({\mathbf x})-f_2({\mathbf x})]^2 d {\mathbf x} \} , (2)

czyli błąd kwadratowy. Założymy także, że próbkowy błąd aproksymacji jest błędem średniokwadratowym

Parser nie mógł rozpoznać (błąd składni): {\displaystyle e_S(f_1, f_2) = \frac{1}{N} \sum_{{\mathbf x} \in A} [f_1({\mathbf x})-f_2({\mathbf x})]^2 \} , (3)

gdzie Parser nie mógł rozpoznać (błąd składni): {\displaystyle N \} , jest liczebnością zbioru Parser nie mógł rozpoznać (błąd składni): {\displaystyle S \subset D \} ,, będącego zbiorem próbek.

Parametryczny model regresji

Załóżmy, że funkcja aproksymująca ma postać

Parser nie mógł rozpoznać (błąd składni): {\displaystyle h: R^n \times R^k \rightarrow R, \} , (4)

co oznacza, że przyjmuje ona Parser nie mógł rozpoznać (błąd składni): {\displaystyle n+k \} , argumentów. Te dodatkowe Parser nie mógł rozpoznać (błąd składni): {\displaystyle k \} , argumentów (dodatkowe w porównaniu z Parser nie mógł rozpoznać (błąd składni): {\displaystyle n \} , argumentami funkcji z Parser nie mógł rozpoznać (błąd składni): {\displaystyle \Omega \} ,) stanowi zbiór parametrów funkcji aproksymującej, a sama funkcja Parser nie mógł rozpoznać (błąd składni): {\displaystyle h \} , definiuje całą rodzinę funkcji Parser nie mógł rozpoznać (błąd składni): {\displaystyle G \subseteq \Omega \} ,, przy czym każda funkcja Parser nie mógł rozpoznać (błąd składni): {\displaystyle g \in G \} , jest wyznaczona przez zbiór Parser nie mógł rozpoznać (błąd składni): {\displaystyle k \} , wartości parametrów. W ten sposób, zadanie poszukiwania takiej funkcji Parser nie mógł rozpoznać (błąd składni): {\displaystyle g \in G \} ,, dla której błąd aproksymacji jest najmniejszy, da się sprowadzić do zadania poszukiwania Parser nie mógł rozpoznać (błąd składni): {\displaystyle k \} ,-elementowego wektora wartości parametrów. Innymi słowy, zadanie regresji parametrycznej jest zadaniem przeszukiwania przestrzeni Parser nie mógł rozpoznać (błąd składni): {\displaystyle R^k \} , w celu znalezienia punktu, dla którego funkcja błędu przyjmuje minimum - punkt ten jest wektorem wartości parametrów funkcji Parser nie mógł rozpoznać (błąd składni): {\displaystyle h \} ,.

Funkcja reszt i gradient funkcji błędu

Powstaje pytanie - czy można podać warunki, które powinien spełniać punkt - wektor parametrów modelu - dla którego błąd jest minimalny? Odpowiedź na nie jest twierdząca.

Załóżmy, że funkcja Parser nie mógł rozpoznać (błąd składni): {\displaystyle h \} , jest różniczkowalna względem swoich parametrów. Wówczas można skorzystać z warunku koniecznego istnienia minimum funkcji w punkcie, który mówi że jeśli różniczkowalna funkcja Parser nie mógł rozpoznać (błąd składni): {\displaystyle g:R^k \rightarrow R \} , przyjmuje minimum w punkcie Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\mathbf x}^* \} ,, to dla każdego Parser nie mógł rozpoznać (błąd składni): {\displaystyle i=1,...,k \} , mamy Parser nie mógł rozpoznać (błąd składni): {\displaystyle \left ( \frac{\partial f}{\partial x_i} \right ) ({\mathbf x}^*) =0 \} ,. Innymi słowy, gradient funkcji Parser nie mógł rozpoznać (błąd składni): {\displaystyle g \} , zeruje się w punkcie Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\mathbf x}^* \} ,.

W celu znalezienia punktu, w którym funkcja przyjmuje swoje minimum, należy poszukiwać takich punktów, dla których gradient się zeruje, a jeden z nich będzie poszukiwanym punktem.

W przypadku modelu danego funkcją Parser nie mógł rozpoznać (błąd składni): {\displaystyle h \} ,, interesować nas będzie gradient funkcji błędu (której minimum poszukujemy) względem wartości Parser nie mógł rozpoznać (błąd składni): {\displaystyle k \} , parametrów. Oznaczmy wektor parametrów przez Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathbf p \} , i wektor argumentów przez Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathbf x \} ,, zatem funkcja aproksymująca jest oznaczana jako Parser nie mógł rozpoznać (błąd składni): {\displaystyle h({\mathbf x},{\mathbf p}) \} ,. Dla wygody wprowadźmy także funkcję reszt Parser nie mógł rozpoznać (błąd składni): {\displaystyle r:R^n \times R^k \rightarrow R \} ,, która jest dana wzorem Parser nie mógł rozpoznać (błąd składni): {\displaystyle r({\mathbf x},{\mathbf p})=h({\mathbf x},{\mathbf p}) - f({\mathbf x}) \} ,. Błąd średniokwadratowy dla zbioru Parser nie mógł rozpoznać (błąd składni): {\displaystyle S \subset D \} , wynosi

Parser nie mógł rozpoznać (błąd składni): {\displaystyle e_S({\mathbf p})= \frac{1}{N} \sum_{{\mathbf x} \in S} [r({\mathbf x},{\mathbf p})]^2 \} , (5)

Zauważmy, że błąd ten jest funkcją wartości parametrów Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathbf p \} ,.

Gradient próbkowego błędu średniokwadratowego względem parametrów wynosi

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \frac{\partial e_S({\mathbf p})}{\partial p_i}= \frac{1}{N} \sum_{{\mathbf x} \in S} 2 r({\mathbf x},{\mathbf p}) \frac{\partial r({\mathbf x},{\mathbf p}) }{\partial p_i} \} , (6)

co, gdy uwzględnimy postać Parser nie mógł rozpoznać (błąd składni): {\displaystyle \frac{\partial r({\mathbf x},{\mathbf p}) }{\partial p_i} \} ,, prowadzi do

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \frac{\partial e_S({\mathbf p}) }{\partial p_i}= \frac{2}{N} \sum_{{\mathbf x} \in S} r({\mathbf x},{\mathbf p}) \frac{\partial h({\mathbf x},{\mathbf p}) }{\partial p_i} \} , (7)

Reguła delta

Reguła delta jest przykładem wykorzystania warunku koniecznego istnienia minimum funkcji w punkcie, do skonstruowania prostego algorytmu poszukiwania. Zasada metody jest następująca - należy wybrać pewien początkowy wektor parametrów, obliczyć gradient funkcji błędu względem tego wektora i jeśli gradient nie jest zerowy, należy zmodyfikować wartości parametrów dodając do nich wartości wyprowadzone z gradientu. Po wykonaniu modyfikacji, powyższe czynności (począwszy od obliczania gradientu) należy powtarzać aż do osiągnięcia zerowego gradientu.

Tytułowa „delta” w nazwie reguły jest wyrażeniem

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \Delta({\mathbf x},{\mathbf p}) = \frac{\partial h({\mathbf x},{\mathbf p}) }{\partial p_i} \} , (8)

i jak łatwo się przekonać, wzór na gradient błędu próbkowego można przepisać jako

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \frac{\partial e_S({\mathbf p}) }{\partial p_i}= \frac{2}{N} \sum_{{\mathbf x} \in S} r({\mathbf x},{\mathbf p}) \Delta({\mathbf x},{\mathbf p}) \} , (9)

Algorytm uczenia z nauczycielem, wykorzystujący regułę delta, jest podany poniżej. W algorytmie tym Parser nie mógł rozpoznać (błąd składni): {\displaystyle T \} , oznacza zbiór trenujący, Parser nie mógł rozpoznać (błąd składni): {\displaystyle ||\cdot|| \} , oznacza normę wektora (typowo jest to norma euklidesowa), zaś Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varepsilon \} , i Parser nie mógł rozpoznać (błąd składni): {\displaystyle \eta \} , są parametrami liczbowymi określanym przez użytkownika, o wartościach dodatnich.

  1. Wybierz wektor parametrów Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\mathbf p}^0 \} ,, Parser nie mógł rozpoznać (błąd składni): {\displaystyle t=0 \} ,.
  2. Oblicz Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\mathbf d}^t= \frac{1}{N} \sum_{{\mathbf x} \in T} r({\mathbf x},{\mathbf p}^{t}) \Delta({\mathbf x},{\mathbf p}^t) \} ,.
  3. Jeżeli Parser nie mógł rozpoznać (błąd składni): {\displaystyle ||{\mathbf d}^t||<\varepsilon \} , lub zakończ działanie, w przeciwnym przypadku przejdź do 4.
  4. Zmodyfikuj wektor parametrów Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\mathbf p}^{t+1}={\mathbf p}^{t}-\eta {\mathbf d}^{t} \} ,
  5. Zwiększ indeks iteracji Parser nie mógł rozpoznać (błąd składni): {\displaystyle t:=t+1 \} , i przejdź do 2

Uczenie polega na modyfikacjach wektora parametrów. Informacja przekazywana przez nauczyciela (który dostarcza zbioru trenującego) jest wykorzystywana do obliczenia wektora poprawek Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\mathbf d}^t \} ,, a faza uczenia jest związana z wykonaniem kroku 4, będącego modyfikacją wektora parametrów o wektor poprawek.

Można udowodnić, że jeśli współczynnik uczenia Parser nie mógł rozpoznać (błąd składni): {\displaystyle \eta \} , dąży do zera, to algorytm reguły delta jest zbieżny do punktu, którego odległość od jednego z minimów funkcji błędu dąży do zera. Potocznie mówiąc, algorytm reguły delta jest zbieżny do jednego z minimów lokalnych funkcji błędu. Jeśli minimów takich jest wiele i jeśli algorytm reguły delta jest wielokrotnie uruchamiany z różnym startowym zestawem parametrów Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\mathbf p}^0 \} ,, to należy liczyć się z tym, że za każdym razem może być osiągane inne minimum lokalne. Przy tym warto zauważyć, że dla konkretnego startowego zestawu parametrów będzie to zawsze to samo minimum lokalne.

Model liniowy i modele „składane”

Szczególne miejsce wśród modeli regresji zajmują modele liniowe, które mają formę równania liniowego

Parser nie mógł rozpoznać (błąd składni): {\displaystyle g({\mathbf x},{\mathbf p})= \sum_{i=1}^n p_i x_i + p_0 \} , (10)

gdzie Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\mathbf p} \in R^{n+1} \} , jest wektorem parametrów. Regresja liniowa jest omawiana zazwyczaj w czasie kursu statystyki, wspomnimy więc tylko w tym miejscu, że swoją szczególną popularność model liniowy zawdzięcza między innymi temu, że funkcja błędu ma dokładnie jedno minimum. Wystarczy więc wyznaczyć jeden zbiór wartości parametrów, dla którego gradient funkcji błędu się zeruje i tym samym mieć gwarancję znalezienia tego minimum. Przy tym metoda reguły delta nie jest najbardziej efektywna w przypadku modelu liniowego, zamiast niej stosuje się raczej metodę najmniejszych kwadratów.

Prostota modelu liniowego, stanowiąca jego niewątpliwą zaletę, nie pozwala jednak na aproksymację funkcji nieliniowych z dowolnie małym błędem. Model liniowy był jednak inspiracją do powstania całej grupy modeli nieliniowych, które nazwiemy modelami „składanymi”, gdyż każdy z nich jest liniową kombinacją funkcji nieliniowych. Dokładniej mówiąc, modele składane mają postać

Parser nie mógł rozpoznać (błąd składni): {\displaystyle g({\mathbf x}, {\mathbf P})=\sum_{i=1}^n p_{0i} \phi({\mathbf x}, {\mathbf p_i}) + p_{00} \} , (11)

gdzie Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\mathbf P} \} , jest macierzą Parser nie mógł rozpoznać (błąd składni): {\displaystyle (n+1)\times(n+1) \} ,-elementową, Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathbf p_i \} , jej Parser nie mógł rozpoznać (błąd składni): {\displaystyle i \} ,-tym wektorem wierszowym, zaś Parser nie mógł rozpoznać (błąd składni): {\displaystyle \phi: R^n \times R^{n+1} \rightarrow R \} , oznacza pewną funkcję, zwaną funkcją bazową.

W zależności od przyjętej klasy funkcji bazowych, mówi się o różnych rodzajach modeli „składanych” Poniżej wymienimy tylko niektóre z nich.

W perceptronie dwuwarstwowym funkcja Parser nie mógł rozpoznać (błąd składni): {\displaystyle \phi \} , jest dana wzorem

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \phi({\mathbf x}, {\mathbf p_i})=\psi\left(\sum_{j=1}^n (x_j p_{ij})+p_{i0}\right) \} , (12)

gdzie Parser nie mógł rozpoznać (błąd składni): {\displaystyle \psi: R \rightarrow R \} , jest funkcją sigmoidalną - monotonicznie rosnącą, przyjmującą asymptoty skończone w minus i plus nieskończoności. Przykładami takiej funkcji mogą być funkcje Parser nie mógł rozpoznać (błąd składni): {\displaystyle \psi(x)=tanh(x) \} , (asymptoty Parser nie mógł rozpoznać (błąd składni): {\displaystyle -1 \} , oraz Parser nie mógł rozpoznać (błąd składni): {\displaystyle 1 \} ,) oraz Parser nie mógł rozpoznać (błąd składni): {\displaystyle \psi(x)= \frac{\exp(-x)}{\exp(-x)+1} \} , (asymptoty Parser nie mógł rozpoznać (błąd składni): {\displaystyle 0 \} , oraz Parser nie mógł rozpoznać (błąd składni): {\displaystyle 1 \} ,). Szerszy opis perceptronu jest podany w rozdziale 12.

W modelu RBF (ang. Radial Basis Functions - funkcje bazowe o symetrii radialnej) i w modelu falkowym (ang. wavelet) funkcja Parser nie mógł rozpoznać (błąd składni): {\displaystyle \phi \} , jest dana wzorem

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \phi({\mathbf x}, {\mathbf p_i})=\psi\left(\sqrt{\sum_{j=1}^n (x_j - p_{ij})^2}+p_{i0}\right) \} , (13)

Modele te różnią się wzorem funkcji Parser nie mógł rozpoznać (błąd składni): {\displaystyle \psi: R_{0+}\rightarrow R \} ,. W modelu RBF <ref name="rbf">Więcej na temat modelu RBF można znaleźć w http://pl.wikipedia.org/wiki/Sieci_radialne.</ref> przyjmuje się, że Parser nie mógł rozpoznać (błąd składni): {\displaystyle \psi \} , jest funkcją monotonicznie malejącą do zera na dodatniej półosi, np. funkcją Gaussa <ref name="gauss">http://pl.wikipedia.org/wiki/Rozkład_normalny</ref>. Z kolei model falkowy <ref name="falki">Więcej na temat modeli falkowych można przeczytać w http://pl.wikipedia.org/wiki/Falki.</ref> jako funkcję Parser nie mógł rozpoznać (błąd składni): {\displaystyle \psi \} , przyjmuje falkę, czyli funkcję, która nie jest monotoniczna, natomiast da się ograniczyć na dodatniej półosi od góry funkcją monotocznie malejącą do zera, a od dołu funkcją monotonicznie rosnącą do zera.

Właściwość uniwersalnej aproksymacji

Powodem, dla którego interesujemy się modelami „składanymi”, jest to, że mają one właściwość uniwersalnej aproksymacji.

Definicja Właściwość uniwersalnej aproksymacji

Zbiór ciągłych funkcji Parser nie mógł rozpoznać (błąd składni): {\displaystyle G \} , postaci Parser nie mógł rozpoznać (błąd składni): {\displaystyle R^n \rightarrow R \} , ma właściwość uniwersalnej aproksymacji, jeśli dla każdego zwartego podzbioru Parser nie mógł rozpoznać (błąd składni): {\displaystyle K \in G \} ,, dla dowolnej funkcji Parser nie mógł rozpoznać (błąd składni): {\displaystyle f : K \rightarrow R \} , i dla dowolnej wartości Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varepsilon >0 \} , istnieje funkcja Parser nie mógł rozpoznać (błąd składni): {\displaystyle g \in G \} , taka, że Parser nie mógł rozpoznać (błąd składni): {\displaystyle \sup_{{\mathbf x} \in K} |f({\mathbf x}) - g({\mathbf x})| < \varepsilon \} ,

Innymi słowy, właściwość uniwersalnej aproksymacji zbioru Parser nie mógł rozpoznać (błąd składni): {\displaystyle G \} , oznacza, że znajduje się w nim funkcja dowolnie „bliska” funkcji aproksymowanej.

Zauważmy, że nie sposób wykorzystać powyższej właściwości do konstrukcji aproksymatora. Istotnie, wprawdzie wszystkie z wymienionych powyżej modeli „składanych” mają właściwość uniwersalnej aproksymacji, lecz warunkiem jest to, żeby liczba funkcji składowych (a zatem rozmiar macierzy Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathbf P \} ,) była dowolnie duża. Nie jest to bardzo praktyczne rozwiązanie, zarówno ze względu na możliwość przetwarzania, jak i co ważniejsze, ze względu na niebezpieczeństwo przeuczenia rosnące wraz z rozmiarem macierzy Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathbf P \} ,. Nieco bardziej praktyczne wyniki niesie wymiar Wapnika-Czerwonenkisa, który, mówiąc w dużym uproszczeniu, jest wartością określającą liczbę stopni swobody modelu w zależności od liczby dostępnych danych uczących, tak aby rodzina funkcji Parser nie mógł rozpoznać (błąd składni): {\displaystyle G \} , była dostatecznie bogata aby osiągnąć mały błąd aproksymacji i jednocześnie zredukować niebezpieczeństwo przeuczenia.

Przykład zastosowania - metody regresji w prognozowaniu szeregów czasowych

Szczególne miejsce z punktu widzenia częstości zastosowań metod regresji zajmują szeregi czasowe. Szeregiem czasowym jest ciąg liczb Parser nie mógł rozpoznać (błąd składni): {\displaystyle x_1, x_2,x_3,.... \} , wygenerowanych jako wartości zmiennych losowych Parser nie mógł rozpoznać (błąd składni): {\displaystyle \xi_1, \xi_2, \xi_3,... \} ,. Zmienne losowe Parser nie mógł rozpoznać (błąd składni): {\displaystyle \xi_t \} , stanowią ciąg zwany procesem stochastycznym. Nie wnikając w złożoną i ciekawą teorię procesów stochastycznych i szeregów czasowych, przyjmiemy, że między kolejnymi wartościami Parser nie mógł rozpoznać (błąd składni): {\displaystyle x_t \} , istnieją pewne współzależności, a także że charakter tych współzależności nie zmienia się wraz z Parser nie mógł rozpoznać (błąd składni): {\displaystyle t \} , (tzn. szereg czasowy jest stacjonarny).

Modelując stacjonarny szereg czasowy zakłada się często, że istnieje pewna funkcja Parser nie mógł rozpoznać (błąd składni): {\displaystyle f:R^n \rightarrow R \} ,, która pozwala na opisanie szeregu czasowego przez równanie

Parser nie mógł rozpoznać (błąd składni): {\displaystyle x_i= f(x_{i-1},...,x_{i-n})+\varepsilon_i \} , (14)

gdzie Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varepsilon_i \} , oznacza wartość zmiennej losowej o zerowej wartości oczekiwanej (typowo jest to zmienna losowa o rozkładzie normalnym). Tak więc przeszłe obserwacje szeregu pozwalają na określenie wartości oczekiwanej zmiennej losowej opisującej wartość przyszłą - innymi słowy, na podstawie przeszłych wartość można przewidzieć przyszłość z błędem opisanym przez rozkład Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varepsilon_i \} ,.

Poczyniwszy takie założenie, można zadanie prognozowania wartości przyszłych szeregu czasowego przedstawić jako zadanie regresji, w którym aproksymowana jest funkcja Parser nie mógł rozpoznać (błąd składni): {\displaystyle f \} , opisująca wartość oczekiwaną rozkładu przyszłych wartości. Oznacza to, że jeśli dysponujemy zapiskami historii szeregu czasowego z chwil Parser nie mógł rozpoznać (błąd składni): {\displaystyle 1,...,h \} ,, to jest to równoznaczne z posiadaniem Parser nie mógł rozpoznać (błąd składni): {\displaystyle h-n \} , obserwacji argumentów i wartości funkcji Parser nie mógł rozpoznać (błąd składni): {\displaystyle f \} ,, którymi są pary:

Parser nie mógł rozpoznać (błąd składni): {\displaystyle ([x_1,...,x_n], x_{n+1}), ([x_2,...,x_{n+1}], x_{n+2}),...,([x_{h-n},...,x_{h-1}], x_{h}) \} ,

Chcąc wykonać modelowanie szeregu czasowego, z tego zbioru obserwacji należy wydzielić zbiór trenujący i testowy. Warto zauważyć, że po przygotowaniu zbioru trenującego i testowego można proces modelowania prowadzić tak, jak w przypadku dowolnego zadania regresji, gdyż nie ma potrzeby brania pod uwagę faktu, że obserwacje zostały utworzone na podstawie szeregu czasowego.

Szereg czasowy (14) jest nazywany szeregiem autoregresyjnym (i oznaczany AR, z ang. AutoRegressive), gdyż zakłada się w jego modelu, że przyszłe wartości szeregu zależą tylko od jego przeszłości i nie mają na niego wpływu inne czynniki, w szczególności inne szeregi czasowe. Tak nie musi być. Typowym przykładem jest szereg czasowy opisujący zmiany zapotrzebowania na energię elektryczną w wielkim mieście, gdzie na typowe zachowania odbiorców energii (takich jak wieczorne zwiększenie poboru mocy przez gospodarstwa domowe) związane z trybem życia, nakładają się zależności od temperatury zewnętrznej. Pomiary temperatury zewnętrznej można również traktować jako szereg czasowy, którego jednak nie musimy modelować (chyba że chcielibyśmy w ten sposób uzyskać narzędzie prognozowania temperatury), lecz tylko uwzględniać wpływ jego przeszłych obserwacji na szereg zapotrzebowania na energię. Dostajemy wówczas model autoregresyjno-regresyjny (oznaczany ARX, z ang. AutoRegressive with auXiliary input)

Parser nie mógł rozpoznać (błąd składni): {\displaystyle x_i= f(x_{i-1},...,x_{i-na}, y_{i-1},...,y_{i-nb})+\varepsilon_i \} , (15)

w którym funkcja Parser nie mógł rozpoznać (błąd składni): {\displaystyle f \} , jest odwzorowaniem Parser nie mógł rozpoznać (błąd składni): {\displaystyle f:R^{na + nb} \rightarrow R \} ,. Obserwacje będą miały postać par

Parser nie mógł rozpoznać (błąd składni): {\displaystyle ([x_{i-na},...,x_{i-1}, y_{i-nb},...,y_{i-1}], x_{i}). \} ,

Pozostałe uwagi dotyczące procesu modelowania są identyczne z poczynionymi dla szeregu autoregresyjnego. Warto również zauważyć, że w sposób naturalny można w modelu ARX uwzględniać więcej niż jeden dodatkowy szereg czasowy, w sposób analogiczny do tego, jak uwzględniono szereg Parser nie mógł rozpoznać (błąd składni): {\displaystyle y \} ,.

Przykład Rozważmy szereg czasowy

202, 186, 146, 138, 172, 274, 310, 434, 442, 370, 197, 259, 283, 343, 349, 383, 412, 411, 427, 378, 327, 276, 196, 166, 171, 137, 156, 185, 155, 431, 533, 815, 792, 674, 401, 429, 534, 649, 635, 671, 748, 704, 765, 671, 552, 430, 341, 262, 311, 313, 316, 333

Załóżmy, że szeregu czasowy będzie modelowany za pomocą funkcji Parser nie mógł rozpoznać (błąd składni): {\displaystyle f:R^3 \rightarrow R \} ,. Oznacza to, że zbiór obserwacji wartości szeregu jest w istocie zbiorem następujących par

([202,186,146],138), ([186,146,138],172), ([146,138,172],274), ([138,172,274],310), ([172,274,310],434), ([274,310,434],442), ([310,434,442],370), ([434,442,370],197), ([442,370,197],259), ([370,197,259],283), ([197,259,283],343), ([259,283,343],349), ([283,343,349],383), ([343,349,383],412), ([349,383,412],411), ([383,412,411],427), ([412,411,427],378), ([411,427,378],327), ([427,378,327],276), ([378,327,276],196), ([327,276,196],166), ([276,196,166],171), ([196,166,171],137), ([166,171,137],156),

([171,137,156],185), ([137,156,185],155), ([156,185,155],431), ([185,155,431],533), ([155,431,533],815), ([431,533,815],792), ([533,815,792],674), ([815,792,674],401), ([792,674,401],429), ([674,401,429],534), ([401,429,534],649), ([429,534,649],635), ([534,649,635],671), ([649,635,671],748), ([635,671,748],704), ([671,748,704],765), ([748,704,765],671), ([704,765,671],552), ([765,671,552],430), ([671,552,430],341), ([552,430,341],262), ([430,341,262],311), ([341,262,311],313), ([262,311,313],316), ([311,313,316],333)

Załóżmy, że pary oznaczone kolorem czerwonym są elementami zbioru trenującego, a zaznaczone kolorem zielonym - zbioru testowego.

Wykonajmy modelowanie szeregu za pomocą modelu liniowego. Model ten ma cztery parametry. W celu określenia ich wartości skorzystamy z reguły delta. Początkowe wartości przyjmijmy jako Parser nie mógł rozpoznać (błąd składni): {\displaystyle [p_0, p_1, p_2, p_3]=[0.01, 0.33, 0.33, 0.33] \} ,. Gradient funkcji błędu jest w modelu liniowym łatwy do obliczenia, gdyż Parser nie mógł rozpoznać (błąd składni): {\displaystyle \frac{\partial h({\mathbf x},{\mathbf p}) }{\partial p_0}=1 \} , oraz Parser nie mógł rozpoznać (błąd składni): {\displaystyle \frac{\partial h({\mathbf x},{\mathbf p}) }{\partial p_i}=x_i \} , dla Parser nie mógł rozpoznać (błąd składni): {\displaystyle i=1,...,n \} ,. W przypadku naszego przykładu gradient wynosi wynosi Parser nie mógł rozpoznać (błąd składni): {\displaystyle [-7.64, 12174.19, 6506.35, -3364.68] \} ,. Przyjmując współczynnik uczenia Parser nie mógł rozpoznać (błąd składni): {\displaystyle \eta=0.000001 \} , otrzymamy nowe wartości parametrów Parser nie mógł rozpoznać (błąd składni): {\displaystyle [0.0100, 0.3178, 0.3235, 0.3334] \} , i zaobserwujemy zmniejszenie wartości błędu średniokwadratowego. (warto tu zwrócić uwagę, że zbyt duży współczynnik uczenia, np. Parser nie mógł rozpoznać (błąd składni): {\displaystyle 0.001 \} ,, będzie prowadzić do zwiększenia wartości błędu). Postępując tak dalej, otrzymamy w końcu model, którego wartości parametrów prowadzą do minimalnego błędu średniokwadratowego na zbiorze trenującym. Znalezienie tego modelu oraz obliczenie wartości błędu próbkowego na zbiorze testowym pozostawiamy Czytelnikowi jako zadanie do samodzielnego wykonania.


<references/>