RALG_SCORE_FUNCTION
RALG_SCORE_FUNCTION
設定は、データのスコアリングに使用するRアルゴリズム機械学習モデルに応じた既存の登録済Rスクリプトを指定するために使用します。
指定したRスクリプトによりR関数が定義されます。最初の入力引数は、モデル・オブジェクトを定義します。2番目の入力引数では、データのスコアリングに使用されるR data.frame
を定義します。
例6-7 RALG_SCORE_FUNCTIONの例
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;
/
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;
/
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;
/
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)))}'
特徴抽出: 各列は、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;
/
MY_FEATURE_EXTRACTION_SCRIPT
は次のように登録されます: 'function(object, dat) { as.data.frame(predict(object, dat)) }'
この関数は、Rモデルから特徴の中央値をフェッチし、スコア・データから対応する特徴の中央値への距離に基づいて、特徴の係数を計算します。
関連トピック