Vous pouvez utiliser un modèle linéaire généralisé, une régression linéaire, une machine à vecteur de support linéaire, des arbres aléatoires ou des algorithmes d'analyse prédictive CHAID SPSS dans des cahiers.
Modèle linéaire généralisé
Le modèle linéaire généralisé (GLE) est un algorithme analytique couramment utilisé pour différents types de données. Il couvre non seulement les modèles statistiques largement utilisés, tels que la régression linéaire pour les cibles normalement réparties, les modèles logistiques pour les cibles binaires ou multinomiales et les modèles linéaires de consignation des données d'effectif, mais également de nombreux modèles statistiques utiles grâce à sa formulation de modèle très générique. Outre la génération du modèle, le modèle linéaire généralisé offre d'autres fonctions utiles telles que la sélection de variables, la sélection automatique de la fonction de distribution et de lien et les statistiques d'évaluation de modèle. Ce modèle comporte des options de régularisation, telles que LASSO, régression de crête, réseau élastique, etc., et est également capable de traiter des données très larges.
Pour plus de détails sur le choix de la fonction de distribution et de lien, voir Combinaison de la fonction de distribution et de lien.
Exemple de code 1 :
Cet exemple illustre un paramètre GLE avec la fonction de distribution et de lien spécifiée, des effets spécifiés, une interception, une courbe ROC de conduite et une matrice de corrélation d'impression. Ce scénario génère un modèle, puis évalue ce dernier.
Exemple 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()
Exemple de code 2 :
Cet exemple illustre un paramètre GLE avec la fonction de distribution et de lien non spécifiée et la sélection de variables au moyen de la méthode détaillée étape par étape ascendante. Ce scénario utilise la méthode détaillée étape par étape ascendante pour sélectionner la fonction de distribution et de lien et les effets, puis génère et évalue le modèle.
Exemple 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()
Exemple de code 3 :
Cet exemple illustre un paramètre GLE avec la fonction de distribution non spécifiée, la fonction de lien spécifiée et la sélection de variables au moyen de la méthode LASSO, avec la détection des interactions bidirectionnelles et sélection automatique du paramètre de pénalité. Ce scénario détecte une interaction bidirectionnelle pour les effets, puis utilise la méthode LASSO pour sélectionner la distribution et les effets au moyen de la sélection automatique du paramètre de pénalité, puis génère et évalue le modèle.
Exemple 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()
Régression linéaire
Le modèle de régression linéaire analyse la relation prédictive entre une cible continue et un ou plusieurs prédicteurs qui peuvent être continus ou catégoriques.
Les caractéristiques du modèle de régression linéaire incluent la détection automatique de l'effet d'interaction, la sélection du modèle détaillé étape par étape ascendant, la vérification du diagnostic et la détection de catégorie inhabituelle basée sur la moyenne marginale estimée (EMMEANS).
Exemple de code :
Exemple 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()
LSVM (Linear Support Vector Machine)
L'algorithme LSVM (Linear Support Vector Machine) offre une méthode d'apprentissage supervisé qui génère des fonctions de mappage entrée-sortie à partir d'un ensemble de données d'apprentissage étiquetées. La fonction de mappage peut être une fonction de classification ou une fonction de régression. LSVM a pour objet de résoudre les problèmes à grande échelle relatifs au nombre d'enregistrements et au nombre de variables (paramètres). Son espace de caractéristiques est le même que l'espace d'entrée du problème, et il peut gérer des données fragmentées lorsque le nombre moyen d'éléments différents de zéro dans un enregistrement est faible.
Exemple de code :
Exemple 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()
Arbres aléatoires
Random Trees est une approche puissante qui permet de générer des modèles prédictifs forts (précis). Il est comparable et parfois meilleur que les autres méthodes de pointe pour les problèmes de classification ou de régression.
Random Trees est un modèle d'ensemble composé de plusieurs arbres de type CART. Chaque arbre croît sur un échantillon de bootstrap obtenu en échantillonnant les cas de données d'origine au moyen du remplacement. De plus, au cours de la croissance de l'arbre, la meilleure variable de scission est sélectionnée pour chaque noeud à partir d'un plus petit nombre de variables spécifié qui sont extraites de manière aléatoire de l'ensemble complet de variables. Chaque arbre croît autant que possible, et aucun élagage n'est effectué. Dans le scoring, Random Trees combine les scores de chaque arbre selon un vote à la majorité (pour la classification) ou la moyenne (pour la régression).
Exemple de code :
Exemple 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 (Chi-squared Automatic Interaction Detection) est une méthode de classification permettant de créer des arbres de décisions à l'aide de statistiques du khi-deux, afin d'identifier les divisions optimales. Une extension applicable aux problèmes de régression est également disponible.
CHAID vérifie d'abord les tableaux croisés entre chaque champ d'entrée et la cible, ainsi que les tests de signification par le biais d'un test d'indépendance Khi-deux. Si plus d'une de ces relations est statistiquement significative, CHAID sélectionne le champ d'entrée le plus significatif (valeur p minimale). Si une valeur d'entrée possède plusieurs catégories, celles-ci sont comparées. Les catégories dont les résultats sont identiques sont réduites simultanément. Cette opération est effectuée en joignant la paire de catégories qui présente la plus faible différence de signification. Ce processus de fusion de catégories s'interrompt si toutes les autres catégories s'avèrent différentes au niveau de test indiqué. Pour les champs d'entrée nominaux, les catégories peuvent être fusionnées. Pour un ensemble d'ordinaux, seules les catégories contiguës peuvent l'être. Les champs d'entrée continus autres que la cible ne peuvent pas être utilisés directement ; ils doivent d'abord être binés dans les champs ordinaux.
La méthode Exhaustive CHAID correspond à une modification du CHAID qui examine plus en profondeur toutes les divisions possibles pour chaque prédicteur, mais dont les calculs sont plus longs.
Exemple de code :
Exemple 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()
Rubrique parent: SPSS