factmac

factmac

Description

L'action `factmac` (Factorization Machine) implémente un algorithme d'apprentissage automatique conçu pour traiter efficacement des données creuses (sparse data). Elle est particulièrement populaire dans les systèmes de recommandation. Le modèle estime les interactions entre les variables en factorisant la matrice des poids, permettant de prédire des cibles même en présence de nombreuses valeurs manquantes ou de cardinalités élevées.

factmac.factmac <result=results> <status=rc> / applyRowOrder=TRUE | FALSE, attributes={{casinvardesc-1} <, {casinvardesc-2}, ...>}, code={aircodegen}, codeGroup="string", display={displayTables}, freq="variable-name", id={"variable-name-1" <, "variable-name-2", ...>}, inputs={{casinvardesc-1} <, {casinvardesc-2}, ...>}, learnStep=double, maxIter=integer, modelId="string", nFactors=integer, nominals={{casinvardesc-1} <, {casinvardesc-2}, ...>}, nonNegative=TRUE | FALSE, outModel={casouttable}, output={outputStatement}, outputTables={outputTables}, partByFrac={partByFracStatement}, partByVar={partByVarStatement}, printTarget=TRUE | FALSE, saveState={casouttable}, seed=double, * table={castable}, target="variable-name", weight="variable-name";
Paramètres
ParamètreDescription
table Spécifie la table d'entrée (CASTable) contenant les données d'entraînement. Ce paramètre est obligatoire.
target Nom de la variable cible (réponse) à prédire. Pour les systèmes de recommandation, il s'agit souvent de la note ou du rating.
inputs Liste des variables d'entrée à utiliser pour l'analyse.
nominals Spécifie les variables d'entrée qui doivent être traitées comme des variables nominales (catégorielles).
nFactors Le nombre de facteurs latents (k) à estimer. Une valeur plus élevée peut capturer des interactions plus complexes mais augmente le risque de surapprentissage (valeur par défaut : 5).
maxIter Le nombre maximum d'itérations pour l'optimisation du modèle (valeur par défaut : 30).
learnStep Le pas d'apprentissage (learning rate) utilisé par l'algorithme de descente de gradient stochastique (valeur par défaut : 0.001).
outModel Spécifie la table de sortie CAS où seront stockés les paramètres estimés du modèle (les facteurs latents et les biais).
saveState Sauvegarde l'état du modèle dans une table binaire (Analytic Store) pour un déploiement et un scoring ultérieurs.
output Crée une table contenant les prédictions (scores) pour les données d'entrée.
nonNegative Si défini à True, force la factorisation à être non négative (utile pour certaines interprétations).
Préparation des Données Voir la fiche de ce code dataprep
Création de données de notation de films (Système de recommandation)

Nous créons un jeu de données simulant des utilisateurs notant des films. Les données sont volontairement incomplètes (tous les utilisateurs n'ont pas vu tous les films), ce qui est typique pour l'utilisation de factmac.

Copié !
1DATA casuser.movie_ratings; INPUT UserID $ MovieID $ Rating; DATALINES;
2User1 Movie1 5
3User1 Movie2 3
4User1 Movie3 .
5User2 Movie1 4
6User2 Movie3 5
7User3 Movie2 5
8User3 Movie3 2
9User4 Movie1 1
10User4 Movie3 5
11; RUN;

Exemples

Cet exemple entraîne un modèle `factmac` de base sur les données de notation pour estimer 2 facteurs latents.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3factmac.factmac / TABLE={name="movie_ratings", caslib="casuser"}, target="Rating", inputs={"UserID", "MovieID"}, nominals={"UserID", "MovieID"}, nFactors=2, outModel={name="factmac_factors", caslib="casuser"};
4 
5RUN;
6 
Résultat :
L'action produit une table `factmac_factors` contenant les matrices de facteurs pour les utilisateurs et les films, ainsi que des tables de résultats affichant l'historique des itérations et l'erreur quadratique moyenne (RMSE).

Cet exemple configure un modèle plus complexe avec 5 facteurs, un pas d'apprentissage ajusté, et sauvegarde le modèle sous forme d'Analytic Store (ASTORE) pour pouvoir prédire de nouvelles notes ultérieurement.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3factmac.factmac / TABLE={name="movie_ratings", caslib="casuser"}, target="Rating", inputs={"UserID", "MovieID"}, nominals={"UserID", "MovieID"}, nFactors=5, maxIter=50, learnStep=0.005, saveState={name="factmac_astore", caslib="casuser"}, OUTPUT={casOut={name="scored_ratings", caslib="casuser", replace=TRUE}, copyVars={"UserID", "MovieID", "Rating"}};
4 
5RUN;
6 
Résultat :
Une table binaire `factmac_astore` est créée pour le déploiement. La table `scored_ratings` contient les prédictions du modèle (P_Rating) comparées aux notes réelles, permettant d'évaluer la qualité des recommandations.

FAQ

À quoi sert l'action factmac ?
À quoi sert le paramètre applyRowOrder ?
Que spécifie le paramètre attributes ?
À quoi sert le paramètre code ?
Que spécifie le paramètre codeGroup ?
À quoi sert le paramètre display ?
Que spécifie le paramètre freq ?
À quoi sert le paramètre id ?
Que spécifie le paramètre inputs ?
Que spécifie le paramètre learnStep ?
Que spécifie le paramètre maxIter ?
Que spécifie le paramètre modelId ?
Que spécifie le paramètre nFactors ?
Que spécifie le paramètre nominals ?
À quoi sert le paramètre nonNegative ?
À quoi sert le paramètre outModel ?
À quoi sert le paramètre output ?
Que spécifie le paramètre outputTables ?
À quoi sert le paramètre partByFrac ?
À quoi sert le paramètre partByVar ?
À quoi sert le paramètre printTarget ?
À quoi sert le paramètre saveState ?
Que spécifie le paramètre seed ?
Que spécifie le paramètre table (requis) ?
Que spécifie le paramètre target ?
Que spécifie le paramètre weight ?