È possibile utilizzare il modello lineare generalizzato, la regressione lineare, la macchina vettore di supporto lineare, le strutture ad albero casuali o gli algoritmi di analisi predittiva CHAID SPSS nei notebook.
Modello lineare generalizzato
Il modello lineare generalizzato (GLE) è un algoritmo analitico comunemente usato per diversi tipi di dati. Copre non solo i modelli statistici ampiamente utilizzati, come la regressione lineare per gli obiettivi distribuiti normalmente, i modelli logistici per gli obiettivi binari o multinomiali e i modelli lineari di log per i dati di conteggio, ma copre anche molti modelli statistici utili tramite la sua formulazione di modello molto generale. Oltre alla creazione del modello, il modello lineare generalizzato fornisce altre funzioni utili come la selezione delle variabili, la selezione automatica della distribuzione e della funzione di collegamento e le statistiche di valutazione del modello. Questo modello ha opzioni per la regolarizzazione, come ad esempio LASSO, regressione ridge, rete elastica, ecc. ed è anche in grado di gestire dati molto ampi.
Per ulteriori dettagli su come scegliere la distribuzione e la funzione di collegamento, vedere Combinazione distribuzione e funzione di collegamento.
Codice di esempio 1:
Questo esempio mostra un'impostazione GLE con la funzione di collegamento e distribuzione specificata, gli effetti specificati, l'intercettazione, la curva ROC di conduzione e la matrice di correlazione di stampa. Questo scenario crea un modello, quindi ne calcola il punteggio.
Esempio 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()
Codice di esempio 2:
Questo esempio mostra un'impostazione GLE con una funzione di collegamento e distribuzione non specificata e una selezione di variabili utilizzando il metodo stepwise in avanti. Questo scenario utilizza il metodo stepwise in avanti per selezionare la distribuzione, la funzione di collegamento e gli effetti, quindi crea e calcola il punteggio del modello.
Esempio 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()
Codice di esempio 3:
Questo esempio mostra un'impostazione GLE con la distribuzione non specificata, la funzione di collegamento specificata e la selezione delle variabili utilizzando il metodo LASSO, con il rilevamento dell'interazione bidirezionale e la selezione automatica dei parametri di penalità. Questo scenario rileva l'interazione bidirezionale per gli effetti, utilizza quindi il metodo LASSO per selezionare la distribuzione e gli effetti utilizzando la selezione automatica dei parametri di penalità, quindi crea e calcola il punteggio del modello.
Esempio 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()
Regressione lineare
Il modello di regressione lineare analizza la relazione predittiva tra un obiettivo continuo e uno o più predittori che possono essere continui o categoriali.
Le funzioni del modello di regressione lineare includono il rilevamento automatico dell'effetto di interazione, la selezione del modello a fasi in avanti, il controllo diagnostico e il rilevamento di categorie insolite in base alle medie marginali stimate (EMMEANS).
Codice di esempio:
Esempio 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()
SVM (Support Vector Machine) lineare
LSVM (Linear Support Vector Machine) fornisce un metodo di apprendimento supervisionato che genera funzioni di mappatura di input - output da una serie di dati di training etichettati. La funzione di mappatura può essere una funzione di classificazione o una funzione di regressione. LSVM è progettato per risolvere problemi su larga scala in termini di numero di record e di numero di variabili (parametri). Il suo spazio di funzioni è lo stesso dello spazio di input del problema e può gestire dati sparsi in cui il numero medio di elementi diversi da zero in un record è piccolo.
Codice di esempio:
Esempio 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()
Strutture ad albero casuali
Random Trees è un approccio potente per generare modelli predittivi forti (accurati). È comparabile e a volte migliore di altri metodi all'avanguardia per problemi di classificazione o regressione.
Random Trees è un modello di insieme composto da più alberi simili a CART. Ogni struttura ad albero cresce su un campione di bootstrap che si ottiene campionando i casi di dati originali con sostituzione. Inoltre, durante la crescita della struttura ad albero, per ogni nodo viene selezionata la migliore variabile di suddivisione da un numero minore specificato di variabili che vengono estratte in modo casuale dall'insieme completo di variabili. Ogni albero cresce nella misura più ampia possibile e non c'è potatura. Nel punteggio, Random Trees combina punteggi singoli di singoli alberi per voto a maggioranza (per la classificazione) o media (per la regressione).
Codice di esempio:
Esempio 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, acronimo di Chi-squared Automatic Interaction Detection, è un metodo di classificazione per la creazione di strutture ad albero delle decisioni basato sull'utilizzo di statistiche chi-quadrato per identificare suddivisioni ottimali. È disponibile anche un'estensione applicabile ai problemi di regressione.
CHAID esamina innanzitutto le tavole di contingenza tra ciascun campo di input e l'obiettivo e verifica la significatività utilizzando un test di indipendenza chi - quadrato. Se più di una di queste relazioni è statisticamente significativa, CHAID selezionerà il campo di input più significativo (valore p più piccolo). Se un input ha più di due categorie, tali categorie vengono confrontate e quelle che non presentano alcuna differenza nei risultati vengono unite insieme. A tale scopo, vengono unite in successione le coppie di categorie che presentano la differenza meno significativa. Il processo di unione delle categorie si interrompe quando la differenza tra tutte le categorie rimanenti è uguale a quella specificata dal test. Per i campi di input nominali è possibile unire qualsiasi categoria, mentre per gli insiemi ordinali è possibile unire solo le categorie contigue. I campi di input continui diversi dall'obiettivo non possono essere utilizzati direttamente; devono essere raccolti prima in campi ordinali.
Exhaustive CHAID è una modifica di CHAID che esegue operazioni avanzate per l'analisi di tutte le suddivisioni possibili per ogni predittore, ma richiede tempi di elaborazione maggiori.
Codice di esempio:
Esempio 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()
Argomento principale SPSS algoritmi di analisi predittiva