36.7 モデル設定の指定

モデルは、モデル設定を指定して構成できます。

機械学習モデルは、作成時に多数の構成設定を使用して構成できます。CREATE_MODELまたはCREATE_MODEL2プロシージャでモデル設定を指定します。CREATE_MODELプロシージャで設定を指定するには、次の表に示す列を持つ設定表を作成し、その表をプロシージャ内で渡します。

また、CREATE_MODEL2プロシージャを使用して、プロシージャ内で使用できる変数にモデル設定を直接渡すこともできます。変数は、DBMS_DATA_MINING.SETTING_LISTプロシージャを使用して宣言できます。

表36-9 設定表に必要な列

列名 データ型

setting_name

VARCHAR2(30)

setting_value

VARCHAR2(4000)

例36-3では、サポート・ベクター・マシン(SVM)分類モデルの設定表が作成されます。SVMはデフォルトの分類機能ではないため、ALGO_NAME設定を使用してこのアルゴリズムを指定します。SVMS_KERNEL_FUNCTIONSVMS_LINEARに設定することにより、モデルは線形カーネルを使用して作成されます。カーネル関数を指定しない場合、アルゴリズムがデータの属性の数に基づいてカーネルを選択します。

例36-4では、SETTING_LISTの変数に格納されているモデル設定を使用して、モデルを作成します。

通常はモデルに適用される設定と、アルゴリズムに固有の設定があります。モデルの設定は表36-10および表36-11を参照してください。

表36-10 一般的なモデルの設定

設定 説明

機械学習ファンクションの設定

機械学習手法の設定

アルゴリズム名

アルゴリズム名

グローバルなモデルの特性

グローバル設定

自動データ準備

自動データ準備

表36-11 アルゴリズム固有のモデルの設定

アルゴリズム 説明

CUR行列分解

DBMS_DATA_MINING -アルゴリズムの設定: CUR行列分解

デシジョン・ツリー

DBMS_DATA_MINING -アルゴリズムの設定: デシジョン・ツリー

期待値の最大化

DBMS_DATA_MINING -アルゴリズムの設定: 期待値最大化

明示的セマンティック分析

DBMS_DATA_MINING -アルゴリズムの設定: 明示的セマンティック分析

指数平滑法

DBMS_DATA_MINING —アルゴリズムの設定: 指数平滑法モデル

一般化線形モデル

DBMS_DATA_MINING -アルゴリズムの設定: 一般化線形モデル

k-Means

DBMS_DATA_MINING -アルゴリズムの設定: k-Means

多変量状態推定法 - 逐次確率比検定

DBMS_DATA_MINING - アルゴリズム設定: 多変量状態推定技術 - 逐次確率比検定

Naive Bayes

アルゴリズムの設定: Naive Bayes

ニューラル・ネットワーク

DBMS_DATA_MINING —アルゴリズムの設定: ニューラル・ネットワーク

Non-Negative Matrix Factorization

DBMS_DATA_MINING -アルゴリズムの設定: Non-Negative Matrix Factorization

O-Cluster

アルゴリズムの設定: O-Cluster

ランダム・フォレスト

DBMS_DATA_MINING - アルゴリズムの設定: ランダム・フォレスト

特異値分解

DBMS_DATA_MINING -アルゴリズムの設定: 特異値分解

サポート・ベクター・マシン

DBMS_DATA_MINING -アルゴリズムの設定: サポート・ベクター・マシン

XGBoost

DBMS_DATA_MINING - アルゴリズムの設定: XGBoost

ノート:

XGBoostの目標には、分類機能モデルにのみ適用されるものもあれば、回帰機能モデルにのみ適用されるものもあります。互換性のないobjective値を指定すると、エラーが発生します。DBMS_DATA_MINING.CREATE_MODELプロシージャで、DBMS_DATA_MINING.CLASSIFICATIONを関数として指定した場合、使用できる目標値はbinary値およびmulti値のみです。例外の1つはbinary: logitrawで、これは、連続値を生成して回帰モデルにのみ適用されます。DBMS_DATA_MINING.REGRESSIONを関数として指定する場合は、binary: logitrawまたはcountrankregおよびsurvivalのいずれかの値を目標として指定できます。

XGBoostの目標の設定値は、DBMS_DATA_MINING — アルゴリズムの設定: XGBoostの「学習タスクの設定」表にリストされています。

例36-3 CREATE.MODELプロシージャを使用した設定表の作成およびSVM分類モデルの作成

CREATE TABLE svmc_sh_sample_settings (
  setting_name VARCHAR2(30),
  setting_value VARCHAR2(4000));

BEGIN 
  INSERT INTO svmc_sh_sample_settings (setting_name, setting_value) VALUES
    (dbms_data_mining.algo_name, dbms_data_mining.algo_support_vector_machines);
  INSERT INTO svmc_sh_sample_settings (setting_name, setting_value) VALUES
    (dbms_data_mining.svms_kernel_function, dbms_data_mining.svms_linear);
  COMMIT;
END;
/
-- Create the model using the specified settings 
BEGIN
  DBMS_DATA_MINING.CREATE_MODEL(
    model_name          => 'svm_model',
    mining_function     => dbms_data_mining.classification,
    data_table_name     => 'mining_data_build_v',
    case_id_column_name => 'cust_id',
    target_column_name  => 'affinity_card',
    settings_table_name => 'svmc_sh_sample_settings');
END;

例36-4 CREATE_MODEL2プロシージャを使用したSVM分類モデルのモデル設定の指定

DECLARE
    v_setlist DBMS_DATA_MINING.SETTING_LIST;
BEGIN
    v_setlist('PREP_AUTO') := 'ON';
    v_setlist('ALGO_NAME') := 'ALGO_SUPPORT_VECTOR_MACHINES';
    v_setlist('SVMS_KERNEL_FUNCTION') := 'SVMS_LINEAR';
 
    DBMS_DATA_MINING.CREATE_MODEL2(
        MODEL_NAME          => 'SVM_MODEL',
        MINING_FUNCTION     => 'CLASSIFICATION',
        DATA_QUERY          => 'select * from mining_data_build_v',
        SET_LIST            => v_setlist,
        CASE_ID_COLUMN_NAME => 'CUST_ID,
	TARGET_COLUMN_NAME  => 'AFFINITY_CARD');
END;

36.7.1 コストの指定

デシジョン・ツリー・モデルを作成するためのコスト・マトリックスを指定します。

CLAS_COST_TABLE_NAME設定は、デシジョン・ツリー・モデルの作成に使用するコスト・マトリックス表の名前を指定します。コスト・マトリックスは、分類モデルにバイアスをかけて、コストのかかる分類ミスを最小化します。コスト・マトリックス表には、次の表に示す列が必要です。

表36-12 コスト・マトリックス表に必要な列

列名 データ型

actual_target_value

有効なターゲット・データ型

predicted_target_value

有効なターゲット・データ型

cost

NUMBER

デシジョン・ツリーは、作成時にコスト・マトリックスを指定できる唯一のアルゴリズムです。ただし、スコアリングの際には、どの分類モデルにもコスト・マトリックスを作成して関連付けることができます。

スコアリングにコストを使用する場合は、表36-12に示す列がある表を作成し、DBMS_DATA_MINING.ADD_COST_MATRIXプロシージャを使用してコスト・マトリックス表をモデルに追加します。PREDICTION関数を呼び出すときに、コスト・マトリックスをインラインで指定することもできます。表35-1で、有効なターゲット・データ型の詳細を示しています。

36.7.2 事前確率の指定

事前確率は、作成データと実際の母集団の間の分布の差を埋めるために使用されます。

CLAS_PRIORS_TABLE_NAME設定は、Naive Bayesモデルの作成に使用する事前確率表の名前を指定します。事前表には、次の表に示す列が必要です。

表36-13 事前確率表に必要な列

列名 データ型

target_value

有効なターゲット・データ型

prior_probability

NUMBER

36.7.3 クラスの重みの指定

より高い重み付けのクラスを優先するには、ロジスティック回帰またはサポート・ベクター・マシン(SVM)分類でクラス重み表設定を指定します。

CLAS_WEIGHTS_TABLE_NAME設定は、より高い重み付けのクラスを優先するようにロジスティック回帰(一般化線形モデル分類)またはSVM分類のモデルにバイアスをかけるために使用する、クラスの重み表の名前を指定します。重み表には、次の表に示す列が必要です。

表36-14 クラスの重みの表に必要な列

列名 データ型

target_value

有効なターゲット・データ型

class_weight

NUMBER

36.7.4 データ・ディクショナリにおけるモデルの設定

データ・ディクショナリ・ビューのALL/USER/DBA_MINING_MODEL_SETTINGSについて説明します。

Oracle Machine Learningモデルの設定に関する情報は、データ・ディクショナリ・ビューALL/USER/DBA_MINING_MODEL_SETTINGSから取得できます。ALL接頭辞を使用した場合、このビューは、現在のユーザーがアクセスできるモデルの設定に関する情報を戻します。USER接頭辞を使用した場合は、ユーザー・スキーマ内のモデルの設定に関する情報を戻します。DBA接頭辞を使用できるのはDBAのみです。

ALL_MINING_MODEL_SETTINGSの列は次のとおりです。各列の説明は、次の表を参照してください

SQL> describe all_mining_model_settings
 

出力内容は次のようになります。


Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 OWNER                                     NOT NULL VARCHAR2(30)
 MODEL_NAME                                NOT NULL VARCHAR2(30)
 SETTING_NAME                              NOT NULL VARCHAR2(30)
 SETTING_VALUE                                      VARCHAR2(4000)
 SETTING_TYPE                                       VARCHAR2(7)

表36-15 ALL_MINING_MODEL_SETTINGS

説明

owner

機械学習モデルの所有者。

model_name

機械学習モデルの名前。

setting_name

設定の名前。

setting_value

設定の値。

setting_type

INPUT: 値がユーザーによって指定される場合。DEFAULT: 値がシステムによって生成される場合。

次の問合せでは、サポート・ベクター・マシン(SVM)分類モデルSVMC_SH_CLAS_SAMPLEの設定をリスト表示します。ALGO_NAMECLAS_WEIGHTS_TABLE_NAMEおよびSVMS_KERNEL_FUNCTIONの設定はユーザーが指定しています。これらの設定は、モデルの設定表で指定されています。SVMC_SH_CLAS_SAMPLEモデルは、oml4sql-classification-svm.sqlの例で作成します。

例36-5 ALL_MINING_MODEL_SETTINGS

SQL> COLUMN setting_value FORMAT A35
SQL> SELECT setting_name, setting_value, setting_type
            FROM all_mining_model_settings
            WHERE model_name in 'SVMC_SH_CLAS_SAMPLE';
 

出力内容は次のようになります。


SETTING_NAME                   SETTING_VALUE                       SETTING
------------------------------ ----------------------------------- -------
SVMS_ACTIVE_LEARNING           SVMS_AL_ENABLE                      DEFAULT
PREP_AUTO                      OFF                                 DEFAULT
SVMS_COMPLEXITY_FACTOR         0.244212                            DEFAULT
SVMS_KERNEL_FUNCTION           SVMS_LINEAR                         INPUT
CLAS_WEIGHTS_TABLE_NAME        svmc_sh_sample_class_wt             INPUT
SVMS_CONV_TOLERANCE            .001                                DEFAULT
ALGO_NAME                      ALGO_SUPPORT_VECTOR_MACHINES        INPUT

36.7.5 Rモデルに対応するOracle Machine Learningモデルの設定の指定

Oracleオンプレミスのみ このトピックは、Oracleオンプレミスにのみ適用されます。

R言語モデルに対応する機械学習モデルの設定により、モデルの特性が決定されます。この設定は、モデル設定表で指定します。
R言語で機械学習モデルを作成するには、モデル設定表のALGO_EXTENSIBLE_LANG設定値にRを指定します。ODMS_PARTITION_COLUMNSODMS_SAMPLINGなど、アルゴリズムを必要としない一般的な設定表を組み合せることでモデルを作成できます。また、次の設定を指定することもできます。これらは、R機械学習モデルに対して排他的な設定です。

関連トピック

36.7.5.1 ALGO_EXTENSIBLE_LANG

ALGO_EXTENSIBLE_LANG設定は、Oracle Machine Learning for SQL拡張可能アルゴリズム・フレームワークの言語を指定するために使用します。

現在、ALGO_EXTENSIBLE_LANGに有効な値はRのみです。ALGO_EXTENSIBLE_LANGの値をRに設定すると、機械学習のモデルはR言語を使用して作成されるようになります。設定表で次男設定を使用すると、Rモデルの特性を指定できます。

関連トピック

36.7.5.2 RALG_BUILD_FUNCTION

RALG_BUILD_FUNCTION設定は、R言語を使用したOracle Machine Learning for SQLモデルを作成する場合に、既存の登録済Rスクリプトの名前を指定するために使用します。

モデル設定表では、RALG_BUILD_FUNCTION設定とALGO_EXTENSIBLE_LANG設定の両方を指定する必要があります。このRスクリプトでは、最初の引数としてトレーニング・データ用のR data.frameオブジェクトを受け取るR関数を定義します。この関数は、Oracle Machine Learningモデル・オブジェクトを返します。最初のデータ引数は必須です。RALG_BUILD_FUNCTIONは、追加のモデル作成パラメータを受け入れることができます。

ノート:

入力パラメータの有効な入力は、数値および文字列のスカラー・データ型です。

例36-6 RALG_BUILD_FUNCTIONの例

この例は、モデルの作成に使用するRスクリプトMY_LM_BUILD_SCRIPTの名前の指定方法を示しています。

Begin
insert into model_setting_table values
(dbms_data_mining.ralg_build_function,'MY_LM_BUILD_SCRIPT');
End;
/ 

RスクリプトMY_LM_BUILD_SCRIPTにより、LMモデルを作成するR関数が定義されます。スクリプトMY_LM_BUILD_SCRIPTは、既存のOML4Rセキュリティ制限を使用するOracle Machine Learning for Rスクリプト・リポジトリに登録する必要があります。スクリプトの登録には、OML4R sys.rqScriptCreateを使用できます。Rスクリプトを登録するために、OML4RにはRQADMINロールが必要です。

たとえば:

Begin
sys.rqScriptCreate('MY_LM_BUILD_SCRIPT', 'function(data, formula, model.frame) {lm(formula = formula, data=data, model = as.logical(model.frame)}');
End;
/

クラスタリングと特徴抽出の機械学習ファンクションのモデルを作成する際には、返却するRモデルでR属性のdm$nclusdm$nfeatを設定して、それぞれでクラスタ数と特徴数を指定する必要があります。

RスクリプトMY_KM_BUILD_SCRIPTでは、クラスタリング用のk-Meansモデルを作成するR関数を定義します。R属性dm$nclusには、返されるクラスタリング・モデルに応じたクラスタ数を設定します。

'function(dat) {dat.scaled <- scale(dat)
     set.seed(6543); mod <- list()
     fit <- kmeans(dat.scaled, centers = 3L)
     mod[[1L]] <- fit
     mod[[2L]] <- attr(dat.scaled, "scaled:center")
     mod[[3L]] <- attr(dat.scaled, "scaled:scale")
     attr(mod, "dm$nclus") <- nrow(fit$centers)
     mod}'

RスクリプトMY_PCA_BUILD_SCRIPTにより、PCAモデルを作成するR関数が定義されます。R属性dm$nfeatには、返される特徴抽出モデルに応じた特徴数を設定します。

'function(dat) {
     mod <- prcomp(dat, retx = FALSE)
     attr(mod, "dm$nfeat") <- ncol(mod$rotation)
     mod}'
36.7.5.2.1 RALG_BUILD_PARAMETER

RALG_BUILD_FUNCTION入力パラメータは、SQL SELECT問合せ文フォーマットの数値および文字列スカラー値のリストを指定します。

例36-7 RALG_BUILD_PARAMETERの例

RALG_BUILD_FUNCTION入力パラメータは、数値および文字列のスカラー値のリストである必要があります。入力パラメータはオプションです。

パラメータの構文は次のとおりです。
'SELECT value parameter name ...FROM dual'
この例は、RALG_BUILD_PARAMETERを使用して、入力引数'formula'の式、および入力引数'model.frame'の数値ゼロを指定する方法を示しています。これらの入力引数は、RALG_BUILD_FUNCTIONパラメータで使用されるRスクリプトの関数シグネチャと一致する必要があります。
Begin
insert into model_setting_table values
(dbms_data_mining.ralg_build_parameter, 'select ''AGE ~ .'' as "formula", 0 as "model.frame" from dual');
End;
/

関連トピック

36.7.5.3 RALG_DETAILS_FUNCTION

RALG_DETAILS_FUNCTIONでは、R data.frameで返されるRモデル・メタデータを指定します。

モデル情報を生成する、既存の登録済Rスクリプトの名前を指定するには、RALG_DETAILS_FUNCTIONを使用します。このスクリプトでは、Rモデル・オブジェクトの最初の入力引数を含めるR関数を定義します。R関数の出力はdata.frameとなる必要があります。data.frameの列は、RALG_DETAILS_FORMATによって定義され、数値または文字列スカラー型のみを格納できます。

例36-8 RALG_DETAILS_FUNCTIONの例

この例は、モデル設定表でRスクリプトMY_LM_DETAILS_SCRIPTの名前を指定する方法を示しています。このスクリプトにより、モデル情報の提供に使用されるR関数が定義されます。
Begin
insert into model_setting_table values
(dbms_data_mining.ralg_details_function, 'MY_LM_DETAILS_SCRIPT');
End;
/
Oracle Machine Learning for Rスクリプト・リポジトリでは、スクリプトMY_LM_DETAILS_SCRIPTが次のように登録されます。
 'function(mod) data.frame(name=names(mod$coefficients),
    coef=mod$coefficients)'
36.7.5.3.1 RALG_DETAILS_FORMAT

RALG_DETAILS_FORMAT設定は、モデル・ビューの名前と列型を指定するために使用します。

この設定の値は、モデル・ビューの列名と列型に対応する数値および文字列スカラー・データ型のリストを指定するためのSELECT文が含まれている文字列です。

RALG_DETAILS_FORMATRALG_DETAILS_FUNCTIONの設定が両方とも指定されている場合は、現在のスキーマにDM$VD <model_name>という名前のモデル・ビューがRモデルとともに作成されます。モデル・ビューの最初の列はPARTITION_NAMEです。パーティション化されていないモデルの場合は、この値にNULLが設定されています。モデル・ビューのその他の列は、RALG_DETAILS_FORMAT設定によって定義されます。

例36-9 RALG_DETAILS_FORMATの例

この例は、生成されたモデル・ビューの列の名前およびタイプを指定する方法を示しています。モデル・ビューには、最初の列partition_nameの後にvarchar2列のattr_nameおよび数値列のcoef_valueが含まれます。
Begin
insert into model_setting_table values
(dbms_data_mining.ralg_details_format, 'select cast(''a'' as varchar2(20)) as attr_name, 0 as coef_value from dual');
End;
/

関連トピック

36.7.5.4 RALG_SCORE_FUNCTION

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

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

例36-10 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の動作に必要なものです。

例36-11 回帰用の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つのターゲット・クラスの予測確率を表します。列名は、ターゲット・クラス名です。

例36-12 分類用の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;
/
OML4Rスクリプト・リポジトリでは、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の順で各クラスタへの距離の値を含む追加列を戻します。

例36-13 クラスタリング用の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;
/
OML4Rスクリプト・リポジトリでは、スクリプト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が割り当てられます。

例36-14 特徴抽出用の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;
/
OML4Rスクリプト・リポジトリでは、スクリプトMY_FEATURE_EXTRACTION_SCRIPTは次のように登録されます。
 'function(object, dat) { as.data.frame(predict(object, dat)) }'

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

関連トピック

36.7.5.5 RALG_WEIGHT_FUNCTION

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

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

例36-15 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 }'
OML4Rスクリプト・リポジトリでは、ロジット分類用のスクリプト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}'

関連トピック

36.7.5.6 登録済Rスクリプト

RALG_*_FUNCTION設定では、Oracle Machine Learning for Rスクリプト・リポジトリに存在するRスクリプトを指定する必要があります。

Rスクリプトの登録には、OML4R SQLプロシージャsys.rqScriptCreateを使用できます。スクリプトを登録する場合は、RQADMINロールが必要になります。

RALG_*_FUNCTION設定には、次の関数が含まれています。

  • RALG_BUILD_FUNCTION

  • RALG_DETAILS_FUNCTION

  • RALG_SCORE_FUNCTION

  • RALG_WEIGHT_FUNCTION

ノート:

Rスクリプトは、Rモデルが機能するようにOML4Rスクリプト・リポジトリに存在している必要があります。

Rモデルの作成後には、指定したRスクリプトの名前がモデル設定になります。これらのRスクリプトは、Rモデルが継続的に機能するようにOML4Rスクリプト・リポジトリに存在している必要があります。

Rモデルの作成、スコアリングおよび表示に使用されるRメモリーは、OML4Rによって管理することもできます。

36.7.5.7 Rモデルのデモ・スクリプト

rdbms/demoにあるRモデル・デモ・スクリプトにアクセスできます

dmraidemo.sql  dmrglmdemo.sql dmrpcademo.sql
dmrardemo.sql  dmrkmdemo.sql  dmrrfdemo.sql
dmrdtdemo.sql  dmrnndemo.sql