Uproszczone sposoby budowania, testowania i stosowania modeli

Język Gython programu AdvancedMiner został rozbudowany o kilka funkcji, które oferują prosty i szybki sposób budowania, testowania i stosowania modeli klasyfikacyjnych, aproksymacyjnych i skupieniowych.

Approximator

Funkcja approximator tworzy w repozytorium zestaw obiektów do budowania i testowania modeli aproksymacyjnych.

Składnia:

approximator(trainTableName, target, algorithmSettings[, testTableName = s]
[, prefix = s][, validationTableName = s][, usageDict = d][, usages = d][, sqlAttributes = d]
[, categorical = l][, numerical = l][, repoName = s][, scoringLanguage = langname])

Objaśnienie parametrów:

  • trainTableName - nazwa tabeli w bazie danych zawierającej dane trenujące,

  • target - nazwa zmiennej o funkcji target w zbiorze danych trenujących i testujących,

  • algorithmSettings - nazwa obiektu z ustawieniami algorytmu; powinien to być obiekt typu FeedforwardNeuralSettings, IRLSSettings, RegressionSettings lub WeightedRegressionSettings.

  • testTableName - nazwa tabeli w bazie danych z danymi testującymi; w przypadku pominięcia tego parametru do testowania modelu zostaną wykorzystane dane trenujące,

  • prefix - przedrostek, który zostanie dodany do nazw wszystkich utworzonych obiektów; w przypadku pominięcia tego parametru jako przedrostek posłuży nazwa tabeli z danymi trenującymi.

  • validationTableName - nazwa tabeli w bazie danych z danymi walidacyjnymi,

  • usageDict - słownik określające dodatkowe role zmiennych; aby określić rolę atrybutu należy podać jego nazwę jako klucz pozycji w słowniku i odpowiedni atrybut klasy UsageOption jako odpowiadającą wartość, n.p.

    usageDict = { 'att1' : UsageOption.inactive, 'att3' : UsageOption.supplementary }

  • usages - słownik określające dodatkowe role zmiennych; aby określić, które zmienne pełnią określoną rolę, należy dodać odpowiedni atrybut klasy UsageOption jako klucz pozycji w słowniku i listę atrybutów jako odpowiadającą wartość, np.

    usages = { UsageOption.inactive : ['att1', 'att2], UsageOption.supplementary : 'att3' }

  • sqlAttributes - słownik z atrybutami obliczanymi za pomocą instrukcji SQL, w którym klucze odpowiadają nazwom atrybutów a wartości to instrukcje SQL,

  • categorical - lista zmiennych, które należy traktować jako kategorialne,

  • numerical - lista zmiennych, które należy traktować jako numeryczne,

  • repoName - nazwa repozytorium metadanych, w którym zostaną utworzone wszystkie obiekty; w przypadku pominięcia tego parametru wykorzystane zostanie repozytorium domyślne,

  • scoringLanguage - określa język programowania, w którym ma zostać utworzony kod scoringowy, o ile zaistnieje taka potrzeba.

Przykład 3.8. Użycie funkcji approximator

approximator('iris', 'sepallength', LinearRegressionSettings() )
            

Classifier

Funkcja classifier tworzy w repozytorium zestaw obiektów do budowania i testowania modeli klasyfikacyjnych.

Składnia:

classifier(trainTableName, target, algorithmSettings[, testTableName = s]
[, positive = s][, prefix = s][, validationTableName = s][, usageDict = d][, usages = d]
[, ldTableName = s][, sqlAttributes = d][, categorical = l][, numerical = l][, testQuantiles = n]
[, inactiveAsDefault = 0 | 1][, repoName = s][, scoringLanguage = langname])

Objaśnienie parametrów:

  • trainTableName - nazwa tabeli w bazie danych zawierającej dane trenujące,

  • target - nazwa zmiennej o roli target w zbiorze danych trenujących i testujących,

  • algorithmSettings - nazwa obiektu z ustawieniami algorytmu; powinien to być obiekt typu: BivariateProbitSettings, DiscriminantSettings, FeedforwardNeuralNetSettings, KohonenClasificationSettings, LogisticRegressionSettings lub TreeSettings.

  • testTableName - nazwa tabeli w bazie danych z danymi testującymi; w przypadku pominięcia tego parametru do testowania modelu zostaną wykorzystane dane trenujące,

  • positive - kategoria zmiennej target, która będzie traktowana jako dobra z punktu widzenia obliczania kwantyli przy klasyfikacji; w przypadku pominięcia kwantyle nie zostaną policzone i dostępne będą jedynie statystyki dla zmiennej target oraz macierz pomyłek.

  • prefix - przedrostek, który zostanie dodany do nazw wszystkich utworzonych obiektów; w przypadku pominięcia tego parametru jako przedrostek posłuży nazwa tabeli z danymi trenującymi,

  • validationTableName - nazwa tabeli w bazie danych z danymi walidacyjnymi,

  • usageDict - słownik określające dodatkowe role zmiennych; aby określić rolę atrybutu należy podać jego nazwę jako klucz pozycji w słowniku i odpowiedni atrybut klasy UsageOption jako odpowiadającą wartość, n.p.

    usageDict = { 'att1' : UsageOption.inactive, 'att3' : UsageOption.supplementary }

  • usages - słownik określające dodatkowe role zmiennych; aby określić, które zmienne pełnią określoną rolę, należy dodać odpowiedni atrybut klasy UsageOption jako klucz pozycji w słowniku i listę atrybutów jako odpowiadającą wartość, n.p.

    usages = { UsageOption.inactive : ['att1', 'att2], UsageOption.supplementary : 'att3' }

  • ldTableName - nazwa tabeli na podstawie której utowrzony zostanie obiekt LogicalData,

  • sqlAttributes - słownik z atrybutami obliczanymi za pomocą instrukcji SQL, w którym klucze odpowiadają nazwom atrybutów a wartości to instrukcje SQL,

  • categorical - lista zmiennych, które należy traktować jako kategorialne,

  • numerical - lista zmiennych, które należy traktować jako numeryczne,

  • testQuantiles - ile kwantyli zostanie wykorzystanych do obliczenia Lift-u i ROC; domyślna wartość to 50,

  • inactiveAsDefault - wartość 1 oznacza, że wszystkie zmienne z wyjątkiem pełniącej funkcję target będą nieaktywne, o ile ich rola nie zostanie jawnie zmieniona za pomocą parametrów usages lub usageDict; wartość 0 (domyślna) oznacza, że wszystkie zmienne będą aktywne.

  • repoName - nazwa repozytorium metadanych, w którym zostaną utworzone wszystkie obiekty; w przypadku pominięcia tego parametru wykorzystane zostanie repozytorium domyślne,

  • scoringLanguage - określa język programowania, w którym ma zostać utworzony kod scoringowy, o ile zaistnieje taka potrzeba.

Przykład 3.9. Przykład podstawowego zastosowania funkcji classifier

classifier('german_credit', 'Class', TreeSettings() )
            

Przykład 3.10. Przykład bardziej zaawansowanego zastosowania funkci classifier

classifier('vehicle', 'Class', TreeSettings(minNodeSize=5), 'van' )
            

Przykład 3.11. Określanie ról zmiennych w funkcji classifier

as = TreeSettings()
as.minNodeSizePrc = 15
classifier('german_credit', 'Class', as, 'van', usages = {UsageOption.inactive: ['credit_amount', 'credit_history']} )
            

Clusterer

Funkcja clusterer tworzy w repozytorium zestaw obiektów do budowania i testowania modeli wykorzystujących analizę skupień.

Składnia:

clusterer(trainTableName[, algorithmSettings][, prefix = s]
[, validationTableName = s][, usageDict = d][, usages = d][, ldTableName = s][, sqlAttributes = d]
[, categorical = l][, numerical = l][, testQuantiles = n][, repoName = s][, scoringLanguage = langname])

Objaśnienie parametrów:

  • trainTableName - nazwa tabeli w bazie danych zawierającej dane trenujące,

  • algorithmSettings - nazwa obiektu z ustawieniami algorytmu; powinien to być obiekt typu KohonenClusteringSettings lub KMeansSettings; domyślnie ustawienia algorytmu nie są wykorzystywane,

  • prefix - przedrostek, który zostanie dodany do nazw wszystkich utworzonych obiektów; w przypadku pominięcia tego parametru jako przedrostek posłuży nazwa tabeli z danymi trenującymi,

  • validationTableName - nazwa tabeli w bazie danych z danymi walidacyjnymi,

  • usageDict - słownik określające dodatkowe role zmiennych; aby określić rolę atrybutu należy podać jego nazwę jako klucz pozycji w słowniku i odpowiedni atrybut klasy UsageOption jako odpowiadającą wartość, n.p.

    usageDict = { 'att1' : UsageOption.inactive, 'att3' : UsageOption.supplementary }

  • usages - słownik określające dodatkowe role zmiennych; aby określić, które zmienne pełnią określoną rolę, należy dodać odpowiedni atrybut klasy UsageOption jako klucz pozycji w słowniku i listę atrybutów jako odpowiadającą wartość, n.p.

    usages = { UsageOption.inactive : ['att1', 'att2], UsageOption.supplementary : 'att3' }

  • ldTableName - nazwa tabeli na podstawie której utowrzony zostanie obiekt LogicalData,

  • sqlAttributes - słownik z atrybutami obliczanymi za pomocą instrukcji SQL, w którym klucze odpowiadają nazwom atrybutów a wartości to instrukcje SQL,

  • categorical - lista zmiennych, które należy traktować jako kategorialne,

  • numerical - lista zmiennych, które należy traktować jako numeryczne,

  • repoName - nazwa repozytorium metadanych, w którym zostaną utworzone wszystkie obiekty; w przypadku pominięcia tego parametru wykorzystane zostanie repozytorium domyślne,

  • scoringLanguage - określa język programowania, w którym ma zostać utworzony kod scoringowy, o ile zaistnieje taka potrzeba.

Przykład 3.12. Przykład podstawowego zastosowania funkcji clusterer

clusterer('german_credit')
            

Przykład 3.13. Przykład bardziej zaawansowanego zastosowania funkcji clusterer

clusterer('iris', KMeansSettings(), usages={UsageOption.inactive : ['Class', 'sepalwidth'] } )
            

Przykład 3.14. Określanie ról zmiennych w funkcji clusterer

as = TreeSettings()
as.minNodeSizePrc = 15
classifier('german_credit', 'Class', as, 'van', usages = {UsageOption.inactive: ['credit_amount', 'credit_history']} )
            

Applier

Dzięki funkcji applier można w prosty sposób stosować modele aproksymacje, klasyfikacyjne, oparte na analizie skupień i szeregach czasowych, oraz modele przeżycia.

Składnia:

applier(inputTableName, modelName[, outputTableName = s][, scoreColumnName = s]
[, targetColumnName = 's'][, clusterColumnName = s][, columnsToCopy = l][, positive = s]
[, clusterLevel = n][, clusterLevelFromLeaf = 0 | 1][, deleteObjects = 0 | 1][, customApplyItems = l]
[, prefix = s][, firstTimePoint = n][, lastimePoint = n][, numberOfTimePoints = n][, repoName = s])
        

Objaśnienie parametrów:

  • inputTableName - nazwa tabeli z danymi, do których ma zostać zastosowany model; tabela ta musi zawierać wszystkie zmienne określone w sygnaturze modelu,

  • modelName - nazwa modelu, który ma zostać zastosowany,

  • outTableName - nazwa tabeli wynikowej, która zostanie utworzona; jeśli ten parametr zostanie pominięta, nazwa tabeli wynikowej zostanie utworzona poprzez dodanie przedrostka _scored do nazwy tabeli wejściowej,

  • scoreColumnName - nazwa kolumny w tabeli wynikowej z ocenami obserwacji wygenerowanymi przez model; domyślnie kolumna ta ma nazwę score,

  • targetColumnName - nazwa kolumny w tabeli wynikowej z wartościami zmiennej target obliczonymi przez model; domyślnie kolumna ta ma nazwę target; ten parametr jest wykorzystywany tylko w przypadku stosowania modeli klasyfikacyjnych,

  • clusterColumnName - nazwa kolumny w tabeli wynikowej zawierającej skupisko przypisane przez model; domyślnie kolumna ta ma nazwę cluster; ten parametr jest wykorystywany tylko w przypadku stosowania modeli opartych na analazie skupień,

  • columnsToCopy - lista nazw kolumn, które będą przekopiowane bezpośrednio z tabeli wejściowej do tabeli wynikowej, n.p.

    columnsToCopy = ['Class', 'sepallength']

    Jeżeli zachodzi potrzeba zmiany nazwy danej kolumny w tabeli wynikowej, nazwa z tabeli wejściowej i nowa nazwa w tabeli wynikowej powinny być wpisane jako para, n.p.:

    columnsToCopy = [('Class', 'real_target'), 'sepallength']

    W tym przykładzie kolumna z tabeli wejściowej o nazwie Class zostanie przekopiowane do tabeli wynikowej pod nazwą real_target.

  • positive - pozytywna wartość zmiennej target dla algorytmu oceniającego; domyślnie wartość ta jest dobierana na podstawie ustawień samego modelu; ten parametr jest wykorzystywany tylko w przypadku modeli klasyfikacyjnych;

  • clusterLevel - poziom w hierarchii drzewa modelu opartego na analizie skupień, na którym obserwacje zostaną przypisane do skupiska; ten parametr jest wykorzystywany tylko w przypadku modeli opartych na analizie skupień,

  • clusterLevelFromLeaf - wartość 0 oznacza, że parametr clusterLevel oznacza odległość od korzenia drzewa, wartość 1 - od liścia; ten parametr jest wykorzystywany tylko w przypadku modeli opartych na analizie skupień,

  • deleteObjects - wartość 1 oznacza, że obiekty utworzone w repozytorium zostaną usunięte po zakończeniu stosowania modeu, wartość 0 (domyślna) oznacza, że obiekty nie zostaną usunięte.

  • customApplyItems - lista dodatkowych elementów dodanych do ApplyOutput, n.p. w celu uzyskania drugiej w kolejności najlepszej wartości zmiennej target,

  • repoName - nazwa repozytorium metadanych, w którym zostaną utworzone wszystkie obiekty; w przypadku pominięcia tego parametru wykorzystane zostanie repozytorium domyślne.

Przykład 3.15. Uproszczony proces budowania i zastosowania modelu opartego na analizie skupień

# w wyniku wykonania tego skryptu utworzona zostanie tabela o nazwie 'german_credit_scored'
clusterer('german_credit')
execute('german_credit_bt')
applier('german_credit_train', 'german_credit_model', clusterLevel=3, clusterLevelFromLeaf=0)
            

Przykład 3.16. Uproszczony proces budowania, testowania i stosowania modelu aproksymacyjnego

# w wyniku wykonania tego skryptu utworzona zostanie tabela o nazwie  'iris_scored'
approximator('iris', 'sepallength', LinearRegressionSettings() )
execute('iris_bt')
applier('iris_train', 'iris_model' )
            

Przykład 3.17. Uproszczony proces budowania, testowania i stosowania modelu klasyfikacyjnego

# w wyniku wykonania tego skryptu utworzona zostanie tabela o nazwie 'iris_scored' 
# oraz zasotanie otwarty arkusz kalkulacyjny Excel z zawartoscia tej tabeli
classifier('iris', 'Class', FeedforwardNeuralNetSettings(maxNumberOfIterations=10))
execute('iris_bt')
applier('iris_train', 'iris_model', customApplyItems=
    [ClassificationRankItem('2nd_target', ClassificationOutputType.predictedCategory, 1)] )
Office.createSpreadsheet().setCellDataArray(0,0, tableRead('iris_scored'))