fastIca
Description
L'action fastIca effectue une analyse en composantes indépendantes (ICA) en utilisant l'algorithme rapide fastICA. Contrairement à l'Analyse en Composantes Principales (PCA) qui cherche des axes de varianceMesure statistique de la dispersion des données indiquant l'écart carré moyen par rapport à la moyenne. Une variance élevée traduit une grande hétérogénéité des observations autour du centre. maximale décorrélés, l'ICA cherche des composants qui sont statistiquement les plus indépendants possibles. C'est l'outil idéal pour résoudre le fameux 'problème du cocktail party' : retrouver des sources sonores individuelles à partir de plusieurs micros captant des mélanges. Dans le monde de la donnée, c'est parfait pour nettoyer des signaux ou séparer des motifs complexes cachés dans vos variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage. numériques.
Paramètres Clés
Préparation des données
Création de signaux mixtes pour test ICA
Ce code génère deux signaux sources (un sinus et un signal en dents de scie) et les mélange pour simuler des capteurs pollués.
| 1 | DATA casuser.mixed_signals; |
| 2 | drop i s1 s2; |
| 3 | DO i = 1 to 1000; |
| 4 | s1 = sin(i/10); /* Source 1 : Sinusoïde */ |
| 5 | s2 = (mod(i, 20) - 10) / 10; /* Source 2 : Dents de scie */ |
| 6 | /* Mélange linéaire des sources */ |
| 7 | sensor1 = 0.5 * s1 + 0.8 * s2 + rannor(123)*0.05; |
| 8 | sensor2 = 0.7 * s1 - 0.3 * s2 + rannor(123)*0.05; |
| 9 | time = i; |
| 10 | OUTPUT; |
| 11 | END; |
| 12 | RUN; |
Exemples d'utilisation
Analyse ICA de base
Exécute l'ICA sur deux capteurs avec les paramètres par défaut pour identifier les sources indépendantes.
| 1 | PROC CAS; |
| 2 | ica.fastIca TABLE="mixed_signals", inputs={"sensor1", "sensor2"}; |
| 3 | RUN; |
Résultat Attendu :
Séparation de sources avec scoring et configuration avancée
Utilise la méthode symétrique (plus stable), définit une fonction de contraste spécifique et génère une table de sortie avec les variables indépendantes nommées 'Source_'.
| 1 | PROC CAS; |
| 2 | ica.fastIca |
| 3 | TABLE={name="mixed_signals", caslib="casuser"}, |
| 4 | inputs={"sensor1", "sensor2"}, |
| 5 | method={name="SYMMETRIC", maxIter=200, tolerance=1e-7}, |
| 6 | gFunction="LOGCOSH", |
| 7 | seed=12345, |
| 8 | prefix="Source_", |
| 9 | OUTPUT={casOut={name="ica_results", replace=true}, copyVars={"time"}}, |
| 10 | outputTables={names={IndependentComponents="ica_summary"}}; |
| 11 | RUN; |