0 / 0
Volver a la versión inglesa de la documentación
Algoritmos de clasificación y regresión de análisis predictivo de SPSS en cuadernos
Última actualización: 07 oct 2024
Algoritmos de clasificación y regresión de análisis predictivo de SPSS en cuadernos

En los cuadernos, puede utilizar el modelo lineal generalizado, la regresión lineal, la máquina vectorial de soporte lineal, los árboles aleatorios o los algoritmos de análisis predictivo CHAID SPSS.

Modelo lineal generalizado

El modelo lineal generalizado (GLE) es un algoritmo analítico de uso común para diferentes tipos de datos. No solo abarca los modelos estadísticos utilizados ampliamente, tales como la regresión lineal para objetivos distribuidos normalmente, los modelos logísticos para objetivos binarios o multinomiales, y los modelos lineales de registro para los datos de recuentos, sino que también abarca muchos modelos estadísticos útiles mediante su formulación de modelos muy generalizada. Además de crear el modelo, el modelo lineal generalizado proporciona otras características útiles, tales como la selección de variables, la selección automática de funciones de distribución y enlace y las estadísticas de evaluación de modelos. Este modelo tiene opciones de regularización, como LASSO, regresión de crestas, red elástica, etc., y también es capaz de manejar datos muy amplios.

Para obtener más detalles sobre cómo elegir la función de distribución y enlace, consulte Combinación de la función de distribución y enlace.

Código de ejemplo 1:

Este ejemplo muestra un valor GLE con la función de distribución y enlace especificada, los efectos especificados, la interceptación, la curva ROC conductora y la matriz de correlación de impresión. Este escenario crea un modelo y, a continuación, puntúa el modelo.

Ejemplo de 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()

Código de ejemplo 2:

En este ejemplo se muestra un valor GLE con una función de distribución y enlace no especificada y una selección de variables utilizando el método de paso adelante. Este escenario utiliza el método de paso adelante para seleccionar la distribución, la función de enlace y los efectos, luego crea y puntúa el modelo.

Ejemplo de 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()

Código de ejemplo 3:

Este ejemplo muestra un valor GLE con la distribución no especificada, la función de enlace especificada y la selección de variables, utilizando el método LASSO, con la detección de interacciones bidireccionales y la selección automática de parámetros de penalización. Este escenario detecta los efectos de la interacción bidireccional y, a continuación, utiliza el método LASSO para seleccionar la distribución y los efectos utilizando la selección automática de parámetros de penalización y, a continuación, crea y puntúa el modelo.

Ejemplo de 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()

Regresión lineal

El modelo de regresión lineal analiza la relación predictiva entre un destino continuo y uno o más predictores que pueden ser continuos o categóricos.

Las características del modelo de regresión lineal incluyen la detección automática de efectos de interacción, la selección de modelos de paso adelante, la comprobación de diagnósticos y la detección de categorías inusuales basándose en EMMEANS (Estimated Marginal Means).

Código de ejemplo:

Ejemplo de 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()

Máquina de vectores de soporte lineal

La máquina de vectores de soporte lineal (LSVM) proporciona un método de aprendizaje supervisado que genera funciones de correlación de entrada-salida de un conjunto de datos de entrenamiento etiquetados. La función de correlación puede ser una función de clasificación o una función de regresión. LSVM está diseñado para resolver problemas a gran escala en términos del número de registros y el número de variables (parámetros). Su espacio de características es el mismo que el espacio de entrada del problema y puede manejar datos dispersos donde el número promedio de elementos que no son cero en un registro es pequeño.

Código de ejemplo:

Ejemplo de 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()

Árboles aleatorios

Los árboles aleatorios son un método potente para generar modelos predictivos fuertes (precisos). Es comparable y, a veces, mejor que otros métodos de última generación para los problemas de clasificación o regresión.

Los árboles aleatorios son modelo de conjuntos que consta de varios árboles de tipo CART. Cada árbol crece en una muestra de rutina de carga que se obtiene mediante el muestreo de casos de datos originales con reemplazo. Además, durante el crecimiento del árbol, para cada nodo, se selecciona la mejor variable dividida a partir de un número menor de variables especificado, que se extraen aleatoriamente del conjunto completo de variables. Cada árbol crece al máximo en la medida posible, sin que haya ninguna poda. En la puntuación, los Árboles aleatorios combinan las puntuaciones individuales de los árboles por mayoría de votos (para la clasificación) o promedio (para la regresión).

Código de ejemplo:

Ejemplo de 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, o detección automática de interacciones mediante chi-cuadrado (del inglés Chi-squared Automatic Interaction Detection), es un método de clasificación para generar árboles de decisión mediante estadísticas de chi-cuadrado para identificar divisiones óptimas. También está disponible una extensión aplicable a los problemas de regresión.

CHAID examina en primer lugar las tablas de referencias cruzadas entre cada uno de los campos de entrada y el destino, y prueba la significación utilizando una prueba de independencia de chi-cuadrado. Si más de una de estas relaciones es estadísticamente significativa, CHAID seleccionará el campo de entrada más significativo (valor p más pequeño). Si una entrada cuenta con más de dos categorías, se compararán estas categorías y se contraerán las que no presenten diferencias en los resultados. Para ello, se unirá el par de categorías que presenten menor diferencia, y así sucesivamente. Este proceso de fusión de categorías se detiene cuando todas las categorías restantes difieren entre sí en el nivel de comprobación especificado. En el caso de campos de entrada nominales, se pueden fusionar todas las categorías. Sin embargo, en los conjuntos ordinales, únicamente se podrán fusionar las categorías contiguas. Los campos de entrada continuos que no sean el destino no se pueden utilizar directamente; primero deben enlazarse con campos ordinales.

CHAID exhaustivo es una modificación de CHAID que examina con mayor precisión todas las divisiones posibles para cada predictor, aunque necesita más tiempo pare realizar los cálculos.

Código de ejemplo:

Ejemplo de 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()

Tema principal: SPSS algoritmos de análisis predictivo

Búsqueda y respuesta de IA generativa
Estas respuestas las genera un modelo de lenguaje grande en watsonx.ai que se basa en el contenido de la documentación del producto. Más información