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