22 データ・マイニングAPIについて
Oracle Data Miningのアプリケーション・プログラミング・インタフェース(API)コンポーネントの概要です。
22.1 マイニング・モデルについて
マイニング・モデルは、データ・マイニングを実行するデータベース・スキーマ・オブジェクトです。
すべてのスキーマ・オブジェクトと同様に、マイニング・モデルへのアクセスは、データベース権限によって制御されます。モデルはエクスポートとインポートが可能です。モデルではコメントをサポートしており、またデータベース監査システムでモデルを追跡することもできます。
マイニング・モデルは、DBMS_DATA_MINING PL/SQLパッケージのCREATE_MODELプロシージャによって作成されます。モデルは特定のマイニング機能に対して作成され、その機能を実行するために特定のアルゴリズムを使用します。マイニング機能とは、解決対象となるマイニング問題のクラスを表すデータ・マイニング用語です。マイニング機能の例としては、回帰、分類、属性評価、クラスタリング、異常検出および特徴抽出が挙げられます。Oracle Data Miningでは、マイニング機能ごとに1つ以上のアルゴリズムをサポートしています。
22.2 データ・マイニングのデータ・ディクショナリ・ビュー
Oracle Data Miningのデータ・ディクショナリ・ビューをリストします
Oracle Data Miningのデータ・ディクショナリ・ビューを次の表に示します。ビューのデータベース管理者(DBA)およびUSERバージョンも使用可能です。
表22-1 Oracle Data Miningのデータ・ディクショナリ・ビュー
| ビュー名 | 説明 |
|---|---|
22.2.1 ALL_MINING_MODELS
ALL_MINING_MODELSの例を説明し、サンプル問合せを示します。
次の例は、ALL_MINING_MODELSを説明し、サンプル問合せを示します。
例22-1 ALL_MINING_MODELS
describe ALL_MINING_MODELS
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(128)
MODEL_NAME NOT NULL VARCHAR2(128)
MINING_FUNCTION VARCHAR2(30)
ALGORITHM VARCHAR2(30)
CREATION_DATE NOT NULL DATE
BUILD_DURATION NUMBER
MODEL_SIZE NUMBER
PARTITIONED VARCHAR2(3)
COMMENTS VARCHAR2(4000)次の問合せでは、サポート・ベクター・マシン・アルゴリズムを使用するユーザーがアクセス可能なモデルが戻されます。
SELECT mining_function, model_name
FROM all_mining_models
WHERE algorithm = 'SUPPORT_VECTOR_MACHINES'
ORDER BY mining_function, model_name;
MINING_FUNCTION MODEL_NAME
------------------------- --------------------
CLASSIFICATION PART2_CLAS_SAMPLE
CLASSIFICATION PART_CLAS_SAMPLE
CLASSIFICATION SVMC_SH_CLAS_SAMPLE
CLASSIFICATION SVMO_SH_CLAS_SAMPLE
CLASSIFICATION T_SVM_CLAS_SAMPLE
REGRESSION SVMR_SH_REGR_SAMPLE 22.2.2 ALL_MINING_MODEL_ATTRIBUTES
ALL_MINING_MODEL_ATTRIBUTESの例を説明し、サンプル問合せを示します。
次の例は、ALL_MINING_MODEL_ATTRIBUTESを説明し、サンプル問合せを示します。属性とは、モデルの作成とデータのスコアリングに使用された予測子または条件です。
例22-2 ALL_MINING_MODEL_ATTRIBUTES
describe ALL_MINING_MODEL_ATTRIBUTES Name Null? Type ----------------------------------------- -------- ---------------------------- OWNER NOT NULL VARCHAR2(128) MODEL_NAME NOT NULL VARCHAR2(128) ATTRIBUTE_NAME NOT NULL VARCHAR2(128) ATTRIBUTE_TYPE VARCHAR2(11) DATA_TYPE VARCHAR2(106) DATA_LENGTH NUMBER DATA_PRECISION NUMBER DATA_SCALE NUMBER USAGE_TYPE VARCHAR2(8) TARGET VARCHAR2(3) ATTRIBUTE_SPEC VARCHAR2(4000)
次の問合せでは、T_SVM_CLAS_SAMPLEというSVM分類モデルの属性が戻されます。このモデルは質的属性と量的属性の両方を持ち、非構造化テキストである属性を1つ含んでいます。
SELECT attribute_name, attribute_type, target
FROM all_mining_model_attributes
WHERE model_name = 'T_SVM_CLAS_SAMPLE'
ORDER BY attribute_name;
ATTRIBUTE_NAME ATTRIBUTE_TYPE TAR
------------------------- -------------------- ---
AFFINITY_CARD CATEGORICAL YES
AGE NUMERICAL NO
BOOKKEEPING_APPLICATION NUMERICAL NO
BULK_PACK_DISKETTES NUMERICAL NO
COMMENTS TEXT NO
COUNTRY_NAME CATEGORICAL NO
CUST_GENDER CATEGORICAL NO
CUST_INCOME_LEVEL CATEGORICAL NO
CUST_MARITAL_STATUS CATEGORICAL NO
EDUCATION CATEGORICAL NO
FLAT_PANEL_MONITOR NUMERICAL NO
HOME_THEATER_PACKAGE NUMERICAL NO
HOUSEHOLD_SIZE CATEGORICAL NO
OCCUPATION CATEGORICAL NO
OS_DOC_SET_KANJI NUMERICAL NO
PRINTER_SUPPLIES NUMERICAL NO
YRS_RESIDENCE NUMERICAL NO
Y_BOX_GAMES NUMERICAL NO 22.2.3 ALL_MINING_MODEL_PARTITIONS
ALL_MINING_MODEL_PARTITIONSの例を説明し、サンプル問合せを示します。
ALL_MINING_MODEL_PARTITIONSを説明し、サンプル問合せを示します。
例22-3 ALL_MINING_MODEL_PARTITIONS
describe ALL_MINING_MODEL_PARTITIONS Name Null? Type ----------------------------------------- -------- ---------------------------- OWNER NOT NULL VARCHAR2(128) MODEL_NAME NOT NULL VARCHAR2(128) PARTITION_NAME VARCHAR2(128) POSITION NUMBER COLUMN_NAME NOT NULL VARCHAR2(128) COLUMN_VALUE VARCHAR2(4000)
次の問合せでは、2つのパーティション化されたモデルのパーティション名およびパーティション・キー値が戻されます。モデルPART2_CLAS_SAMPLEには、システム生成されたパーティション名を持つ2列のパーティション・キーがあります。
SELECT model_name, partition_name, position, column_name, column_value
FROM all_mining_model_partitions
ORDER BY model_name, partition_name, position;
MODEL_NAME PARTITION_ POSITION COLUMN_NAME COLUMN_VALUE
-------------------- ---------- -------- -------------------- ---------------
PART2_CLAS_SAMPLE DM$$_P0 1 CUST_GENDER F
PART2_CLAS_SAMPLE DM$$_P0 2 CUST_INCOME_LEVEL HIGH
PART2_CLAS_SAMPLE DM$$_P1 1 CUST_GENDER F
PART2_CLAS_SAMPLE DM$$_P1 2 CUST_INCOME_LEVEL LOW
PART2_CLAS_SAMPLE DM$$_P2 1 CUST_GENDER F
PART2_CLAS_SAMPLE DM$$_P2 2 CUST_INCOME_LEVEL MEDIUM
PART2_CLAS_SAMPLE DM$$_P3 1 CUST_GENDER M
PART2_CLAS_SAMPLE DM$$_P3 2 CUST_INCOME_LEVEL HIGH
PART2_CLAS_SAMPLE DM$$_P4 1 CUST_GENDER M
PART2_CLAS_SAMPLE DM$$_P4 2 CUST_INCOME_LEVEL LOW
PART2_CLAS_SAMPLE DM$$_P5 1 CUST_GENDER M
PART2_CLAS_SAMPLE DM$$_P5 2 CUST_INCOME_LEVEL MEDIUM
PART_CLAS_SAMPLE F 1 CUST_GENDER F
PART_CLAS_SAMPLE M 1 CUST_GENDER M
PART_CLAS_SAMPLE U 1 CUST_GENDER U 22.2.4 ALL_MINING_MODEL_SETTINGS
ALL_MINING_MODEL_SETTINGSの例を説明し、サンプル問合せを示します。
次の例は、ALL_MINING_MODEL_SETTINGSを説明し、サンプル問合せを示します。設定はモデルの動作に影響します。アルゴリズムやマイニング機能に固有の設定である場合と、一般的な設定である場合があります。
例22-4 ALL_MINING_MODEL_SETTINGS
describe ALL_MINING_MODEL_SETTINGS Name Null? Type ----------------------------------------- -------- ---------------------------- OWNER NOT NULL VARCHAR2(128) MODEL_NAME NOT NULL VARCHAR2(128) SETTING_NAME NOT NULL VARCHAR2(30) SETTING_VALUE VARCHAR2(4000) SETTING_TYPE VARCHAR2(7)
次の問合せでは、SVD_SH_SAMPLEというモデルの設定が戻されます。このモデルは、特徴抽出用に特異値分解アルゴリズムを使用します。
SELECT setting_name, setting_value, setting_type
FROM all_mining_model_settings
WHERE model_name = 'SVD_SH_SAMPLE'
ORDER BY setting_name;
SETTING_NAME SETTING_VALUE SETTING
------------------------------ ------------------------------ -------
ALGO_NAME ALGO_SINGULAR_VALUE_DECOMP INPUT
ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO DEFAULT
ODMS_SAMPLING ODMS_SAMPLING_DISABLE DEFAULT
PREP_AUTO OFF INPUT
SVDS_SCORING_MODE SVDS_SCORING_SVD DEFAULT
SVDS_U_MATRIX_OUTPUT SVDS_U_MATRIX_ENABLE INPUT 22.2.5 ALL_MINING_MODEL_VIEWS
ALL_MINING_MODEL_VIEWSの例を説明し、サンプル問合せを示します。
ALL_MINING_MODEL_VIEWSを説明し、サンプル問合せを示します。モデル・ビューでは、モデルの詳細が示されます。
例22-5 ALL_MINING_MODEL_VIEWS
describe ALL_MINING_MODEL_VIEWS
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(128)
MODEL_NAME NOT NULL VARCHAR2(128)
VIEW_NAME NOT NULL VARCHAR2(128)
VIEW_TYPE VARCHAR2(128)
次の問合せでは、モデルSVD_SH_SAMPLEのモデル・ビューが戻されます。このモデルは、特徴抽出用に特異値分解アルゴリズムを使用します。
SELECT view_name, view_type
FROM all_mining_model_views
WHERE model_name = 'SVD_SH_SAMPLE'
ORDER BY view_name;
VIEW_NAME VIEW_TYPE
------------------------- --------------------------------------------------
DM$VESVD_SH_SAMPLE Singular Value Decomposition S Matrix
DM$VGSVD_SH_SAMPLE Global Name-Value Pairs
DM$VNSVD_SH_SAMPLE Normalization and Missing Value Handling
DM$VSSVD_SH_SAMPLE Computed Settings
DM$VUSVD_SH_SAMPLE Singular Value Decomposition U Matrix
DM$VVSVD_SH_SAMPLE Singular Value Decomposition V Matrix
DM$VWSVD_SH_SAMPLE Model Build Alerts 22.2.6 ALL_MINING_MODEL_XFORMS
ALL_MINING_MODEL_XFORMSの例を説明し、サンプル問合せを示します。
ALL_MINING_MODEL_XFORMSを説明し、サンプル問合せを示します。
例22-6 ALL_MINING_MODEL_XFORMS
describe ALL_MINING_MODEL_XFORMS Name Null? Type ----------------------------------------- -------- ---------------------------- OWNER NOT NULL VARCHAR2(128) MODEL_NAME NOT NULL VARCHAR2(128) ATTRIBUTE_NAME VARCHAR2(128) ATTRIBUTE_SUBNAME VARCHAR2(4000) ATTRIBUTE_SPEC VARCHAR2(4000) EXPRESSION CLOB REVERSE VARCHAR2(3)
次の問合せでは、モデルPART2_CLAS_SAMPLEの埋め込まれた変換が戻されます。
SELECT attribute_name, expression
FROM all_mining_model_xforms
WHERE model_name = 'PART2_CLAS_SAMPLE'
ORDER BY attribute_name;
ATTRIBUTE_NAME
-------------------------
EXPRESSION
--------------------------------------------------------------------------------
CUST_INCOME_LEVEL
CASE CUST_INCOME_LEVEL WHEN 'A: Below 30,000' THEN 'LOW'
WHEN 'L: 300,000 and above' THEN 'HIGH'
ELSE 'MEDIUM' END 22.3 データ・マイニングPL/SQLパッケージ
Oracle Data MiningのPL/SQLインタフェースは、次の3つのパッケージで実装されています。
22.3.1 DBMS_DATA_MINING
DBMS_DATA_MININGパッケージのルーチンについて理解します。
DBMS_DATA_MININGパッケージには、マイニング・モデルの作成、マイニング・モデルに対する操作の実行およびマイニング・モデルの問合せを行うためのルーチンが含まれています。このパッケージには、次の操作を実行するためのルーチンが含まれています。
-
マイニング・モデルの作成と削除およびマイニング・モデルに対する他のDDL操作の実行
-
モデル内部で使用されるモデルの属性やルールなどの詳細情報(モデルの詳細)の取得
-
分類モデルのテスト・メトリックの計算
-
分類モデルのコストの指定
-
モデルのエクスポートおよびインポート
-
Oracleのネイティブ・アルゴリズムおよびRで記述されたアルゴリズムを使用したモデルの作成
22.3.2 DBMS_DATA_MINING_TRANSFORM
DBMS_DATA_MINING_TRANSFORMパッケージのルーチンについて理解します。
22.3.2.1 DBMS_DATA_MINING_TRANSFORMの変換手法
DBMS_DATA_MINING_TRANSFORMパッケージのデータを変換するための手法をまとめます。
表22-3 DBMS_DATA_MINING_TRANSFORMの変換手法
| 変換手法 | 説明 |
|---|---|
|
|
|
|
|
|
|
|
モデルへの組込み用の変換を指定する。 |
例22-7 組込み変換の例
DECLARE
xformlist dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.SET_TRANSFORM(
xformlist, 'comments', null, 'comments', null, 'TEXT');
DBMS_DATA_MINING.CREATE_MODEL(
model_name => 'T_SVM_Clas_sample',
mining_function => dbms_data_mining.classification,
data_table_name => 'mining_build_text',
case_id_column_name => 'cust_id',
target_column_name => 'affinity_card',
settings_table_name => 't_svmc_sample_settings',
xform_list => xformlist);
END;
/ 22.3.3 DBMS_PREDICTIVE_ANALYTICS
DBMS_PREDICTIVE_ANALYTICSパッケージのルーチンについて理解します。
DBMS_PREDICTIVE_ANALYTICSパッケージには、予測分析とも呼ばれるデータ・マイニングの自動化された形式を実行するルーチンが含まれています。予測分析を使用する場合、モデルの作成やスコアリングを意識する必要はありません。すべてのマイニング操作は、プロシージャによって内部的に処理されます。DBMS_PREDICTIVE_ANALYTICSパッケージには、次のルーチンが含まれています。
-
EXPLAIN: ターゲット列の説明における各属性の影響度をランク付けします。 -
PREDICT: 入力データの値に基づいてターゲット列の値を予測します。 -
PROFILE: 入力データからケースを説明するルールを生成します。
次の例のEXPLAIN文は、affinity_cardの予測における重要度の順にmining_data_build_vビューの属性をリストします。
22.4 データ・マイニングSQLスコアリング関数
様々なデータ・マイニングのSQLスコアリング関数について理解します。
データ・マイニングSQL言語関数は、Oracle Data Miningを使用してデータをスコアリングします。これらの関数は、マイニング・モデルのスキーマ・オブジェクトをデータに適用することも、分析句の実行によって動的にデータをマイニングすることもできます。SQL関数は、スコアリング操作をサポートするすべてのデータ・マイニング・アルゴリズムに使用できます。次の表にリストされている、すべてのデータ・マイニングSQL関数は、対応するマイニング機能とともにRマイニング・モデルで動作できます。ただし、関数は、ここにリストされているものに限られません。
表22-4 データ・マイニングSQL関数
次の例では、CLUSTER_ID関数の結果を戻す問合せを示しています。この問合せでは、特定の特性を共有する顧客のグループを検出するモデルem_sh_clus_sampleを適用します。この問合せでは、クラスタの識別子および各クラスタの顧客数が戻されます。
例22-9 CLUSTER_ID関数
-- -List the clusters into which the customers in this -- -data set have been grouped. -- SELECT CLUSTER_ID(em_sh_clus_sample USING *) AS clus, COUNT(*) AS cnt FROM mining_data_apply_v GROUP BY CLUSTER_ID(em_sh_clus_sample USING *) ORDER BY cnt DESC; SQL> -- List the clusters into which the customers in this SQL> -- data set have been grouped. SQL> -- SQL> SELECT CLUSTER_ID(em_sh_clus_sample USING *) AS clus, COUNT(*) AS cnt 2 FROM mining_data_apply_v 3 GROUP BY CLUSTER_ID(em_sh_clus_sample USING *) 4 ORDER BY cnt DESC; CLUS CNT ---------- ---------- 9 311 3 294 7 215 12 201 17 123 16 114 14 86 19 64 15 56 18 36