9.2 OPG_APIS.CF
形式
OPG_APIS.CF( edge_tab_name IN VARCHAR2, edge_label IN VARCHAR2, rating_property IN VARCHAR2, iterations IN NUMBER DEFAULT 10, min_error IN NUMBER DEFAULT 0.001, k IN NUMBER DEFAULT 5, learning_rate IN NUMBER DEFAULT 0.0002, decrease_rate IN NUMBER DEFAULT 0.95, regularization IN NUMBER DEFAULT 0.02, dop IN NUMBER DEFAULT 8, wt_l IN/OUT VARCHAR2, wt_r IN/OUT VARCHAR2, wt_l1 IN/OUT VARCHAR2, wt_r1 IN/OUT VARCHAR2, wt_i IN/OUT VARCHAR2, wt_ld IN/OUT VARCHAR2, wt_rd IN/OUT VARCHAR2, tablespace IN VARCHAR2 DEFAULT NULL, options IN VARCHAR2 DEFAULT NULL);
説明
指定したグラフで行列因子分解を使用して協調フィルタリングを実行します。結果として作成される行列積の因子は、左表と右表に格納されます。
パラメータ
- edge_tab_name
-
プロパティ・グラフ・エッジ表(GE$)の名前。
- edge_label
-
評価プロパティを保持するエッジのラベル。
- rating_property
-
(将来の使用のために予約済。評価プロパティの名前。)
- iterations
-
実行する必要がある最大反復数。デフォルトは10。
- min_error
-
達成する最小エラー。一部の反復でエラー値がこの値より小さい場合、プロシージャは終了します。デフォルトは0.001。
- k
-
左側の積と右側の積の機能の数。デフォルトは5。
- learning_rate
-
勾配降下法の学習率。デフォルトは0.0002。
- decrease_rate
-
(将来の使用のために予約済。効率的な勾配降下法にとって学習率が大きすぎる場合、率を削減。デフォルトは0.95。)
- regularization
-
過剰適合を回避するための追加パラメータ。デフォルトは0.02
- dop
-
並列度。デフォルトは8。
- wt_l
-
行列因子分解の左側を保持する作業表の名前。
- wt_r
-
行列因子分解の右側を保持する作業表の名前。
- wt_l1
-
勾配降下法で左側の中間ステップを保持する作業表の名前。
- wt_r1
-
勾配降下法で右側の中間ステップを保持する作業表の名前。
- wt_I
-
中間行列積を保持する作業表の名前。
- wt_ld
-
勾配降下法で中間の左側のデルタを保持する作業表の名前。
- wt_rd
-
勾配降下法で中間の右側のデルタを保持する作業表の名前。
- tablespace
-
中間データを保管する表領域の名前です。
- options
-
操作に対する追加の設定。次の値が1つ以上含まれる(カンマ区切り)オプションの文字列。
-
'INMEMORY=T'は'inmemory'句を使用してスキーマ表を作成するためのオプションです。
-
'IMC_MC_B=T'はINMEMORY MEMCOMPRESS BASIC句を使用してスキーマ表を作成します。
-
使用上のノート
RDFデータを使用した協調フィルタリングの詳細は、「SQLベースのプロパティ・グラフ分析」、その中でも特に「協調フィルタリングの概要および例」を参照してください。
作業表がすでに存在する場合は、作業テーブルに関連したパラメータにそれらの名前を指定できます。この場合、アルゴリズムは、表を再作成せずに、前の反復の進行状況を継続できます。
作業表が存在しない場合、または既存の作業表を使用しない場合は、まずOPG_APIS.CF_PREPプロシージャをコールする必要があります。それにより、必要な作業表が作成されます。
協調フィルタリング・アルゴリズムの最終結果は、行列積の2つの因子であるwt_l
作業表とwt_r
作業表です。協調フィルタリングの予測を行う場合、これらの行列因子を使用する必要があります。
将来使用するために出力行列因子とアルゴリズムの現在の進行状況を保持することに関心がない場合は、OPG_APIS.CF_CLEANUPプロシージャをコールして、中間表と出力行列因子を保持するすべての作業表を削除できます。
例
次の例は、OPG_APIS.CF_PREPプロシージャをコールして作業表を作成し、それからOPG_APIS.CFプロシージャをコールし、rating
ラベルが付いたエッジを使用してphones
グラフで協調フィルタリングを実行します。
DECLARE wt_l varchar2(32); wt_r varchar2(32); wt_l1 varchar2(32); wt_r1 varchar2(32); wt_i varchar2(32); wt_ld varchar2(32); wt_rd varchar2(32); edge_tab_name varchar2(32) := 'phonesge$'; edge_label varchar2(32) := 'rating'; rating_property varchar2(32) := ''; iterations integer := 100; min_error number := 0.001; k integer := 5; learning_rate number := 0.001; decrease_rate number := 0.95; regularization number := 0.02; dop number := 2; tablespace varchar2(32) := null; options varchar2(32) := null; BEGIN opg_apis.cf_prep(edge_tab_name,wt_l,wt_r,wt_l1,wt_r1,wt_i,wt_ld,wt_rd); opg_apis.cf(edge_tab_name,edge_label,rating_property,iterations,min_error,k, learning_rate,decrease_rate,regularization,dop, wt_l,wt_r,wt_l1,wt_r1,wt_i,wt_ld,wt_rd,tablespace,options); END; /
次の例は、OPG_APIS.CF_PREPが以前に実行されていることを前提としており、その実行中に作成された様々な作業表を指定します。この場合、前述の例は、作業表の名前に「$CFL57$」のような接尾辞を自動的に割り当てました。(出力名は、生成時に表示できます。あるいは、OPG_APIS.CF_PREPへのコールでユーザー定義できます。)したがって、次の例は、OPG_APIS.CF_PREPを最初に呼び出さずに、OPG_APIS.CFを使用してアルゴリズムの追加反復を実行し、それによって前の実行の進行状況を継続できます。
DECLARE wt_l varchar2(32) = 'phonesge$$CFL57'; wt_r varchar2(32) = 'phonesge$$CFR57'; wt_l1 varchar2(32) = 'phonesge$$CFL157'; wt_r1 varchar2(32) = 'phonesge$$CFR157'; wt_i varchar2(32) = 'phonesge$$CFI57'; wt_ld varchar2(32) = 'phonesge$$CFLD57'; wt_rd varchar2(32) = 'phonesge$$CFRD57'; edge_tab_name varchar2(32) := 'phonesge$'; edge_label varchar2(32) := 'rating'; rating_property varchar2(32) := ''; iterations integer := 100; min_error number := 0.001; k integer := 5; learning_rate number := 0.001; decrease_rate number := 0.95; regularization number := 0.02; dop number := 2; tablespace varchar2(32) := null; options varchar2(32) := null; BEGIN opg_apis.cf(edge_tab_name,edge_label,rating_property,iterations,min_error,k, learning_rate,decrease_rate,regularization,dop, wt_l,wt_r,wt_l1,wt_r1,wt_i,wt_ld,wt_rd,tablespace,options); END; /
親トピック: OPG_APISパッケージのサブプログラム