kPca
Description
L'action `kPca` effectue un apprentissage par Analyse en Composantes Principales à noyau (Kernel PCAExtension de l'ACP utilisant des fonctions à noyau pour projeter les données dans un espace de plus grande dimension. Elle permet de capturer des structures et relations non linéaires complexes.). C'est la déclinaison non linéaire de l'ACP classique : elle utilise l'astuce du noyau (kernel trick) pour projeter vos données dans un espace de plus grande dimension afin de séparer ou de structurer ce qui ne l'est pas linéairement ! Idéal pour la réduction de dimensionnalité de données complexes (parce que dans la vraie vie, tout n'est pas qu'une simple ligne droite).
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| table | Spécifie la table d'entrée contenant les données d'apprentissage. |
| inputs | Liste des variables numériques à utiliser dans l'analyse. |
| kerType | Définit le type de noyau mathématique à appliquer : 'LINEAR', 'POLYNOMIAL' ou 'RBF' (Radial Basis Function). |
| kerParam | Paramètre du noyau (ex: la largeur de bande pour un noyau RBF). |
| method | Méthode de calcul. 'EXACT' est précis mais lourd en mémoire. 'APPROXIMATE' utilise l'approximation de Nyström, parfaite pour passer à l'échelle sur de gros volumes de données. |
| center / scale | Indique s'il faut centrer et réduire les variables avant l'analyse. Fortement recommandé ! |
| bwTune | Paramètres pour l'ajustement (tuning) automatique de la bande passante du noyau RBF. |
| preimage | Booléen qui active l'apprentissage de la pré-image, permettant de reconstruire (estimer) les données originales depuis l'espace de projection. |
| output | Gère la table de sortie contenant les scores (les composantes principales) des données d'entraînement. |
| saveState | Spécifie la table de sortie pour sauvegarder le modèle sous forme de table d'état analytique (Astore). Utile pour scorer de nouvelles données plus tard sans avoir à tout recalculer. |
Préparation des données
Création d'un jeu de données non linéaire
Nous allons générer des données simulées avec des relations non linéaires (quadratique et sinusoïdale) pour illustrer la puissance de l'ACP à noyau.
| 1 | DATA casuser.kpca_data; |
| 2 | call streaminit(12345); |
| 3 | DO id = 1 to 1000; |
| 4 | x1 = rand('Normal'); |
| 5 | x2 = x1 * x1 + rand('Normal', 0, 0.1); |
| 6 | x3 = sin(x1) + rand('Normal', 0, 0.1); |
| 7 | OUTPUT; |
| 8 | END; |
| 9 | RUN; |
Exemples d'utilisation
Kernel PCA de base avec noyau RBF
Cette action effectue une KPCA standard. On centre et réduit les variables, on applique un noyau RBF et on extrait les 2 premières composantes principales.
| 1 | PROC CAS; |
| 2 | kernelPca.kPca / |
| 3 | TABLE={name='kpca_data', caslib='casuser'} |
| 4 | inputs={'x1', 'x2', 'x3'} |
| 5 | id={'id'} |
| 6 | center=true |
| 7 | scale=true |
| 8 | kerType='RBF' |
| 9 | kerParam=0.5 |
| 10 | OUTPUT={casout={name='kpca_scores', caslib='casuser', replace=true}, npc=2}; |
| 11 | QUIT; |
Résultat Attendu :
KPCA Haute Performance avec Tuning automatique, Pré-image et sauvegarde Astore
Ici, on sort le grand jeu : utilisation de la méthode d'approximation ('APPROXIMATE') pour une performance optimale, réglage automatique de la bande passante RBF ('bwTune'), calcul de la pré-image (reconstruction) et sauvegarde du modèle (saveState) pour du scorage en production.
| 1 | PROC CAS; |
| 2 | kernelPca.kPca / |
| 3 | TABLE={name='kpca_data', caslib='casuser'} |
| 4 | inputs={'x1', 'x2', 'x3'} |
| 5 | method='APPROXIMATE' |
| 6 | center=true |
| 7 | scale=true |
| 8 | kerType='RBF' |
| 9 | bwTune={method='RANDOMCMSE', nSample=100, nPass=5, seed=123} |
| 10 | preimage=true |
| 11 | preimageMethod='ITERATIVE' |
| 12 | preimageNPC=2 |
| 13 | OUTPUT={casout={name='kpca_out_approx', caslib='casuser', replace=true}, npc=2, copyVars={'id'}} |
| 14 | eigenVal={name='eigval_table', replace=true} |
| 15 | eigenVec={casout={name='eigvec_table', replace=true}} |
| 16 | saveState={name='kpca_astore', caslib='casuser', replace=true}; |
| 17 | QUIT; |