Programowanie sieciowe Laboratorium 3 Zadanie regresji
Plan 1. Dane ze wskaźnikami giełdowymi 2. Perceptron wielowarstwowy z jedną warstwą ukrytą do zadania regresji
Dane ze wskaźnikami giełdowymi https://www.kaggle.com/camnugent/sandp500
Budowa zbioru danych Kodowanie danych xi = [yi, yi+1, yi+2,... ,yi+k] yi =yn(i)+k+1 i=1,..,N-(k+1) Model perceptronu wielowarstowego z jedną warstwą ukrytą do zadania klasyfikacji Funkcja tgh lub sigmoid w warstwie ukrytej i funkcja liniowa na wyjściu
Algorytmy uczenia punkt startowy optymalizacji class sklearn.neural_network.MLPRegressor(hidden_layer_sizes=(100, ), activation=’relu’, solver=’adam’, alpha=0.0001, batch_size=’auto’, learning_rate=’constant’, learning_rate_init=0.001, power_t=0.5, max_iter=200, shuffle=True, random_state=None, tol=0.0001, verbose=False, warm_start=False, momentum=0.9, nesterovs_momentum=True, early_stopping=False, validation_fraction=0.1, beta_1=0.9, beta_2=0.999, epsilon=1e-08, n_iter_no_change=10 Konfiguracja algorytmów szukania minimum funkcji błędu Wielokrotne starty optymalizacji GridSearchCV https://scikit- learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV .html#sklearn.model_selection.GridSearchCV
Algorytmy uczenia perceptronu wielowarstwowego 'adam', 'lbfgs', 'sgd' solver : {‘lbfgs’, ‘sgd’, ‘adam’}, default ‘adam’ The solver for weight optimization. ‘lbfgs’ is an optimizer in the family of quasi-Newton methods. ‘sgd’ refers to stochastic gradient descent. ‘adam’ refers to a stochastic gradient-based optimizer proposed by Kingma, Diederik, and Jimmy Ba
Przegląd zupełny przestrzeni hiper-parametrów Liczba neuronów Współczynnik uczenia Użyty algorytm do treningu
Sposób budowy regresora 1. Robimy skanowanie skanowanie przestrzenie parametrów takich jak algorytm, liczba neuronów 10:10:300, oraz parametr uczenie 0.1,0.01,0.001, 0.0001. Skanowanie może zostać wykonane za pomocą polecenia GridSearchCV albo zaimplementowane w 3 zagnieżdżonych pętlach. 1.1 Dla każdego zestawu parametrów trenujemy sieć za pomocą MLPClassfier i sprawdzamy jego dzialanie na zbiorze walidacyjnym (tzn danych, które nie były użyte do treningu ani do wyliczania funkcji celu). 2. Pętla, w której dzielimy zbiór danych treningowych na część treningową i testową w stosunku 70% dane treningowe, 30% dane testowe za pomocą polecenia https://scikit- learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html Pętla ma wykonać 100 iteracji – ma więc wygenerować 100 różnych podziałów zbioru treningowego. 2. Dla każdego podziału i dla aktualnego modelu zbieramy wartość funkcji celu oraz błąd na zbiorze walidacyjnym. 3. Rozwiązaniem jest ten klasyfikator, który ma najmniejszy średni błąd na zbiorze walidacyjnym.