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
tableGibt die Einstellungen für die Eingabetabelle an, die die Trainingsdaten enthält.
targetGibt den Namen der Zielvariablen an.
inputsGibt die Variablen an, die als Eingabe für das Training verwendet werden sollen.
nominalsGibt die nominalen Variablen an, die im Training verwendet werden sollen.
nFactorsGibt die Anzahl der zu schätzenden Faktoren an (Standardwert ist 5).
maxIterGibt die maximale Anzahl der Iterationen für die Optimierung an (Standardwert ist 30).
learnStepGibt die Lernschrittgröße für die Optimierung an (Standardwert ist 0.001).
seedGibt den Startwert für den Zufallszahlengenerator an.
outModelGibt die Ausgabedatentabelle an, in der die geschätzten Parameter des Factorization-Machine-Modells gespeichert werden.
outputGibt die Ausgabedatentabelle an, in der die bewerteten Beobachtungen (Scoring-Ergebnisse) gespeichert werden.
saveStateGibt die Ausgabedatentabelle an, in der der Zustand des Modells für zukünftiges Scoring gespeichert wird (Analytic Store).
nonNegativeWenn auf True gesetzt, wird eine nicht-negative Faktorisierung durchgeführt.
printTargetWenn auf True gesetzt, enthält die Ausgabedatentabelle den Namen der vorhergesagten Zielvariablen.
partByFracTeilt die Eingabedaten zufällig in Trainings-, Validierungs- und Testdaten auf.
partByVarTeilt die Daten basierend auf den Werten einer Variablen in Rollen auf.
weightGibt eine numerische Variable für die Gewichtung der Analysen an.
freqGibt eine numerische Variable an, die die Häufigkeit jeder Beobachtung enthält.
codeErzeugt SAS-Score-Code.
codeGroupGibt die Code-Gruppe an.
applyRowOrderGibt 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?