nmf
Description
L'action nmf effectue une factorisation de matrice non négative (Nonnegative Matrix Factorization ). Elle décompose une matrice de donnéesStructure de données bidimensionnelle organisée en lignes (observations) et colonnes (variables), stockée en mémoire distribuée (CAS) pour permettre des traitements analytiques haute performance. d'entrée V (composée uniquement de valeurs positives ou nulles) en un produit de deux matrices de rang inférieur, W et H, telles que V ≈ W × H. C'est l'outil idéal pour la réduction de dimension, le clusteringLe clustering est une technique d'apprentissage non supervisé regroupant des données similaires en segments homogènes afin d'identifier des structures cachées sans étiquettes préalables. de 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. ou la complétion de données manquantes. Contrairement à l'ACPTechnique de réduction de dimension transformant des variables corrélées en nouvelles composantes principales décorrélées, tout en conservant le maximum de variance (information) des données originales. (PCA), la NMF produit des parties additives qui sont souvent plus faciles à interpréter : ici, on ne soustrait rien, on additionne des composants positifs pour reconstruire la réalité. C'est un peu comme une recette de cuisine : on ajoute des ingrédients, on n'en retire jamais ! 👩🍳
Paramètres Clés
Préparation des données
Création de données de test non négatives
Génération d'un petit jeu de données de consommation factice (toujours positif) pour tester la factorisation.
| 1 | DATA casuser.consommation; INPUT client $ cafe pain chocolat fruit; DATALINES; C1 5 2 0 1 C2 0 1 5 4 C3 4 2 1 0 C4 1 0 4 5 C5 5 3 0 0 C6 0 1 4 6 ; RUN; |
Exemples d'utilisation
Factorisation basique
Décomposition en 2 composants pour identifier deux profils types de consommation.
| 1 | PROC CAS; nmf.nmf TABLE={name='consommation'}, rank=2, method={name='APG'}, OUTPUT={casOut={name='matrice_W', replace=true}}, outputH={casOut={name='matrice_H', replace=true}}; RUN; |
Résultat Attendu :
Complétion de données (Imputation) et Régularisation
Utilisation de la NMF pour boucher les trous (valeurs manquantes) avec une pénalité L1 pour la parcimonie.
| 1 | PROC CAS; DATA casuser.manquant; SET casuser.consommation; IF _n_ = 1 THEN cafe = .; IF _n_ = 2 THEN fruit = .; RUN; nmf.nmf TABLE={name='manquant'}, rank=2, method={name='APG', maxIter=1000}, regularization={name='L1', alpha=0.1, beta=0.1}, impute={OUTPUT={name='donnees_completees', replace=true}}, OUTPUT={casOut={name='scores_W', replace=true}}, outputH={casOut={name='coeffs_H', replace=true}}; RUN; |