Sie können verallgemeinerte lineare Modelle, lineare Regression, lineare Support Vector Machine, Random Trees oder CHAID SPSS Predictive Analytics-Algorithmen in Notebooks verwenden.
Verallgemeinertes lineares Modell
Das verallgemeinerte lineare Modell (GLE - Generalized Linear Model) ist ein häufig verwendeter Analysealgorithmus für verschiedene Datentypen. Es deckt nicht nur gängige statistische Modelle ab, wie z. B. lineare Regression für normalverteilte Ziele, logistische Modelle für binäre oder multinomiale Ziele und loglinearen Modelle für Zähldaten, sondern auch viele nützliche statistische Modelle durch seine sehr allgemeine Modellformulierung. Zusätzlich zum Erstellen des Modells stellt das verallgemeinerte lineare Modell weitere nützliche Funktionen, wie z. B. Variablenauswahl, automatische Auswahl von Verteilung und Verknüpfungsfunktion sowie Modellevaluierungsstatistik, bereit. Dieses Modell hat Optionen für die Regularisierung, wie LASSO, Ridge-Regression, elastisches Netz usw., und ist auch in der Lage, sehr breite Daten zu verarbeiten.
Weitere Details zum Auswählen von Verteilung und Verknüpfungsfunktion finden Sie im Abschnitt zur Kombination einer Verteilung und einer Verknüpfungsfunktion.
Beispielcode 1:
Dieses Beispiel zeigt eine GLE-Einstellung mit angegebener Verteilung und Verknüpfungsfunktion, angegebenen Effekten, Durchführen einer ROC-Kurvenfunktion und Drucken einer Korrelationsmatrix. Dieses Szenario erstellt ein Modell und scort das Modell anschließend.
Python-Beispiel:
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()
Beispielcode 2:
Dieses Beispiel zeigt eine GLE-Einstellung mit nicht angegebener Verteilung und Verknüpfungsfunktion und Variablenauswahl über die Methode "Vorwärts schrittweise". Dieses Szenario verwendet die Methode "Vorwärts schrittweise" zum Auswählen von Verteilung, Verknüpfungsfunktion und Effekten und erstellt und scort anschließend das Modell.
Python-Beispiel:
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()
Beispielcode 3:
Dieses Beispiel zeigt eine GLE-Einstellung mit nicht angegebener Verteilung, angegebener Verknüpfungsfunktion und Variablenauswahl über die Methode "LASSO", mit Erkennung von Zweiwegeinteraktion und automatischer Auswahl von Penalisierungsparametern. Dieses Szenario erkennt Zweiwegeinteraktion für Effekte und verwendet dann die Methode "LASSO" zum Auswählen von Verteilung und Effekten über die automatische Auswahl von Penalisierungsparametern und erstellt und scort anschließend das Modell.
Python-Beispiel:
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()
Lineare Regression
Das lineare Regressionsmodell analysiert die Vorhersagebeziehung zwischen einem kontinuierlichen Ziel und mindestens einem Prädiktor, der kontinuierlich oder kategorial sein kann.
Zu den Funktionen des linearen Regressionsmodells gehören automatische Erkennung von Interaktionseffekten, Modellauswahl über die Methode "Vorwärts schrittweise", diagnostische Überprüfung und Erkennung ungewöhnlicher Kategorien auf der Basis von geschätzten Randmitteln (EMMEANS).
Beispielcode:
Python-Beispiel:
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()
Lineare Support Vector Machine
Die Linear Support Vector Machine (LSVM) stellt eine Methode für überwachtes Lernen bereit, die Ein-/Ausgabe-Zuordnungsfunktionen aus einem Satz von bezeichneten Trainingsdaten generiert. Die Zuordnungsfunktion kann entweder eine Klassifizierungsfunktion oder eine Regressionsfunktion sein. LSVM ist zum Lösen von umfangreichen Problemen bezüglich der Anzahl von Datensätzen und der Anzahl von Variablen (Parametern) konzipiert. Ihr Merkmalbereich ist identisch mit dem Eingabebereich des Problems und kann spärliche Daten verarbeiten, wenn die durchschnittliche Anzahl von Elementen ungleich null gering ist.
Beispielcode:
Python-Beispiel:
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()
Zufallsbaum
Random Trees ist ein leistungsfähiger Ansatz zum Generieren von starken (genauen) Vorhersagemodellen. Es entspricht bzw. übertrifft in manchen Fällen andere Verfahren der neuesten Generation für Klassifizierungs- oder Regressionsprobleme.
Random Trees ist ein Ensemblemodell, das aus mehreren CART-ähnlichen (Classification and Regression Tree - Klassifikations- und Regressionsbaum) Baumstrukturen besteht. Jede Baumstruktur basiert auf einer Bootstrap-Stichprobe, die durch Stichprobenentnahme mit Zurücklegen aus den ursprünglichen Datenfällen erhalten wird. Außerdem wird während des Baumaufbauss für jeden Knoten die beste Teilungsvariable aus einer angegebenen kleineren Anzahl von Variablen ausgewählt, die zufällig aus der vollständigen Variablengruppe gezogen werden. Jede Baumstruktur wächst so weit wie möglich, ein Abschneiden findet nicht statt. Beim Scoring kombiniert Random Trees einzelne Baumscores mit einer Mehrheitsentscheidung (bei der Klassifizierung) oder mit dem Durchschnitt (bei der Regression).
Beispielcode:
Python-Beispiel:
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 (Chi-squared Automatic Interaction Detection) ist eine Klassifizierungsmethode für die Erstellung von Entscheidungsbäumen mit Chi-Quadrat-Statistiken zur Identifizierung der optimalen Splits. Auch eine Erweiterung, die auf Regressionsprobleme angewendet werden kann, ist verfügbar.
CHAID untersucht zuerst die zwischen allen Eingabefeldern und dem Ziel vorhandenen Kreuztabellen und testet die Signifikanz mit einem Chi-Quadrat-Unabhängigkeitstest. Wenn mehr als eine dieser Beziehungen statistisch signifikant ist, wählt CHAID das Eingabefeld mit der höchsten Signifikanz (kleinster p-Wert) aus. Wenn eine Eingabe mehr als zwei Kategorien besitzt, werden diese verglichen und solche Kategorien gegeneinander reduziert, deren Ergebnis keinen Unterschied aufweist. Dies erfolgt, indem sukzessive alle Kategorienpaare mit dem am wenigsten signifikanten Unterschied verbunden werden. Diese Kategoriezusammenführung wird gestoppt, wenn die Abweichung aller verbleibenden Kategorien das angegebene Testniveau erreicht hat. Bei nominalen Eingabefeldern können alle Kategorien zusammengeführt werden. Bei einem ordinalen Set können nur zusammenhängende Kategorien zusammengeführt werden. Andere stetige Eingabefelder als das Ziel können nicht direkt verwendet werden. Sie müssen zuerst in ordinale Felder klassiert werden.
Exhaustive CHAID ist eine Änderung von CHAID, die noch gründlicher vorgeht, indem sie alle für jeden Prädiktor möglichen Aufteilungen untersucht, allerdings mehr Rechenzeit beansprucht.
Beispielcode:
Python-Beispiel:
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()
Übergeordnetes Thema: SPSS Vorhersageanalysealgorithmen