Rozdział 3. AdvancedMiner w Praktyce

Spis treści

Budowanie modeli
Ogólne zasady
Budowanie modeli aproksymacyjnych
Budowanie modeli klasyfikacyjnych
Budowanie modelu opartego na analizie skupień
Budowanie modelu przeżycia
Testowanie modeli
Testowanie modeli aproksymacyjnych - ApproximationTestTask
Testowanie Modeli Klasyfikacyjnych - ClassificationTestTask
Testowanie modelu przeżycia - SurvivalTestTask
Zadanie testowania modelu szeregu czasowego
Zadanie testowania klasyfikacji na podstawie tabeli z wynikami scoringowymi
Stosowanie modeli
Podstawowe pojęcia
Zaawansowane pojęcia
Konfiguracja minimalna
Stosowanie modeli dla różnych funkcji ekstrakcji danych
Przykłady
Uproszczone sposoby budowania, testowania i stosowania modeli
Approximator
Classifier
Clusterer
Applier
Eksperymenty
Projekt Experiments
Uruchamianie eksperymentu
Porównywanie modeli
Słownik
Analiza Sieci Społecznych
Tworzenie sieci
Filtrowanie sieci
Analizowanie sieci
Wizualizacja Sieci
Budowanie modeli w programie AdvancedMiner za pomocą funkcji ABM

Budowanie modeli

Ogólne zasady

W tym rozdziale pokazane jest, jak można zbudować prosty model drzew klasyfikacyjnych. Inne rodzaje modeli buduje się w podobny sposób.

Wczytywanie danych

Na początku należy określić, jakich danych chcemy użyć do zbudowania modelu. Należy się upewnić, czy domyślny alias do bazy danych jest prawidłowo ustawiony. Alias można zdefiniować za pomocą komponentu Services i okna dialogowego Alias, zob. IDE - Zintegrowane środowisko programistyczne, Aliasy.

W tym przykładzie wykorzystywany jest zbiór danych o nazwie 'iris'. Na początku należy zbudować obiekt PhysicalData:

pd = PhysicalData('iris')

Teraz można określićLogicalData:

ld = LogicalData(pd)

Powyższe czynności można także wykonać, korzystając z interfejsu graficznego:

Kliknij prawym przyciskiem myszy na Repository w oknie Projects, wybierz New ->Physical Data:

Rysunek 3.1. Tworzenie nowego obiektu PhysicalData

Tworzenie nowego obiektu PhysicalData

Pojawi się okno z listą wszystkich tabel. Wybierz właściwą ('iris') i kliknij Next.

Rysunek 3.2. Wybieranie tabeli

Wybieranie tabeli

Wyświetlone zostanie okno, w którym należy wprowadzić nazwę nowego obiektu PhysicalData. Wprowadź nazwę 'pd' i kliknij Next. Nowy obiekt PhysicalData o nazwie 'pd' pojawi się w oknie Projects. Obiekt LogicalData można utworzyć w ten sam sposób, wybierając New -> Logical Data z menu kontekstowego. Wyświetlone zostanie okno ze wszystkimi dostępnymi obiektami LogicalData. Wybierz właściwy i kliknij Finish.

Rysunek 3.3. Wskazywanie obiektu PhysicalData przy tworzeniu obiektu LogicalData

Wskazywanie obiektu PhysicalData przy tworzeniu obiektu LogicalData

Ustawienia funkcji

Następnie należy zdecydować, jaki rodzaj modelu chcemy zbudować i utworzyć odpowiedni obiekt FunctionSettings.

cfs = ClassificationFunctionSettings()

Obiektowi FunctionSettings należy przypisać zbiór danych:

cfs.logicalData = ld 

wybrać atrybut, który ma pełnić rolę target:

cfs.getAttributeUsageSet().getAttribute('Class').setUsage(UsageOption.target)

i wybrać algorytm uczący, którego chcemy użyć:

cfs.algorithmSettings = TreeSettings()

Obiekt FunctionSettings można także utworzyć, korzystając z interfejsu graficznego: kliknij prawym przyciskiem myszy na repozytorium w komponencie Projects i z menu kontekstowego wybierz New -> Mining Function. Wybierz rodzaj ustawień z listy i wprowadź nazwę dla nowo utworzonego obiektu FunctionSettings.

Rysunek 3.4. Lista typów obiektów FunctionSettings

Lista typów obiektów FunctionSettings

Nowy obiekt, zawierający atrybut attributeUsageSet, pojawi się w oknie Projects. Obiekt ten należy za pomocą menu kontekstowego dodać do odpowiednich obiektów LogicalData i AlgorithmSettings:

Rysunek 3.5. Dodawanie obiektów do FunctionSettings

Dodawanie obiektów do FunctionSettings

Po wybraniu AlgorithmSettings wyświetlone zostanie okno z listą wszystkich dostępnych ustawień, z których należy wybrać te, które nas interesuje (TreeSettings):

Rysunek 3.6. Lista dostęnych obiektów typu AlgrithmSettings

Lista dostęnych obiektów typu AlgrithmSettings

Aby zakończyć tworzenie obiektu FunctionSettings należy otworzyć attributeUsageSet (za pomocą podwójnego kliknięcia lub polecenia Open w menu kontekstowym) i wybrać jedną zmienną, która będzie pełnić rolę target:

Rysunek 3.7. wybieranie roli atrybutu

wybieranie roli atrybutu

W przypadku pozostałych zmiennych, ich role można określić jako obligatory (obligatoryjne), active (aktywne), inactive (nieaktywne), itp. Zmienne aktywne mogą być potraktowane jako zmienne niezależne w procesie budowy modelu, zmienne nieaktywne zostaną pominięte przy budowie modelu. W przypadku niektórych modeli, można wymusić wykorzystanie danej zmiennej, określając ją jako obligatoryjną.

Budowanie modelu

Teraz trzeba utworzyć obiekt MiningBuildTask. Wpierw należy jednak zapisać wcześniej utworzone obiekty PhysicalData i FunctionSettings w repozytorium (Metadata Repository). Do tego momentu wszystkie utworzone obiekty istniały tylko lokalnie. Aby były one widoczne dla serwera systemu AdvancedMiner, muszą one zostać zapisane w repozytorium. Tworząc obiekt MiningBuildTask należy zadeklarować obiekty PhysicalData i FunctionSettings podając ich nazwy:

save('physical_data', pd)
save('cfs_Tree', cfs)

Teraz możemy utworzyć:

mbt = MiningBuildTask('physical_data', 'cfs_Tree', 'model_name' )

Przed wywołaniem obiektu MiningBuildTask, musimy go zapisać:

save('mbt_Tree', mbt)

i ostatecznie możemy wywołać utworzony obiekt:

execute('mbt_Tree')

Jako wynik otrzymamy model o nazwie model_name. Rysunek poniżej pokazuje, jakie obiekty pojawią się w repozytorium po wykonaniu kodu powyżej.

Rysunek 3.8. Wyniki budowania modelu

Wyniki budowania modelu

Procedurę budowania modelu można także przeprowadzać za pomocą interfejsu graficznego. Z menu kontekstowego wybierz New -> Task i wybierz rodzaj zadania z listy:

Rysunek 3.9. Lista zadań

Lista zadań

Kliknij Next, wprowadź nazwę utworzonego zadania i kliknij Finish.

W następnym kroku do nowo utworzonego obiektu MiningBuildTask należy dodać wszystkie wymagane elementy (functionSettings, buildData, model):

Rysunek 3.10. Dodawanie obiektów do zadania budowania modelu

Dodawanie obiektów do zadania budowania modelu

Aby podać referencję do modelu, w oknie kreatora wprowadzamy nazwę modelu i klikamy Finish.

Rysunek 3.11. Referencja do modelu

Referencja do modelu

Po wykonaniu kroków opisanych powyżej utworzone obiekty można przetestować, aby wykryć ewentualne problemy. Zapisz je za pomocą przycisku Save na pasku narzędzi lub wybierając polecenie Save -> Save z menu programu.

Aby wywołać utworzony obiekt MiningBuildTask wciśnij F6 lub wybierz Execute z menu kontekstowego.

Uwaga

Nazwa nowego modelu jest taka sama, jak nazwa w ustawieniach obiektu MiningBuildTask, nawet w przypadku, gdy model o tej nazwie już istnieje w repozytorium. W takiej sytuacji nazwa już istniejącego modelu zostanie zmieniona na nazwa_modelu_1, kolejnego utworzonego modelu na nazwa_modelu_2, itd. Dzięki temu nie zmienią się nazwy istniejących modeli.

Budowanie modeli aproksymacyjnych

Pierwszym krokiem przy budowaniu modelu aproksymacyjnego jest wczytanie danych. Niektóre metody aproksymacji wymagają danych określonego rodzaju, czasami trzeba też przeprowadzić wstępną obróbkę danych. Wszystkie niezbędne informacje o tym, jak należy przygotować dane dla poszczególnych metod można znaleźć w dokumentacji do modułów (Modules).

Uwaga

W przypadku modeli aproksymacyjnych zmienna o funkcji target musi być numeryczna.

W drugim kroku wybierana jest metoda aproksymacji. Obiekt FunctionSettings można utworzyć w następujący sposób:

cfs = ApproximationFunctionSettings()

Jeśli przetestujemy utworzony obiekt, zobaczymy następującą informację:

Rysunek 3.12. ApproximationFunctionSettings - Wynik testowania

ApproximationFunctionSettings - Wynik testowania

  • Logical data not provided

    Należy podać obiek LogicalData. Można to zrobić za pomocą instrukcji:

    afs.logicalData = ld

    gdzie ld oznacza obiekt typu LogicalData, który został utworzony wcześniej.

  • Algorithm settings not provided

    Wybór metody jest równoważny wyborowi odpowiednich ustawień algorytmu. Dostępne są następujące metody aproksymacji: Regresja liniowa, Regresja ważona, IRLS, Sieci neuronowe.

    Tabela 3.1. Metody aproksymacyjne - ustawienia algorytmu

    MetodaKlasa obiektu
    Siec neuronowe

    FeedforwardNeuralNetSettings

    IRLS

    IRLSSettings

    Regresja liniowa

    RegressionSettings

    Regresja ważona

    WeightedRegressionSettings

    Rysunek 3.13. Metody aproksymacji - ustawienia algorytmu

    Metody aproksymacji - ustawienia algorytmu
  • Target attribute not specified

    Należy podać nazwę atrybutu, które będzie pełnił rolę target. Można to zrobić za pomocą instrukcji:

    cfs.targetAttributeName = 'Target_Attribute_Name'

W ostatnim kroku należy utworzyć i wywołać MiningBuidTask. Jest to opisane w podrozdziale Budowanie modelu.

Budowanie modeli klasyfikacyjnych

Pierwszym krokiem przy budowaniu modelu klasyfikacyjnego jest wczytanie danych. Niektóre metody klasyfikacji wymagają danych określonego rodzaju, czasami trzeba też przeprowadzić wstępną obróbkę danych. Wszystkie niezbędne informacje o tym, jak należy przygotować dane dla poszczególnych metod można znaleźć w dokumentacji do modułów (Modules).

Uwaga

Dla każdej metody klasyfikacji zmienna określona jako target musi być kategorialna.

W drugim kroku wybierana jest metoda klasyfikacji. Niezbędny do tego obiekt ClassificationFunctionSettings można utworzyć w następujący sposób:

cfs = ClassificationFunctionSettings()

Jeśli przetestujemy utworzony obiekt, zobaczymy następującą informację:

Rysunek 3.14. ClassificationFunctionSettings - Wynik testowania

ClassificationFunctionSettings - Wynik testowania

  • Logical data not provided

    Należy podać obiekt LogicalData. Można to zrobić za pomocą instrukcji:

    cfs.logicalData = ld

    gdzie ld oznacza obiekt typu LogicalData, który został utworzony wcześniej.

  • Algorithm settings not provided

    Wybór metody jest równoważny wyborowi odpowiednich ustawień algorytmu. Dostępne są następujące metody klasyfikacji: Sieci Kohonena, Sieci Neuronowe, Drzewa Klasyfikacyjne, Regresja Logistyczna, Bivariate Probit, Analiza dyskriminacyjna.

    Tabela 3.2. Metody klasyfikacyjne - ustawienia algorytmu

    Metoda Nazwa obiektu AlgporithmSettings Name
    Bivariate Probit

    BivariateProbitSettings

    Analiza Dyskryminacyjna

    DiscriminantSettings

    Sieci Neuronowe

    FeedforwardNeuralNetSettings

    Sieci Kohonena

    KohonenClassificationSettings

    Regresja Logistyczna

    LogisticRegressionSettings

    Drzewa Klasyfikacyjne

    TreeSettings

    Rysunek 3.15. Metody klasyfikacyjne - Ustawienia algorytmu

    Metody klasyfikacyjne - Ustawienia algorytmu
  • Target attribute not specified

    Należy podać nazwę atrybutu, które będzie pełnił rolę target. Można to zrobić za pomocą instrukcji:

    cfs.targetAttributeName = 'Target_Attribute_Name'

W ostatnim kroku należy utworzyć i wywołać MiningBuidTask. Jest to opisane w podrozdziale Budowanie modelu.

Budowanie modelu opartego na analizie skupień

Pierwszym krokiem przy budowaniu modelu skupieniowego jest wczytanie danych. Wszystkie niezbędne informacje dotyczące wstępnej obróbki danych można znaleźć w podrozdziale Sieci Kohonena.

W kolejnym kroku należy wybrać konkretną metodę analizy skupień. Niezbędny do tego obiekt ClusteringFunctionSettings można utworzyć w następujący sposób:

cfs = ClusteringFunctionSettings()

Testując tak utworzony obiekt, zobaczymy następujący komunikat:

Rysunek 3.16. Clustering Function Settings - Wynik testowania

Clustering Function Settings - Wynik testowania
  • Logical data not provided

    Powinien zostać przypisany obiekt LogicalData. Można to zrobić za pomocą instrukcji:

    cfs.logicalData = ld

    gdzie ld oznacza obiekt LogicalData utworzony wcześniej.

  • Algorithm settings not provided

    Wybór metody jest równoważny wyborowi odpowiednich ustawień algorytmu. Dostępne są następujące algorytmy tworzenia skupisk: Sieci Kohonena i KMeans. Ustawienia algorytmu można dodać za pomocą polecenia:

    cfs.algorithmSettings = KohonenClusteringSettings()

W ostatnim kroku należy utworzyć i wywołać obiekt MiningBuidTask. Jest to opisane w podrozdziale Budowanie modelu.

Budowanie modelu przeżycia

Aby zbudować model przeżycia Cox'a należy utworzyć obiekt MiningBuildTask z odpowiednimi danymi i ustawieniami dla tego modelu. Należy pamiętać, że model Cox'a wymaga dodatkowych ustawień Censor i Censored category:

Rysunek 3.17. Model Cox'a - ustawienia

Model Cox'a - ustawienia

Zmienna censor jest ustawiana poprzez functionSettings->attributeUsageSet a Censored category jest ustawiana w functionSettings.

Stosując zbudowany model otrzymamy dane wynikowe, które można zapisać w bazie danych lub pliku. Dane te zawierają przewidywany czas przetrwania i dane, które zostały wykorzystane do jego wyznaczenia.