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;
/