itergs
Description
L'action `itergs` de l'ensemble d'actions extrait les composantes principales (ACP/PCATechnique de réduction de dimension transformant des variables corrélées en nouvelles composantes indépendantes. Elle simplifie les données tout en préservant l'essentiel de leur variance initiale.) d'un jeu de données en utilisant la méthode itérative basée sur l'orthogonalisation de Gram-SchmidtAlgorithme transformant une famille de vecteurs en une base orthogonale ou orthonormée. Il élimine les corrélations en projetant chaque vecteur sur l'espace orthogonal aux précédents.. C'est une méthode particulièrement robuste et numériquement stable, idéale pour les grands jeux de données où l'on ne souhaite extraire que les toutes premières composantes principales, ce qui évite de calculer la matrice de covariance complète. Un peu comme si vous cherchiez juste les deux ou trois étoiles les plus brillantes d'une galaxie sans avoir à cartographier tout l'univers !
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| table | Spécifie la table d'entrée contenant les données à analyser. |
| inputs | Liste les variables numériques à analyser. Si omis, toutes les variables numériques non spécifiées par ailleurs sont utilisées. |
| n | Le nombre de composantes principales à calculer. S'il est défini sur 0 (valeur par défaut), toutes les composantes possibles sont extraites. |
| epsilon | Le critère de convergence numérique pour la méthode itérative (par défaut 1E-12). |
| maxIter | Nombre maximum d'itérations autorisées pour l'algorithme (par défaut 500). |
| noCenter | Si défini sur True, désactive le centrage des variables (soustraction de la moyenne) avant l'analyse. |
| noScale | Si défini sur True, désactive la réduction des variables (division par l'écart-type) avant l'analyse. |
| output | Génère une table de sortie contenant les statistiques au niveau de l'observation, incluant typiquement les scores des composantes principales. |
| store | Sauvegarde les informations du modèle ajusté dans une table binaire (analytique store ou astore) pour un scoring ultérieur sur de nouvelles données. |
| code | Génère et sauvegarde le code SAS DATA Step permettant de recalculer les scores prédits. |
| varDef | Spécifie le diviseur (ex: 'DF', 'N') à utiliser dans le calcul des variances et écarts-types. |
Préparation des données
Chargement des données de test (Iris de Fisher)
Nous allons utiliser le célèbre jeu de données Iris pour illustrer notre ACP. Ces données sont parfaites pour réduire la dimensionnalité de 4 variables morphologiques vers 2 composantes principales.
| 1 | PROC CAS; |
| 2 | SESSION casauto; |
| 3 | /* Chargement du dataset SAShelp.iris dans CAS */ |
| 4 | TABLE.loadTable / caslib="casuser" path="iris.sashdat" casOut={name="iris", caslib="casuser", replace=true}; |
| 5 | RUN; |
| 6 | QUIT; |
Exemples d'utilisation
ACP basique avec extraction de 2 composantes
Une analyse en composantes principales simple utilisant l'approche itérative Gram-Schmidt pour extraire uniquement les 2 axes principaux, avec personnalisation du préfixe.
| 1 | PROC CAS; |
| 2 | pca.itergs / |
| 3 | TABLE={name="iris", caslib="casuser"} |
| 4 | inputs={"SepalLength", "SepalWidth", "PetalLength", "PetalWidth"} |
| 5 | n=2 |
| 6 | prefix="PrinComp_" |
| 7 | outputTables={names={"Eigenvalues", "ModelInfo"}}; |
| 8 | RUN; |
| 9 | QUIT; |
Résultat Attendu :
ACP itérative complète avec table de scores, sauvegarde Astore et code DATA Step
Ceci est le 'plat de résistance'. Il effectue l'ACP en modifiant la tolérance de convergence, produit une table contenant les scores projetés, sauvegarde le modèle sous forme de table binaire (astore) pour un déploiement fluide, et génère même le code DATA step associé. Le tout par groupe d'espèces !
| 1 | PROC CAS; |
| 2 | pca.itergs / |
| 3 | TABLE={name="iris", caslib="casuser", groupBy={"Species"}} |
| 4 | inputs={"SepalLength", "SepalWidth", "PetalLength", "PetalWidth"} |
| 5 | n=2 |
| 6 | epsilon=1E-10 |
| 7 | maxIter=1000 |
| 8 | varDef="DF" |
| 9 | noScale=false |
| 10 | noCenter=false |
| 11 | OUTPUT={casOut={name="iris_scores", caslib="casuser", replace=true}, copyVars={"Species"}, score="Score_"} |
| 12 | store={name="iris_pca_model", caslib="casuser", replace=true} |
| 13 | code={casOut={name="iris_pca_code", caslib="casuser", replace=true}} |
| 14 | outputTables={names={"Eigenvectors"="Vecteurs_Propres", "Variance"="Var_Expliquee"}, replace=true}; |
| 15 | RUN; |
| 16 | QUIT; |