pca

eig

Description

L'action eig (Eigenvalue Decomposition) extrait les composantes principales d'un jeu de données en utilisant la méthode de décomposition en valeurs propres. Cette méthode est utilisée pour réduire la dimensionnalité des données tout en expliquant la variabilité maximale. Elle analyse la matrice de corrélation ou de covariance des variables d'entrée. L'action prend en charge les variables numériques et permet de générer des statistiques détaillées, des scores de composantes et du code de scoring.

pca.eig <result=results> <status=rc> / attributes={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}} code={casOut={caslib="string", compress=TRUE | FALSE, indexVars={"variable-name-1" <, "variable-name-2", ...>}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", onDemand=TRUE | FALSE, promote=TRUE | FALSE, replace=TRUE | FALSE, replication=integer, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1" <, "string-2", ...>}}, comment=TRUE | FALSE, fmtWdth=integer, indentSize=integer, intoCutPt=double, iProb=TRUE | FALSE, labelId=integer, lineSize=integer, noTrim=TRUE | FALSE, pCatAll=TRUE | FALSE, tabForm=TRUE | FALSE} cov=TRUE | FALSE display={caseSensitive=TRUE | FALSE, exclude=TRUE | FALSE, excludeAll=TRUE | FALSE, keyIsPath=TRUE | FALSE, names={"string-1" <, "string-2", ...>}, pathType="LABEL" | "NAME", traceNames=TRUE | FALSE} freq="variable-name" gpu={enable=TRUE | FALSE} groupbyLimit=64-bit-integer inputs={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}} n=integer noInt=TRUE | FALSE output={casOut={caslib="string", compress=TRUE | FALSE, indexVars={"variable-name-1" <, "variable-name-2", ...>}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", promote=TRUE | FALSE, replace=TRUE | FALSE, replication=integer, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1" <, "string-2", ...>}}, copyVars={"variable-name-1" <, "variable-name-2", ...>}, residual="string", score="string"} outputTables={groupByVarsRaw=TRUE | FALSE, includeAll=TRUE | FALSE, names={"string-1" <, "string-2", ...>} | {key-1={casouttable-1} <, key-2={casouttable-2}, ...>}, repeated=TRUE | FALSE, replace=TRUE | FALSE} outStat={casOut={caslib="string", compress=TRUE | FALSE, indexVars={"variable-name-1" <, "variable-name-2", ...>}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", promote=TRUE | FALSE, replace=TRUE | FALSE, replication=integer, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1" <, "string-2", ...>}}, rPrefix="string"} partial={"variable-name-1" <, "variable-name-2", ...>} prefix="string" singular=double std=TRUE | FALSE store={caslib="string", compress=TRUE | FALSE, indexVars={"variable-name-1" <, "variable-name-2", ...>}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", promote=TRUE | FALSE, replace=TRUE | FALSE, replication=integer, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1" <, "string-2", ...>}} table={caslib="string", computedOnDemand=TRUE | FALSE, computedVars={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, computedVarsProgram="string", dataSourceOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>}, groupBy={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, groupByMode="NOSORT" | "REDISTRIBUTE", importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DELIMITED" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SOUND" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}, name="table-name", orderBy={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, singlePass=TRUE | FALSE, vars={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, where="where-expression"} varDef="DF" | "N" | "WDF" | "WEIGHT" | "WGT" weight="variable-name";
Paramètres
ParamètreDescription
tableSpécifie la table d'entrée contenant les données à analyser.
inputsSpécifie les variables numériques à utiliser pour l'analyse en composantes principales. Si omis, toutes les variables numériques sont utilisées.
nSpécifie le nombre de composantes principales à calculer. La valeur 0 indique de calculer toutes les composantes possibles.
covSi défini sur Vrai (True), calcule les composantes principales à partir de la matrice de covariance au lieu de la matrice de corrélation (comportement par défaut).
stdSi défini sur Vrai (True), standardise les scores des composantes principales pour avoir une variance unitaire.
prefixSpécifie le préfixe à utiliser pour nommer les composantes principales (par défaut 'Prin').
outStatSpécifie la table de sortie CAS qui contiendra les statistiques telles que les moyennes, écarts-types, valeurs propres et vecteurs propres.
outputSpécifie la table de sortie CAS qui contiendra les scores des composantes principales pour chaque observation.
storeSauvegarde le modèle (informations d'ajustement) dans une table CAS pour une utilisation ultérieure (scoring).
codeGénère et écrit le code SAS DATA step pour calculer les valeurs prédites du modèle ajusté.
freqSpécifie une variable numérique contenant la fréquence d'occurrence de chaque observation.
weightSpécifie une variable numérique à utiliser comme pondération pour l'analyse.
partialSpécifie les variables numériques à 'partialiser' si vous souhaitez analyser une matrice de corrélation ou de covariance partielle.
gpuContrôle l'utilisation des processeurs graphiques (GPU) pour le calcul du modèle. Utilisez le sous-paramètre 'enable=True' pour activer.
Préparation des Données Voir la fiche de ce code dataprep
Création des données Iris

Charge le jeu de données classique Iris dans une table CAS pour l'exemple.

Copié !
1PROC CAS;
2 SESSION casauto;
3
4 /* Chargement des données sashelp.iris en mémoire CAS */
5 TABLE.loadTable /
6 caslib="CASUSER"
7 path="iris.sashdat"
8 casOut={name="iris", replace=true};
9
10 /* Alternative si le fichier n'existe pas : création depuis sashelp */
11 DATA casuser.iris;
12 SET sashelp.iris;
13 RUN;
14QUIT;

Exemples

Exécution de base de l'action pca.eig sur les variables numériques de la table Iris.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 pca.eig /
3 TABLE={name="iris"},
4 inputs={"SepalLength", "SepalWidth", "PetalLength", "PetalWidth"};
5RUN;
Résultat :
Affiche les valeurs propres, les vecteurs propres et la matrice de corrélation des variables spécifiées.

Exemple avancé demandant 2 composantes, sauvegardant les statistiques et les scores, et copiant la variable 'Species' dans la sortie.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 pca.eig /
3 TABLE={name="iris"},
4 inputs={"SepalLength", "SepalWidth", "PetalLength", "PetalWidth"},
5 n=2,
6 prefix="Comp",
7 outStat={name="iris_stats", replace=true},
8 OUTPUT={
9 casOut={name="iris_scores", replace=true},
10 copyVars={"Species"},
11 score="Score"
12 };
13RUN;
Résultat :
Génère deux tables CAS : 'iris_stats' avec les métriques du modèle et 'iris_scores' contenant les données originales plus deux nouvelles colonnes 'Comp1' et 'Comp2'.

FAQ

Quel est l'objectif principal de l'action eig ?
Comment réaliser une analyse sur la matrice de covariance plutôt que sur la matrice de corrélation ?
Comment sauvegarder le modèle pour un scoring ultérieur ?
Est-il possible de générer du code SAS pour le scoring ?
Comment spécifier le nombre de composantes principales à calculer ?
L'action eig supporte-t-elle l'accélération GPU ?
Comment changer le préfixe des noms des composantes principales ?
Quelle table de sortie contient les valeurs propres et les vecteurs propres ?
Comment obtenir les scores des composantes principales dans une table de sortie ?

Scénarios associés

Cas d'usage
Segmentation Clientèle via Matrice de Covariance

Une enseigne de grande distribution souhaite simplifier ses variables de comportement client (Récence, Fréquence, Montant, Visites Web) pour préparer une segmentation. Les analy...

Cas d'usage
Réduction Dimensionnelle Massive avec Accélération GPU et Persistance

Une usine connectée génère des données depuis 50 capteurs à haute fréquence. Pour la maintenance prédictive, l'équipe d'ingénierie doit réduire ces 50 signaux en composantes lat...

Cas d'usage
Scoring de Risque Bancaire avec Pondération et Génération de Code

Une banque développe un score de risque. Les variables (Revenu vs Ratio Dette) ont des échelles très différentes et doivent être standardisées. De plus, certaines transactions s...