Translation not up to date
W notebookach można użyć uogólnionego modelu liniowego, regresji liniowej, wektorów obsługi liniowej, drzew losowych lub algorytmów analizy predykcyjnej CHAID SPSS .
Uogólniony model liniowy
Uogólniony model liniowy (Generalized Linear Model-GLE) jest powszechnie używanym algorytmem analitycznym dla różnych typów danych. Obejmuje ona nie tylko powszechnie stosowane modele statystyczne, takie jak regresja liniowa dla normalnie rozproszonych zmiennych przewidywanych, modele logistyczne dla celów binarnych lub wielomianowych oraz modele liniowe dla danych liczonych, ale również obejmuje wiele użytecznych modeli statystycznych za pośrednictwem modelu o bardzo ogólnym modelu. Oprócz budowania modelu, uogólniony model liniowy udostępnia inne użyteczne funkcje, takie jak wybór zmiennych, automatyczny wybór funkcji dystrybucji i łączenia oraz statystyki oceny modelu. Model ten posiada opcje regulacji, takie jak LASSO, regresja grzbietowa, siatka elastyczna, itp., i jest także zdolny do obsługi bardzo szerokich danych.
Więcej informacji na temat sposobu wyboru rozkładu i funkcji łączenia można znaleźć w sekcji Rozkład i kombinacja funkcji łączenia.
Przykład kodu 1:
W tym przykładzie przedstawiono ustawienie GLE o określonej funkcji dystrybucji i łączenia, określone efekty, wyraz wolny, przebieg krzywej ROC i macierz korelacji wydruku. W tym scenariuszu tworzony jest model, a następnie model jest oceniany na podstawie modelu.
Przykład Python :
from spss.ml.classificationandregression.generalizedlinear import GeneralizedLinear
from spss.ml.classificationandregression.params.effect import Effect
gle1 = GeneralizedLinear(). \
setTargetField("Work_experience"). \
setInputFieldList(["Beginning_salary", "Sex_of_employee", "Educational_level", "Minority_classification", "Current_salary"]). \
setEffects([
Effect(fields=["Beginning_salary"], nestingLevels=[0]),
Effect(fields=["Sex_of_employee"], nestingLevels=[0]),
Effect(fields=["Educational_level"], nestingLevels=[0]),
Effect(fields=["Current_salary"], nestingLevels=[0]),
Effect(fields=["Sex_of_employee", "Educational_level"], nestingLevels=[0, 0])]). \
setIntercept(True). \
setDistribution("NORMAL"). \
setLinkFunction("LOG"). \
setAnalysisType("BOTH"). \
setConductRocCurve(True)
gleModel1 = gle1.fit(data)
PMML = gleModel1.toPMML()
statXML = gleModel1.statXML()
predictions1 = gleModel1.transform(data)
predictions1.show()
Przykładowy kod 2:
W tym przykładzie pokazano ustawienie GLE z nieokreśloną funkcją dystrybucji i łączenia oraz wybór zmiennych przy użyciu metody krokowej krokowej. W tym scenariuszu używana jest metoda krokowa postępujący w celu wybrania rozkładu, funkcji połączenia i efektów, a następnie budowania i oceny modelu.
Przykład Python :
from spss.ml.classificationandregression.generalizedlinear import GeneralizedLinear
from spss.ml.classificationandregression.params.effect import Effect
gle2 = GeneralizedLinear(). \
setTargetField("Work_experience"). \
setInputFieldList(["Beginning_salary", "Sex_of_employee", "Educational_level", "Minority_classification", "Current_salary"]). \
setEffects([
Effect(fields=["Beginning_salary"], nestingLevels=[0]),
Effect(fields=["Sex_of_employee"], nestingLevels=[0]),
Effect(fields=["Educational_level"], nestingLevels=[0]),
Effect(fields=["Current_salary"], nestingLevels=[0])]). \
setIntercept(True). \
setDistribution("UNKNOWN"). \
setLinkFunction("UNKNOWN"). \
setAnalysisType("BOTH"). \
setUseVariableSelection(True). \
setVariableSelectionMethod("FORWARD_STEPWISE")
gleModel2 = gle2.fit(data)
PMML = gleModel2.toPMML()
statXML = gleModel2.statXML()
predictions2 = gleModel2.transform(data)
predictions2.show()
Przykładowy kod 3:
W tym przykładzie pokazano ustawienie GLE z nieokreśloną dystrybucją, określoną funkcją łączenia i wybór zmiennych przy użyciu metody LASSO, z dwukierunkową wykrywaniem interakcji i automatycznym wyborem parametrów karnych. Ten scenariusz wykrywa interakcje dwukierunkowe dla efektów, a następnie korzysta z metody LASSO w celu wybrania rozkładu i efektów przy użyciu automatycznego wyboru parametrów kary, a następnie buduje i ocenia model.
Przykład Python :
from spss.ml.classificationandregression.generalizedlinear import GeneralizedLinear
from spss.ml.classificationandregression.params.effect import Effect
gle3 = GeneralizedLinear(). \
setTargetField("Work_experience"). \
setInputFieldList(["Beginning_salary", "Sex_of_employee", "Educational_level", "Minority_classification", "Current_salary"]). \
setEffects([
Effect(fields=["Beginning_salary"], nestingLevels=[0]),
Effect(fields=["Sex_of_employee"], nestingLevels=[0]),
Effect(fields=["Educational_level"], nestingLevels=[0]),
Effect(fields=["Current_salary"], nestingLevels=[0])]). \
setIntercept(True). \
setDistribution("UNKNOWN"). \
setLinkFunction("LOG"). \
setAnalysisType("BOTH"). \
setDetectTwoWayInteraction(True). \
setUseVariableSelection(True). \
setVariableSelectionMethod("LASSO"). \
setUserSpecPenaltyParams(False)
gleModel3 = gle3.fit(data)
PMML = gleModel3.toPMML()
statXML = gleModel3.statXML()
predictions3 = gleModel3.transform(data)
predictions3.show()
regresja liniowa
Model regresji liniowej analizuje relację predykcyjną między zmienną przewidywaną ciągłą a jednym lub większą liczbą predyktorów, które mogą być ciągłe lub jakościowe.
Cechy modelu regresji liniowej obejmują automatyczne wykrywanie efektu interakcji, postępujący wybór modelu krokowego, sprawdzanie diagnostyki i wykrywanie nietypowych kategorii w oparciu o szacowane średnie brzegowe (EMMEANS).
Przykładowy kod:
Przykład Python :
from spss.ml.classificationandregression.linearregression import LinearRegression
le = LinearRegression(). \
setTargetField("target"). \
setInputFieldList(["predictor1", "predictor2", "predictorn"]). \
setDetectTwoWayInteraction(True). \
setVarSelectionMethod("forwardStepwise")
leModel = le.fit(data)
predictions = leModel.transform(data)
predictions.show()
Wektor obsługi liniowej
Model LSVM (Linear Vector Vector Machine) udostępnia nadzorowaną metodę uczenia, która generuje funkcje odwzorowania danych wejściowych z zestawu etykiet z etykietą. Funkcja odwzorowania może być funkcją klasyfikowania lub funkcją regresji. LSVM jest przeznaczony do rozwiązywania problemów na dużą skalę, jeśli chodzi o liczbę rekordów i liczbę zmiennych (parametrów). Jego przestrzeń funkcji jest taka sama, jak przestrzeń wejściowa problemu, i może obsługiwać rzadkie dane, w których średnia liczba elementów niezerowych w jednym rekordzie jest niewielka.
Przykładowy kod:
Przykład Python :
from spss.ml.classificationandregression.linearsupportvectormachine import LinearSupportVectorMachine
lsvm = LinearSupportVectorMachine().\
setTargetField("BareNuc").\
setInputFieldList(["Clump", "UnifSize", "UnifShape", "MargAdh", "SingEpiSize", "BlandChrom", "NormNucl", "Mit", "Class"]).\
setPenaltyFunction("L2")
lsvmModel = lsvm.fit(df)
predictions = lsvmModel.transform(data)
predictions.show()
Drzewa losowe
Random Trees to potężne podejście do generowania silnych (dokładnych) modeli predykcyjnych. Jest porównywalna i czasami lepsza od innych najnowocześniejszych metod klasyfikacji lub problemów regresyjnych.
Random Trees to model kompletu składający się z wielu drzew typu CART. Każde drzewo rośnie na próbce bootstrap, która jest uzyskiwane poprzez pobranie próbek pierwotnych obserwacji z wymianą. Co więcej, podczas wzrostu drzewa, dla każdego węzła wybierana jest najlepsza zmienna dzielona z określonej mniejszej liczby zmiennych, które są losowane losowo z pełnego zestawu zmiennych. Każde drzewo rośnie w największym możliwym stopniu, a nie ma przycinania. W przypadku oceny węzeł Drzewa losowe łączy wyniki poszczególnych drzew poprzez głosowanie większościowe (dla klasyfikacji) lub uśrednianie (dla regresji).
Przykładowy kod:
Przykład Python :
from spss.ml.classificationandregression.ensemble.randomtrees import RandomTrees
# Random trees required a "target" field and some input fields. If "target" is continuous, then regression trees will be generate else classification .
# You can use the SPSS Attribute or Spark ML Attribute to indicate the field to categorical or continuous.
randomTrees = RandomTrees(). \
setTargetField("target"). \
setInputFieldList(["feature1", "feature2", "feature3"]). \
numTrees(10). \
setMaxTreeDepth(5)
randomTreesModel = randomTrees.fit(df)
predictions = randomTreesModel.transform(scoreDF)
predictions.show()
CHAID
CHAID (ang. Chi-squared Automatic Interaction Detection) to metoda klasyfikacji umożliwiająca budowanie drzew decyzyjnych z użyciem statystyki chi-kwadrat w celu identyfikacji optymalnych podziałów. Dostępne jest również rozszerzenie mające zastosowanie do problemów regresji.
CHAID najpierw bada tabele krzyżowe między każdym z pól wejściowych i celem oraz testy istotności przy użyciu testu niezależności chi-kwadrat. Jeśli więcej niż jeden z tych relacji jest statystycznie istotny, CHAID wybierze zmienną wejściową, która jest najbardziej znacząca (najmniejsza wartość p). Jeśli dane wejściowe należą do dwu lub większej liczby kategorii, są one porównywane, a kategorie niewykazujące różnic w wynikach są zwijane razem. Realizuje się to przez sukcesywne łączenie par kategorii wykazujących najmniej znaczące różnice. Ten proces scalania kategorii jest zatrzymywany w chwili, gdy wszystkie pozostałe kategorie różnią się na danym poziomie testowania. W przypadku wejściowych zmiennych nominalnych można scalać dowolne kategorie; w przypadku zestawu porządkowego możliwe jest scalenie tylko kategorii zmiennych ilościowych. Zmienne wejściowe ciągłe inne niż zmienna przewidywaną nie mogą być używane bezpośrednio; najpierw muszą zostać zbinowane na pola porządkowe.
Wyczerpujący CHAID stanowi modyfikację CHAID umożliwiającą dokładniejsze badanie wszystkich możliwych podziałów dla każdego predyktora, lecz obliczenia w jego przypadku zajmują więcej czasu.
Przykładowy kod:
Przykład Python :
from spss.ml.classificationandregression.tree.chaid import CHAID
chaid = CHAID(). \
setTargetField("salary"). \
setInputFieldList(["educ", "jobcat", "gender"])
chaidModel = chaid.fit(data)
pmmlStr = chaidModel.toPMML()
statxmlStr = chaidModel.statXML()
predictions = chaidModel.transform(data)
predictions.show()
Temat nadrzędny: Algorytmy analizy predykcyjnejSPSS