RALG_WEIGHT_FUNCTION

RALG_WEIGHT_FUNCTION設定は、スコアリング内の各属性の重みまたは寄与率を計算する、既存の登録済Rスクリプトの名前を指定するために使用します。指定したRスクリプトは、寄与率を評価するためにSQL関数PREDICTION_DETAILSで使用されます。

指定したRスクリプトでは、モデル・オブジェクトの最初の入力引数と、スコアリング・データのR data.frameの2番目の入力引数が含まれているR関数を定義します。機械学習ファンクションが分類、クラスタリングまたは特徴抽出の場合は、3番目の入力引数でターゲット・クラス名、クラスタIDまたは特徴IDが渡され、その特定のクラス、クラスタまたは特徴の重みが計算されます。スクリプトにより、各属性の影響を与える重みが行内に含まれるdata.frameが戻されます。各行は、その入力スコアリングdata.frameに対応しています

例6-12 RALG_WEIGHT_FUNCTIONの例

この例では、Rモデル属性の重みまたは寄与率を計算するRスクリプトMY_PREDICT_WEIGHT_SCRIPTの名前をmodel_setting_tableで指定しています。
Begin
insert into model_setting_table values
(dbms_data_mining.ralg_weight_function, 'MY_PREDICT_WEIGHT_SCRIPT');
End;
/
Oracle Machine Learning for Rスクリプト・リポジトリでは、回帰用のスクリプトMY_PREDICT_WEIGHT_SCRIPTは次のように登録されます。
'function(mod, data) { coef(mod)[-1L]*data }'
Oracle Machine Learning for Rスクリプト・リポジトリでは、ロジット分類用のスクリプトMY_PREDICT_WEIGHT_SCRIPTは次のように登録されます:
'function(mod, dat, clas) {
   v <- predict(mod, newdata=dat, type = "response");
   v0 <- data.frame(v, 1-v); names(v0) <- c("0", "1");
   res <- data.frame(lapply(seq_along(dat),
   function(x, dat) {
   if(is.numeric(dat[[x]])) dat[,x] <- as.numeric(0)
   else dat[,x] <- as.factor(NA);
   vv <- predict(mod, newdata = dat, type = "response");
   vv = data.frame(vv, 1-vv); names(vv) <- c("0", "1");
   v0[[clas]] / vv[[clas]]}, dat = dat));
   names(res) <- names(dat);
   res}'

関連トピック