Die Aktion factmac trainiert ein Factorization-Machine-Modell. Factorization Machines kombinieren die Vorteile von Support Vector Machines (SVM) mit Faktorisierungsmodellen. Sie modellieren alle Interaktionen zwischen Variablen durch faktorisiertes Parametern und eignen sich besonders gut für hochdimensionale Datensätze mit hoher Sparsity (viele Nullen), wie sie häufig in Empfehlungssystemen oder bei der Click-Through-Rate-Vorhersage vorkommen.
| Parameter | Beschreibung |
|---|---|
| table | Gibt die Einstellungen für die Eingabetabelle an, die die Trainingsdaten enthält. |
| target | Gibt den Namen der Zielvariablen an. |
| inputs | Gibt die Variablen an, die als Eingabe für das Training verwendet werden sollen. |
| nominals | Gibt die nominalen Variablen an, die im Training verwendet werden sollen. |
| nFactors | Gibt die Anzahl der zu schätzenden Faktoren an (Standardwert ist 5). |
| maxIter | Gibt die maximale Anzahl der Iterationen für die Optimierung an (Standardwert ist 30). |
| learnStep | Gibt die Lernschrittgröße für die Optimierung an (Standardwert ist 0.001). |
| seed | Gibt den Startwert für den Zufallszahlengenerator an. |
| outModel | Gibt die Ausgabedatentabelle an, in der die geschätzten Parameter des Factorization-Machine-Modells gespeichert werden. |
| output | Gibt die Ausgabedatentabelle an, in der die bewerteten Beobachtungen (Scoring-Ergebnisse) gespeichert werden. |
| saveState | Gibt die Ausgabedatentabelle an, in der der Zustand des Modells für zukünftiges Scoring gespeichert wird (Analytic Store). |
| nonNegative | Wenn auf True gesetzt, wird eine nicht-negative Faktorisierung durchgeführt. |
| printTarget | Wenn auf True gesetzt, enthält die Ausgabedatentabelle den Namen der vorhergesagten Zielvariablen. |
| partByFrac | Teilt die Eingabedaten zufällig in Trainings-, Validierungs- und Testdaten auf. |
| partByVar | Teilt die Daten basierend auf den Werten einer Variablen in Rollen auf. |
| weight | Gibt eine numerische Variable für die Gewichtung der Analysen an. |
| freq | Gibt eine numerische Variable an, die die Häufigkeit jeder Beobachtung enthält. |
| code | Erzeugt SAS-Score-Code. |
| codeGroup | Gibt die Code-Gruppe an. |
| applyRowOrder | Gibt an, ob eine vordefinierte Zeilenreihenfolge verwendet werden soll (benötigt orderby/groupby in table.partition). |
Erzeugt eine einfache Datentabelle 'ratings', die Benutzer-Item-Interaktionen (z.B. Filmbewertungen) simuliert, um die Funktionsweise der Factorization Machine zu demonstrieren.
| 1 | |
| 2 | PROC CAS; |
| 3 | dataStep.runCode / code=" |
| 4 | data casuser.ratings; |
| 5 | input user item rating; |
| 6 | datalines; |
| 7 | 1 1 5 1 2 3 1 3 4 2 1 4 2 2 2 2 3 5 3 1 2 3 2 5 3 3 3; |
| 8 | |
| 9 | run; |
| 10 | "; |
| 11 | |
| 12 | RUN; |
| 13 |
Trainiert ein Factorization-Machine-Modell mit Standardeinstellungen auf der Tabelle 'ratings', wobei 'user' und 'item' als Eingabevariablen verwendet werden.
| 1 | |
| 2 | PROC CAS; |
| 3 | factmac.factmac / TABLE={name="ratings", caslib="casuser"}, target="rating", inputs={"user", "item"}, nominals={"user", "item"}; |
| 4 | |
| 5 | RUN; |
| 6 |
Trainiert ein Modell mit 10 Faktoren und 50 Iterationen. Das Modell wird in 'factmac_model' gespeichert, und die bewerteten Daten werden in 'scored_ratings' ausgegeben.
| 1 | |
| 2 | PROC CAS; |
| 3 | factmac.factmac / TABLE={name="ratings", caslib="casuser"}, target="rating", inputs={"user", "item"}, nominals={"user", "item"}, nFactors=10, maxIter=50, learnStep=0.002, outModel={name="factmac_model", caslib="casuser", replace=true}, OUTPUT={casOut={name="scored_ratings", caslib="casuser", replace=true}, copyVars="ALL"}; |
| 4 | |
| 5 | RUN; |
| 6 |