factmac

factmac

Beschreibung

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.

factmac.factmac <result=results> <status=rc> / applyRowOrder=TRUE | FALSE, attributes={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, code={casOut={caslib="string", compress=TRUE | FALSE, indexVars={"variable-name-1" <, "variable-name-2", ...>}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", onDemand=TRUE | FALSE, promote=TRUE | FALSE, replace=TRUE | FALSE, replication=integer, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1" <, "string-2", ...>}}, comment=TRUE | FALSE, fmtWdth=integer, indentSize=integer, intoCutPt=double, iProb=TRUE | FALSE, labelId=integer, lineSize=integer, noTrim=TRUE | FALSE, pCatAll=TRUE | FALSE, tabForm=TRUE | FALSE}, codeGroup="string", display={caseSensitive=TRUE | FALSE, exclude=TRUE | FALSE, excludeAll=TRUE | FALSE, keyIsPath=TRUE | FALSE, names={"string-1" <, "string-2", ...>}, pathType="LABEL" | "NAME", traceNames=TRUE | FALSE}, freq="variable-name", id={"variable-name-1" <, "variable-name-2", ...>}, inputs={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, learnStep=double, maxIter=integer, modelId="string", nFactors=integer, nominals={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, nonNegative=TRUE | FALSE, outModel={caslib="string", compress=TRUE | FALSE, indexVars={"variable-name-1" <, "variable-name-2", ...>}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", promote=TRUE | FALSE, replace=TRUE | FALSE, replication=integer, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1" <, "string-2", ...>}}, output={casOut={caslib="string", compress=TRUE | FALSE, indexVars={"variable-name-1" <, "variable-name-2", ...>}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", onDemand=TRUE | FALSE, promote=TRUE | FALSE, replace=TRUE | FALSE, replication=integer, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1" <, "string-2", ...>}}, copyVars="ALL" | "ALL_MODEL" | "ALL_NUMERIC" | {"variable-name-1" <, "variable-name-2", ...>}}, outputTables={groupByVarsRaw=TRUE | FALSE, includeAll=TRUE | FALSE, names={"string-1" <, "string-2", ...>} | {key-1={casouttable-1} <, key-2={casouttable-2}, ...>}, repeated=TRUE | FALSE, replace=TRUE | FALSE}, partByFrac={seed=integer, test=double, validate=double}, partByVar={name="variable-name", test="string", train="string", validate="string"}, printTarget=TRUE | FALSE, saveState={caslib="string", compress=TRUE | FALSE, indexVars={"variable-name-1" <, "variable-name-2", ...>}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", promote=TRUE | FALSE, replace=TRUE | FALSE, replication=integer, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1" <, "string-2", ...>}}, seed=double, table={caslib="string", computedOnDemand=TRUE | FALSE, computedVars={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, computedVarsProgram="string", dataSourceOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>}, groupByMode="NOSORT" | "REDISTRIBUTE", importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DELIMITED" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SOUND" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}, name="table-name", singlePass=TRUE | FALSE, vars={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, where="where-expression", whereTable={casLib="string", dataSourceOptions={adls_noreq-parameters | bigquery-parameters | cas_noreq-parameters | clouddex-parameters | db2-parameters | dnfs-parameters | esp-parameters | fedsvr-parameters | gcs_noreq-parameters | hadoop-parameters | hana-parameters | impala-parameters | informix-parameters | jdbc-parameters | mongodb-parameters | mysql-parameters | odbc-parameters | oracle-parameters | path-parameters | postgres-parameters | redshift-parameters | s3-parameters | sapiq-parameters | sforce-parameters | singlestore_standard-parameters | snowflake-parameters | spark-parameters | spde-parameters | sqlserver-parameters | ss_noreq-parameters | teradata-parameters | vertica-parameters | yellowbrick-parameters}, importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DELIMITED" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SOUND" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}, name="table-name", vars={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, where="where-expression"}}, target="variable-name", weight="variable-name" ;
Einstellungen
ParameterBeschreibung
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).
Erstellung von Beispieldaten für Bewertungen

Erzeugt eine einfache Datentabelle 'ratings', die Benutzer-Item-Interaktionen (z.B. Filmbewertungen) simuliert, um die Funktionsweise der Factorization Machine zu demonstrieren.

Kopiert!
1 
2PROC CAS;
3dataStep.runCode / code="
4data casuser.ratings;
5input user item rating;
6datalines;
71 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 
9run;
10";
11 
12RUN;
13 

Beispiele

Trainiert ein Factorization-Machine-Modell mit Standardeinstellungen auf der Tabelle 'ratings', wobei 'user' und 'item' als Eingabevariablen verwendet werden.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1 
2PROC CAS;
3factmac.factmac / TABLE={name="ratings", caslib="casuser"}, target="rating", inputs={"user", "item"}, nominals={"user", "item"};
4 
5RUN;
6 
Ergebnis :
Das Modell wird trainiert und die Ergebnisse, einschließlich der Iterationshistorie und Modellinformationen, werden angezeigt.

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.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1 
2PROC CAS;
3factmac.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 
5RUN;
6 
Ergebnis :
Es werden detaillierte Modellstatistiken angezeigt. Die Tabelle 'factmac_model' enthält die Modellparameter und 'scored_ratings' enthält die ursprünglichen Daten zusammen mit den Vorhersagen.

FAQ

Was ist die Hauptaufgabe der Aktion factmac?
Wofür wird der Parameter table verwendet?
Was bewirkt der Parameter outModel?
Was ist der Zweck des Parameters nFactors?
Was steuert der Parameter maxIter?
Was legt der Parameter learnStep fest?
Was bewirkt der Parameter saveState?
Was passiert, wenn der Parameter nonNegative auf True gesetzt wird?