Wprowadzenie do programu RapidMiner Studio 7.6, część 4 Michał Bereta www.michalbereta.pl W tej części: Zachowanie wytrenowanego modelu w celu późniejszego użytku Filtrowanie danych (brakujące etykiety klas) Filtrowanie danych (brakujące wartości atrybutów) uzupełnianie brakujących wartości Dobieranie parametrów modelu w sposób systematyczny 1
1. Zachowanie wytrenowanego modelu w celu późniejszego użytku Z poniższego schematu wynika, że za każdym razem, kiedy będziemy chcieli wygenerować odpowiedzi naszego klasyfikatora (sieci neuronowej) dla danych testowych, będziemy musieli tę sieć wytrenować. Jest to kosztowne obliczeniowo. Lepiej jest wytrenować klasyfikator, zachować go i w razie konieczności załadować do pamięci. W tym celu można użyć operatora Store. Wypróbuj poniższe podejście. Pierwszy projekt odpowiada za wytrenowanie sieci i jej zapis do fizycznego pliku. 2
3
Drugi projekt wczytuje sieć neuronową a następnie używa jej do wygenerowania etykiet klas dla danych testowych. 4
Otrzymujemy przewidziane przez sieć etykiety klas w kolumnie prediction. 5
2. Filtrowanie danych (brakujące etykiety klas) Załóżmy, że w naszych danych (plik iris_missing.csv ), brakuje informacji o etykietach klas dla pewnych przykładów. Nie mogą one być zatem wykorzystane do trenowania klasyfikatorów. Musimy je najpierw odfiltrować, a następnie (ewentualnie) po wytrenowaniu modelu na pozostałych przykładach (ze znaną klasą), możemy otrzymany model klasyfikacyjny wykorzystać by przewidzieć etykiety klas również dla nich. Przykładowa zawartość pliku: 6
Zaimportuj dane iris_missing.csv. 7
Brakujące wartość RapidMiner przedstawia jako?. 8
W zakładce Statistics widać, że mamy 31 przykładów z nieznaną etykietą klasy. Do wybrania jedynie przykładów posiadających etykietę klasy, wykorzystamy operator Filter Examples. 9
W ustawieniach filtra ustawiamy warunek, że att5 (etykieta klasy) nie może mieć brakującej wartości ( is not missing ) Z portu wyjściowego exa operatora Filter Examples otrzymamy jedynie 119 przykładów ze znaną etykietą klasy. 10
Na porcie unm (unmatched) dostępne są przykłady, które nie spełniły warunku filtrowania. 11
Poniższy schemat pokazuje, jak wykorzystać przykłady ze znaną klasą do trenowania drzewa decyzyjnego, a następnie jak wykorzystać to drzewo do przewidzenia klasy dla pozostałych przykładów. 12
3. Filtrowanie danych (brakujące wartości atrybutów) Załóżmy, że w danych brakuje wartości atrybutów dla niektórych przykładów (plik iris_missing_atts.csv ). Po zaimportowaniu danych: 13
W tej sytuacji mamy kilka opcji. - wykorzystać algorytmy, które mogą się uczyć na tego typu niekompletnych danych (nie omawiamy tego jednak w tym miejscu), - pozbyć się niekompletnych przykładów (jeśli nie jest ich zbyt wiele i możemy sobie na to pozwolić), - spróbować uzupełnić brakujące wartości. Pozbycie się przykładów niekompletnych jest proste jeśli wykorzystamy ponownie operator Filter Examples. 14
Z zakładki Statistics wiemy, że brakujące wartości występują dla atrybutów att1, att2 oraz att3. Alternatywnie, jeśli mamy wiele atrybutów do analizy, można ustawić globalny warunek: Wynik jedynie przykłady bez brakujących wartości atrybutów. 15
Można również spróbować zastąpić brakujące wartości. Jest na to kilka pomysłów. Można wstawić pewną zadeklarowaną przez nas wartość, wartość minimalną, średnią lub maksymalną dla danego atrybutu. W RM wykonać to możemy za pomocą operatora Replace Missing Values. Dla przypomnienia oryginalne dane: 16
Można zdefiniować sposób postępowania dla każdego atrybutu z osobna, lub wykorzystać podejście default. 17
Sprawdź jakie wartości zostały wstawione. 18
Jakie wyniki osiągnie klasyfikator na tak naprawionych danych? Sprawdź za pomocą kroswalidacji. Jak widać, wyniki są porównywalne do wcześniejszych z bazą iris. Można również spróbować bardziej wyrafinowanego sposobu na uzupełnienie brakujących wartości. Mianowicie, na podstawie przykładów o znanych wartościach atrybutów, można zbudować model regresyjny, którego zadaniem jest nauczyć się wartości wybranego atrybutu numerycznego. Taki model uczy się przywidywać wartości pewnego atrybutu na podstawie wartości pozostałych atrybutów. Jest on użyty następnie do przewidzenia jaka powinna być brakująca wartość tego atrybutu. 19
Aby zrealizować to podejście w RM, wykorzystamy operator Impute Missing Values. Musimy zdefiniować, jaki model ma być uczony przewidywania wartości atrybutów (nie chodzi tu o etykietę klasy!). W tym przypadku wykorzystamy sieć neuronową dlatego, że mamy atrybuty numeryczne, a sieć jest w stanie na wyjściu dostarczyć wartości tego typu. 20
Sprawdź, jakie wartości wstawiła sieć neuronowa (a raczej kilka sieci, po jednej dla każdego atrybutu, który miał brakujące wartości). Operator k-nn również może być użyty do przewidzenia wartości numerycznej, zatem można go wykorzystać jako podproces operatora Impute Missing Values. 21
Porównaj wartości wstawione przez k-nn z wcześniejszymi. 22
4. Dostrajanie parametrów modelu Jeśli obiecującym typem klasyfikatora w danym problemie klasyfikacyjnym jest np. drzewo decyzyjne, nadal możemy próbować dostrajać różne parametry. Operator Optimize Parameters (Grid) pozwala to zrobić w systematyczny sposób. Operator ten wymaga, by zdefiniować podproces, który będzie wykorzystany do testowania kolejnych zestawów wartości parametru. Będzie to operator kroswalidacji z drzewem decyzyjnym. Zostanie on uruchomiony wielokrotnie, jeden raz dla każdego zestawu parametrów. 23
W ustawieniach tego operatora wybieramy, które parametry danego klasyfikatora bierzemy pod uwagę i w jakim zakresie. Przykładowo, dla drzewa chcemy przetestować różne wartości parametrów criterion, minimal gain oraz minimal size for split. Dla criterion: 24
Dla minimal gain - zakres od 0.01 do 1, 20 różnych wartości. Dla minimal size for split od 2 do 15, 14 różnych wartości. Zwróć uwagę jak szybko otrzymujemy wiele kombinacji każda to operacja kroswalidacji do wykonania! 25
Po uruchomieniu: Otrzymujemy informację o tym, jakie parametry dały największe oszacowanie kroswalidacyjne. Można je wykorzystać podczas przygotowywania ostatecznego modelu klasyfikacyjnego na podstawie wszystkich danych trenujących. 26
Możemy również otrzymać bardziej szczegółowe informacje za pomocą operatora logowania. Wybieramy, które wartości chcemy logować dla każdego zestawu testowanych parametrów. 27
Wynik bardziej szczegółowe informacje. Można je wizualizować i analizować na odpowiednich wykresach. 28