RALG_SCORE_FUNCTION

RALG_SCORE_FUNCTION設定は、データのスコアリングに使用するRアルゴリズム機械学習モデルに応じた既存の登録済Rスクリプトを指定するために使用します。

指定したRスクリプトによりR関数が定義されます。最初の入力引数は、モデル・オブジェクトを定義します。2番目の入力引数では、データのスコアリングに使用されるR data.frameを定義します。

例6-7 RALG_SCORE_FUNCTIONの例

この例は、R関数が線形モデルのモデルを取得し、data.frame.のデータをスコアリングする方法を示しています関数引数objectはLMモデルです。引数newdataは、スコアリングするデータを格納しているdata.frameです。
function(object, newdata) {res <- predict.lm(object, newdata = newdata, se.fit = TRUE); data.frame(fit=res$fit, se=res$se.fit, df=summary(object)$df[1L])}

R関数の出力はdata.frameとなる必要があります。各行は、入力data.frameの対応するスコアリング・データの予測を表しています。data.frameの列は、次のように機械学習ファンクションに固有です。

回帰: 予測対象のターゲット値の単一の数値列であり、モデル適合の標準誤差および自由度の2つのオプション列があります。オプションの列は、SQL関数PREDICTION_BOUNDSの動作に必要なものです。

例6-8 回帰用のRALG_SCORE_FUNCTIONの例

この例は、モデルのスコアリングに使用するRスクリプトMY_LM_PREDICT_SCRIPTの名前をモデル設定表model_setting_tableで指定する方法を示しています。

Begin
insert into model_setting_table values
(dbms_data_mining.ralg_score_function, 'MY_LM_PREDICT_SCRIPT');
End;
/
Oracle Machine Learning for Rスクリプト・リポジトリでは、スクリプトMY_LM_PREDICT_SCRIPTが次のように登録されます。
function(object, newdata) {data.frame(pre = predict(object, newdata = newdata))}

分類: 各列は、1つのターゲット・クラスの予測確率を表します。列名は、ターゲット・クラス名です。

例6-9 分類用のRALG_SCORE_FUNCTIONの例

この例は、ロジット分類モデルのスコアリングに使用されるRスクリプトMY_LOGITGLM_PREDICT_SCRIPTの名前をモデル設定表model_setting_tableで指定する方法を示しています。

Begin
insert into model_setting_table values
(dbms_data_mining.ralg_score_function, 'MY_LOGITGLM_PREDICT_SCRIPT');
End;
/
Oracle Machine Learning for Rスクリプト・リポジトリでは、MY_LOGITGLM_PREDICT_SCRIPTは次のように登録されます。これは、"0""と"1"の2つのターゲット・クラスを持つロジット分類です。
'function(object, newdata) {
   pred <- predict(object, newdata = newdata, type="response");
   res <- data.frame(1-pred, pred);
   names(res) <- c("0", "1");
   res}'

クラスタリング: 各列は、1つのクラスタの予測確率を表します。列は、クラスタIDの順に並べられます。各クラスタにはクラスタIDが割り当てられ、これは1から始まる連続した値です。RモデルでCLUSTER_DISTANCEをサポートするために、Rスコア関数の出力では、予測確率の列の後に、クラスタIDの順で各クラスタへの距離の値を含む追加列を戻します。

例6-10 クラスタリング用のRALG_SCORE_FUNCTIONの例

この例は、モデルのスコアリングに使用するRスクリプトMY_CLUSTER_PREDICT_SCRIPTの名前をモデル設定表model_setting_tableで指定する方法を示しています。

Begin
insert into model_setting_table values
(dbms_data_mining.ralg_score_function, 'MY_CLUSTER_PREDICT_SCRIPT');
End;
/
Oracle Machine Learning for Rスクリプト・リポジトリでは、スクリプトMY_CLUSTER_PREDICT_SCRIPTは次のように登録されます:
'function(object, dat){
     mod <- object[[1L]]; ce <- object[[2L]]; sc <- object[[3L]];
     newdata = scale(dat, center = ce, scale = sc);
     centers <- mod$centers;
     ss <- sapply(as.data.frame(t(centers)),
     function(v) rowSums(scale(newdata, center=v, scale=FALSE)^2));
     if (!is.matrix(ss)) ss <- matrix(ss, ncol=length(ss));
     disp <- -1 / (2* mod$tot.withinss/length(mod$cluster));
     distr <- exp(disp*ss);
     prob <- distr / rowSums(distr);
     as.data.frame(cbind(prob, sqrt(ss)))}'
この関数は、Rモデルからクラスタの中央値をフェッチし、スコア・データから対応するクラスタの中央値への距離に基づいて、各クラスタに属する確率を計算します。

特徴抽出: 各列は、1つの特徴の係数値を表します。列は、特徴IDの順に並べられます。特徴ごとに、1から始まる連続した値の特徴IDが割り当てられます。

例6-11 特徴抽出用のRALG_SCORE_FUNCTIONの例

この例は、モデルのスコアリングに使用するRスクリプトMY_FEATURE_EXTRACTION_SCRIPTの名前をモデル設定表model_setting_tableで指定する方法を示しています。

Begin
insert into model_setting_table values
(dbms_data_mining.ralg_score_function, 'MY_FEATURE_EXTRACTION_SCRIPT');
End;
/
Oracle Machine Learning for Rスクリプト・リポジトリでは、スクリプトMY_FEATURE_EXTRACTION_SCRIPTは次のように登録されます:
 'function(object, dat) { as.data.frame(predict(object, dat)) }'

この関数は、Rモデルから特徴の中央値をフェッチし、スコア・データから対応する特徴の中央値への距離に基づいて、特徴の係数を計算します。

関連トピック