Oracle Data Mining(ODM)は、プログラマ、システム・アナリスト、プロジェクト・マネージャおよびその他のデータ・マイニング・アプリケーションの開発者を対象として設計されています。 データ・マイニングを使用すると、データ内の隠れたパターンを検出し、検出された情報に基づいて予測と要約を行うことができます。
DBMS_DATA_MININGパッケージは、ODMへのインタフェースです。 DBMS_DATA_MININGを使用すると、マイニング・モデルの作成とテストを行い、そのモデルをデータに適用できます。
|
関連項目:
|
この章では、次の項目について説明します。
概要
新機能
モデル名
定数
データ型
例外
ユーザー・ビュー
この項では、DBMS_DATA_MININGパッケージの使用に関連する項目について説明します。
Oracle Data Mining(ODM)は、データ・マイニング機能をOracleデータベースに埋め込みます。 データはデータベースから離れることはなく、データの準備、モデルの作成、モデルのスコアリング(適用)などのすべての作業がデータベースの内部で実行されます。 そのため、Oracleデータベースは、データ・アナリストやアプリケーション開発者がデータ・マイニング機能をデータベース・アプリケーションにシームレスに組み込むための基盤となります。
ODMでは、予測データ・マイニングと記述データ・マイニングの両方がサポートされています。 予測データ・マイニングでは、履歴モデルを使用して、ターゲット値が予測されます。 記述データ・マイニングでは、指定のデータ・セット内の自然なグループが識別されます。
予測データ・マイニングには、次の機能があります。
分類
リグレッション
属性重要度
記述データ・マイニングには、次の機能があります。
クラスタ化
相関
特徴抽出
モデルを作成してスコアリングする手順は、使用するデータ・マイニング機能およびアルゴリズムによって異なります。 ODMの機能およびアルゴリズムの詳細は、『Oracle Data Mining概要』を参照してください。
ODMには、Graphical User Interface(Oracle Data Miner)とともに、SQLおよびJava用のApplication Program Interface(API)が用意されています。 SQLインタフェースは、PL/SQLパッケージおよびSQLファンクションで構成されています。 Javaインタフェースは、データ・マイニングのJDM 1.0標準をOracleで実装したものです。 SQLおよびJava APIは、完全に相互運用が可能です。
10g リリース2(10.2)で新しく導入されたデータ・マイニング用のSQLファンクションは、モデルのスコアリング結果を戻します。 これらのファンクションは、既存のモデルをSQL文のコンテキスト内で適用します。 ODMのスコアリング・ファンクションには、CLUSTER_ID、CLUSTER_PROBABILITY、CLUSTER_SET、FEATURE_ID、FEATURE_SET、FEATURE_VALUE、PREDICTION、PREDICTION_COST、PREDICTION_DETAILS、PREDICTION_PROBABILITYおよびPREDICTION_SETがあります。 ODMのスコアリング・ファンクションについては、『Oracle Database SQLリファレンス』を参照してください。
DBMS_DATA_MININGパッケージは、すべてのODMマイニング機能に対して、モデルの作成、テストおよびスコアリングのプロセスをサポートしています。 ほとんどのマイニング・データは、マイニングを開始する前に前処理を行う必要があります。 これは、DBMS_DATA_MINING_TRANSFORMパッケージまたはサードパーティのユーティリティを使用して実行できます。 予測データ・マイニングのプロセス全体を自動化するには、DBMS_PREDICTIVE_ANALYTICSパッケージを使用します。
|
関連項目: Oracle Data Miningでは、データ・マイニングのサンプル・プログラムを使用できます。 サンプル・プログラムの使用手順については、『Oracle Data Mining管理者ガイド』を参照してください。 Oracle Data Miningインタフェースの追加情報については、『Oracle Data Miningアプリケーション開発者ガイド』を参照してください。 |
Oracle Database 10g リリース2(10.2)のDBMS_DATA_MININGパッケージには、次の新機能があります。
分類のディシジョン・ツリー・アルゴリズム
クラスタ化の直交パーティショニング・クラスタリング(O-Cluster)アルゴリズム
サポート・ベクター・マシンの能動学習
Oracle Data Miningの新機能の詳細は、『Oracle Data Mining概要』および『Oracle Database新機能』を参照してください。
ODMモデルの名前は、有効なスキーマ・オブジェクト名である必要があります。 ただし、モデルのネーミング規則には、スキーマ・オブジェクトのネーミング規則より多くの制限があります。 モデル名は、次の要件も満たす必要があります。
名前の長さは、25文字までにする必要があります。
名前は、引用符で囲まれていない識別子である必要があります。 引用符で囲まれていない識別子は、英数字、アンダースコア(_)、ドル記号($)および番号記号(#)のみで構成され、最初の文字はアルファベットである必要があります。 引用符で囲まれていないリテラルに、ドル記号および番号記号は使用しないことを強くお薦めします。
スキーマ・オブジェクトのネーミング要件については、『Oracle Database SQLリファレンス』に詳しく記述されています。
Oracle Data Miningは、定数を使用して、マイニング機能、そのアルゴリズム、およびモデルに関するその他の詳細情報を指定します。 モデルの機能(タイプ)は、モデルの作成時に指定されます。 デフォルト以外のモデルの特性は、そのモデルに関連付けられている設定表で指定します。
設定表は、ユーザーが作成する表で、次の列で構成されています。
(setting_name VARCHAR2(30), setting_value VARCHAR2(128))
setting_name列の各設定値は定数です。また、setting_value列に指定可能な値も、その多くは定数です。 数値は、暗黙的にVARCHAR2に変換されます。 明示的に変換する場合は、TOCHARファンクションを使用します。
|
関連項目: 設定表の作成、およびデフォルトの設定値と設定範囲については、『Oracle Data Miningアプリケーション開発者ガイド』を参照してください。 |
Oracle Data Miningでは、多くの予測マイニング機能および記述マイニング機能がサポートされています。 マイニング機能は、CREATE_MODELプロシージャのパラメータとして指定されます。 詳細は、「CREATE_MODELプロシージャ」を参照してください。
mining_functionパラメータのデータ型はVARCHAR2(30)で、表25-1に示す値を指定できます。
すべてのモデルが、表25-1に示したいずれかのマイニング機能に基づいています。 マイニング機能の構成は、表25-2に示す設定値で指定できます。
表25-2 マイニング機能の設定
| 定数 | 説明 |
|---|---|
|
|
モデルで使用するアルゴリズムを指定する設定。 この設定値には、次の定数を指定できます。 |
|
|
動的なベイズ・ネットワーク(ABN)。分類のデフォルトのアルゴリズムです。 |
|
|
属性重要度の最小記述長(MDL)アルゴリズム。 |
|
|
相関のアプリオリ・アルゴリズム。 |
|
|
分類のディシジョン・ツリー(DT)アルゴリズム。 |
|
|
k-Means(KM)。クラスタ化のデフォルトのアルゴリズム。 |
|
|
分類のNaive Bayes(NB)アルゴリズム。 |
|
|
特徴抽出のNon-Negative Matrix Factorization(NMF)アルゴリズム。 |
|
|
クラスタ化のO-Cluster(OC)アルゴリズム。 |
|
|
分類またはリグレッションのサポート・ベクター・マシン(SVM)アルゴリズム。 |
|
|
相関モデルで使用されるルールの最大長を指定する設定。 |
|
|
相関モデルの最小信頼度を指定する設定。 |
|
|
相関モデルの最小サポートを指定する設定。 |
|
|
分類モデルのコスト・マトリックス表の名前を指定する設定。 |
|
|
NBモデルおよびABNモデルの事前確率表の名前を指定する設定。 事前確率を使用しない分類アルゴリズムは、ディシジョン・ツリーのみです。 SVM分類モデルの場合は、この設定によって重みの表の名前が指定されます。 |
|
|
クラスタ化モデルのクラスタ数を指定する設定。 |
|
|
特徴抽出モデルの機能の個数を指定する設定。 |
モデルで使用されるアルゴリズムは、algo_name設定(表25-2を参照)で指定します。 アルゴリズムの構成は、表25-3に示す設定値で指定できます。
表25-3 アルゴリズムの設定
| アルゴリズム | 定数 | 説明 |
|---|---|---|
|
ABN |
|
ABNモデルの作成が完了するまでの最長許容時間を指定する設定。 |
|
|
|
|
|
|
|
|
|
|
ABNモデル型を指定する設定。 この設定値には、次の定数を指定できます。 |
|
|
|
マルチ機能ABNモデル。 |
|
|
|
Naive Bayes ABNモデル。 |
|
|
|
単一機能ABNモデル。 |
|
|
DT |
|
ディシジョン・ツリーのツリー不純メトリックを指定する設定。 この設定値には、次の定数を指定できます。 |
|
|
エントロピ。 |
|
|
|
Gini。 |
|
|
|
ディシジョン・ツリーのツリー深さの最大終了基準を指定する設定。 |
|
|
|
ディシジョン・ツリーの親ノードの終了基準にレコードの最小割合を指定する設定名。 |
|
|
|
ディシジョン・ツリーの親ノードの分割基準にレコードの最小割合を指定する設定名。 |
|
|
|
ディシジョン・ツリーの親ノードの終了基準にレコードの最小数を指定する設定名。 |
|
|
|
ディシジョン・ツリーの親ノードの分割基準にレコードの最小数を指定する設定。 |
|
|
KM |
|
k-Meansのクラスタ・データを保持するために割り当てられるメモリーの増加係数を指定する設定。 |
|
|
k-Meansの収束許容値を指定する設定。 |
|
|
|
k-Meansの距離関数を指定する設定。 この設定値には、次の定数を指定できます。 |
|
|
|
余弦距離関数。 |
|
|
|
ユークリッド距離関数。 |
|
|
|
高速余弦距離関数。 |
|
|
|
k-Meansの反復回数を指定する設定。 |
|
|
|
k-Meansクラスタのルールに属性を組み込むために必要な最小サポート値(%)を指定する設定。 |
|
|
|
k-Meansのヒストグラムのビン数を指定する設定。 |
|
|
|
k-Meansの分割基準を指定する設定。 この設定値には、次の定数を指定できます。 |
|
|
|
サイズが分割基準。 |
|
|
|
分散が分割基準。 |
|
|
NB |
|
Naive Bayesの組しきい値を指定する設定。 |
|
|
Naive Bayesの単一しきい値を指定する設定。 |
|
|
NMF |
|
NMFの収束許容度を指定する設定。 |
|
|
NMFの反復回数を指定する設定。 |
|
|
|
NMFの乱数シードを指定する設定。 |
|
|
OC |
|
O-Clusterのバッファ・サイズを指定する設定。 |
|
|
O-Clusterの感度を指定する設定。 |
|
|
SVM |
|
能動学習を有効にするか無効にするかを指定する設定。 この設定値には、次の定数を指定できます。 |
|
|
能動学習は無効です。 |
|
|
|
能動学習は有効です。 |
|
|
|
SVMの複雑度を指定する設定。 |
|
|
|
SVMの許容度を指定する設定。 |
|
|
|
SVMリグレッションのエプシロン係数を指定する設定。 |
|
|
|
SVMのガウシアン・カーネル・キャッシュ・サイズを指定する設定。 |
|
|
|
SVMのカーネル関数を指定する設定。 この設定値には、次の定数を指定できます。 |
|
|
|
ガウシアン・カーネル。 |
|
|
|
線形カーネル。 |
|
|
|
||
|
|
SVMガウシアン・カーネルの標準偏差を指定する設定。 |
DBMS_DATA_MININGパッケージには、アルゴリズムに固有のモデル情報を戻す多数のテーブル・ファンクションがあります。 これらのファンクションは、モデル名を入力に使用し、要求された情報を行のコレクションとして戻します。 テーブル・ファンクションは、GET_nという名前になります。nは、戻す情報のタイプを示します。 ODMのGETファンクションのリストは、「DBMS_DATA_MININGサブプログラムの要約」を参照してください。
すべてのGETファンクションでパイプライン出力が使用されているため、出力の各行は、モデルの記憶域から読み取られる際に実体化され、表オブジェクトが完全に生成されるまで待機する必要がありません。 パイプライン・テーブル・ファンクションの詳細は、『Oracle Database PL/SQLユーザーズ・ガイドおよびリファレンス』を参照してください。
GETファンクションで戻される仮想表は、オブジェクト・データ型です。 その行は、別のオブジェクト・データ型で定義されます。 ネストした表を定義するオブジェクト・データ型を持つ列もあります。
ODMでは、ワイド・データの処理にもオブジェクト・データ型が使用されます。 これらの型(DM_NESTED_NUMERICALSおよびDM_NESTED_CATEGORICALS)によって、一連のマイニング属性を1つの列に格納する場合に使用可能なネストした表が定義されます。 ワイド・データの詳細は、『Oracle Data Miningアプリケーション開発者ガイド』を参照してください。
表25-4に、ODMのオブジェクト・データ型を示します。
表25-4 DBMS_DATA_MININGのデータ型の要約
| データ型 | 説明 |
|---|---|
|
|
ABNモデルに関する情報を表します。 |
|
|
|
|
|
クラスタの重心を表します。 |
|
|
|
|
|
クラスタの子ノードを表します。 |
|
|
|
|
|
クラスタを表します。 |
|
|
|
|
|
NBモデルまたはABNモデルで使用されるマイニング属性に関連付けらた条件付き確率を表します。 |
|
|
|
|
|
クラスタ識別子に関連付けられた1つのヒストグラムを表します。 |
|
|
|
|
|
項目を表します。 |
|
|
|
|
|
|
|
|
モデルに対する設定表の設定/値の組合せを表します。 |
|
|
|
|
|
モデルのシグネチャの属性を表します。 |
|
|
|
|
|
NBモデルに関する情報を表します。 |
|
|
|
|
|
カテゴリ属性のネストした表を表します。 |
|
|
|
|
|
数値属性のネストした表を表します。 |
|
|
|
|
|
NMFモデルのマイニング属性を表します。 |
|
|
|
|
|
NMFモデルの機能を表します。 |
|
|
|
|
|
ルールの前件または後件のいずれかを表します。 |
|
|
|
|
|
属性の重要度に基づいてランク付けされた属性集合内の1つの属性を表します。 |
|
|
|
|
|
モデルのルールを表します。 |
|
|
|
|
|
SVMモデルの属性を表します。 |
|
|
|
|
|
SVMの線形係数を表します。 |
|
|
|
次の表に、DBMS_DATA_MININGで発生する例外を示します。
| Oracleエラー | 説明 |
|---|---|
|
|
入力パラメータ%sは無効です。 |
|
|
列%sが入力表%sに存在しません。 |
|
|
モデル%sが存在しません。 |
|
|
モデル%sは、すでに存在しています。 |
|
|
設定名%sは無効です。 |
|
|
設定名%sに対する設定値が無効です。 |
|
|
機能設定が重複しているか、複数あります。 |
|
|
機能%sに対するアルゴリズム設定が重複しているか、複数あります。 |
|
|
設定%は、%機能には無効です。 |
|
|
アルゴリズム名%sは無効です。 |
|
|
%s機能の入力データのターゲット・データ型が無効です。 |
|
|
設定の値が矛盾しています: %s、%s |
|
|
重複した設定: %s |
|
|
モデル%sは現行の操作と互換性がありません。 |
|
|
機能がサポートされていません。 |
|
|
前の表がトレーニング・データと一致しません。 |
|
|
適用結果表%sは現行の操作と互換性がありません。 |
|
|
属性の最大数を超えています。 |
|
|
最大ターゲット・カーディナリティを超えています。 |
|
|
データ・マイニング・モデルのエクスポートに失敗しました。ジョブ名=%s、エラー=%s |
|
|
データ・マイニング・モデルのインポートに失敗しました。ジョブ名=%s、エラー=%s |
|
|
モデルは現在、別のプロセスで使用中です。 |
|
|
モデルのアップグレード/ダウングレードは、SYSによって実行する必要があります。 |
|
|
サポート・ベクトルが見つかりません。 |
|
|
ターゲット値が見つかりません。 |
|
|
ターゲット・カウンタの例が見つかりません。 |
|
|
1クラス・モデルには事前指定できません。 |
|
|
モデル作成用の入力データに負の値が含まれています。 |
|
|
NMF: 機能の数は[1, %s]の間ではありません。 |
|
|
統計的に重要な機能は見つかりませんでした。 |
|
|
このモデル・モードでは、適用ルールは禁止されています。 |
|
|
動的なベイズ・ネットワーク・アルゴリズムのモデル型%sが無効です。 |
|
|
モデル名が無効です。 |
|
|
コスト・マトリックスが無効です。 |
|
|
コスト・マトリックスがありません。 |
|
|
モデルが存在しません。 |
|
|
ラベルがモデル内にありません。 |
|
|
マイニング・モデルでは、リモート操作は許可されません。 |
|
|
モデルに対するデータが無効です -- コサイン距離が有効範囲外です。 |
|
|
重複した属性がデータ・マイニング関数に指定されています。 |
|
|
データ・マイニング関数と互換性のないモデル。 |
|
|
モデル・コストは使用できません。 |
|
|
コスト・マトリックス指定が無効です。 |
|
|
コスト・マトリックス指定のクラス名%sは無効です。 |
|
|
確立の事前指定が無効です。 |
|
|
確率の事前指定のクラス名%sは無効です。 |
|
|
無効な不純メトリックが指定されています。 |
|
|
ワイド・データは、ディシジョン・ツリー・モデルの作成ではサポートされません。 |
|
|
ビン番号が無効です。値がゼロまたはマイナスです。 |
|
|
ビン番号が大きすぎます。 |
表25-6は、DM_USER_MODELSビューの説明です。このビューには、ユーザーのスキーマ内のモデルに関する情報が表示されます。
| 列 | データ型 | NULL | 説明 |
|---|---|---|---|
|
|
|
|
モデルの名前。 |
|
|
|
モデルの機能。 詳細は、表25-1を参照してください。 |
|
|
|
|
モデルで使用されるアルゴリズム。 詳細は、表25-2を参照してください。 |
|
|
|
|
モデルの作成日。 |
|
|
|
|
モデル作成プロセスの継続時間。 |
|
|
|
|
分類モデルのターゲットとして指定された属性。 |
|
|
|
|
モデルのサイズ(メガバイト単位)。 |
表25-7に、DBMS_DATA_MININGパッケージに含まれているサブプログラムの要約を示します。
表25-7 DBMS_DATA_MININGパッケージのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
データ・セットにモデルを適用します(データのスコアリングを行います)。 |
|
|
分類モデルのテスト・データに対する |
|
|
|
分類モデルをテスト・データに適用( |
|
分類モデルの受信者操作特性(ROC)を計算します。 |
|
|
マイニング・モデルを作成します。 |
|
|
|
モデルを削除します。 |
|
|
モデルをダンプ・ファイルにエクスポートします。 |
|
マイニング機能とマイニング・アルゴリズムのすべてのデフォルト設定を戻します。 |
|
|
頻度の高い項目セットを相関モデルから戻します。 |
|
|
動的なベイズ・ネットワーク・モデルのディテールを戻します。 |
|
|
|
属性重要度モデルのディテールを戻します。 |
|
|
k-Meansモデルのディテールを戻します。 |
|
Naive Bayesモデルのディテールを戻します。 |
|
|
|
NMFモデルのディテールを戻します。 |
|
O-Clusterモデルのディテールを戻します。 |
|
|
線形カーネルを使用するSVMモデルのディテールを戻します。 |
|
|
ディシジョン・ツリー・モデルのディテールを戻します。 |
|
|
モデルの作成に使用された設定を戻します。 |
|
|
モデルのシグネチャを戻します。 |
|
|
指定されたモデルをユーザー・スキーマにインポートします。 |
|
|
|
分類モデルに対する |
|
モデルの名前を変更します。 |
このプロシージャは、対象データにマイニング・モデルを適用し、その結果(APPLY結果)を表に保存します。 APPLY操作は、スコアリングとも呼ばれます。
予測マイニング機能のAPPLY操作では、予測結果がターゲット列に生成されます。 クラスタ化などの記述マイニング機能のAPPLY操作では、各ケースにクラスタが確率付きで割り当てられます。
APPLY操作は、相関モデルおよび属性重要度モデルには適用できません。
|
注意: ODMのスコアリング・ファンクションは、DBMS_DATA_MINING.APPLYプロシージャの代用として使用できます。 これらのSQLファンクションについては、『Oracle Database SQLリファレンス』を参照してください。 追加情報およびコード例については、『Oracle Data Miningアプリケーション開発者ガイド』を参照してください。 |
構文
DBMS_DATA_MINING.APPLY (
model_name IN VARCHAR2,
data_table_name IN VARCHAR2,
case_id_column_name IN VARCHAR2,
result_table_name IN VARCHAR2,
data_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表25-8 APPLYプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
モデルの名前。 |
|
|
スコアリング対象のデータが保存された表またはビューの名前。 |
|
|
ケースID列の名前。 |
|
|
適用結果が保存される表の名前。 |
|
|
スコアリング対象のデータが保存されたスキーマの名前。 |
使用上の注意
APPLYに渡すデータは、CREATE_MODELに渡すデータと比較した場合に、スキーマ定義および関連属性が一致する必要があります。 これらの情報を取得するには、GET_MODEL_SIGNATUREファンクションを使用します。 CREATE_MODELへの入力として指定したデータが前処理されていた場合は、APPLYへの入力データも同じ方法で前処理する必要があります。 ケースIDは、APPLYによる処理時にマイニング属性とみなされません。
ユーザーは、適用操作の結果が保存される表の名前を指定する必要があります。 APPLYを実行すると、各アルゴリズムに固有の固定スキーマを持つ表が、モデルを所有するユーザー・スキーマ内に作成されます。
APPLYはプロシージャとしてパッケージされていますが、その動作はSQL問合せの動作と似ています。 APPLYによってモデルの内容は変更されません。またその動作は、CREATE_MODEL、DROP_MODEL、RENAME_MODELの動作と競合しません。 ただし、モデルがスコアリング・データに適用されているときに、モデルを削除するか、モデルの名前を変更すると、APPLY操作が途中で中止されたり、予測不可能な結果が発生する可能性があります。
以降の項では、サポートされる個々のアルゴリズムにおいて、適用結果が保存される表のスキーマを示します。 case_id列の値は、ユーザーが入力パラメータで指定したケースID列名と同じ値になります。 入力のcase_id列の型は、APPLYの出力でも維持されます。
分類モデルに対するAPPLYの結果が保存される表には、すべて同じ定義が適用されます。 ターゲットが数値である場合、適用結果は次の列を持つ表に保存されます。
case_id VARCHAR2/NUMBER prediction NUMBER probability NUMBER
ターゲットがカテゴリである場合、適用結果は次の列を持つ表に保存されます。
case_id VARCHAR2/NUMBER prediction VARCHAR2 probability NUMBER
適用結果は次の列を持つ表に保存されます。
case_id VARCHAR2/NUMBER prediction NUMBER probability NUMBER
prediction列の値は、0または1のいずれかです。1の場合、ケースは標準的な例です。 0の場合、ケースは外れ値です。
適用結果は次の列を持つ表に保存されます。
case_id VARCHAR2/NUMBER prediction NUMBER
クラスタ化は非監視型のマイニング機能であるため、ターゲットは存在しません。 APPLY操作の結果は、単にケースに対応するクラスタ識別子と、ケースの確率のみになります。 適用結果は次の列を持つ表に保存されます。
case_id VARCHAR2/NUMBER cluster_id NUMBER probability NUMBER
特徴抽出も非監視型のマイニング機能であるため、ターゲットは存在しません。 APPLY操作の結果は、単にケースに対応する機能識別子と、ケースの一致率のみになります。 適用結果は次の列を持つ表に保存されます。
case_id VARCHAR2/NUMBER feature_id NUMBER match_quality NUMBER
例
BEGIN /* build a model with name census_model. * (See example under CREATE_MODEL) */ /* if build data was pre-processed in any manner, * perform the same pre-processing steps on the * scoring data also. * (See examples in the section on DBMS_DATA_MINING_TRANSFORM) */ /* apply the model to data to be scored */ DBMS_DATA_MINING.APPLY( model_name => 'census_model', data_table_name => 'census_2d_apply', case_id_column_name => 'person_id', result_table_name => 'census_apply_result'); END; / -- View Apply Results SELECT case_id, prediction, probability FROM census_apply_result;
このプロシージャは、分類モデルのコンフュージョン・マトリックスを計算します。また、モデルの精度を取得します。 コンフュージョン・マトリックスの説明は、『Oracle Data Mining概要』を参照してください。
COMPUTE_CONFUSION_MATRIXプロシージャを実行する前に、次の操作を実行します。
テスト・データへのモデルの適用
テスト・データのケースID列およびターゲット列のみが含まれるターゲット表またはターゲット・ビューの作成
この表またはビューおよび適用結果表は、プロシージャの入力として指定します。
構文
DBMS_DATA_MINING.COMPUTE_CONFUSION_MATRIX (
accuracy OUT NUMBER,
apply_result_table_name IN VARCHAR2,
target_table_name IN VARCHAR2,
case_id_column_name IN VARCHAR2,
target_column_name IN VARCHAR2,
confusion_matrix_table_name IN VARCHAR2,
score_column_name IN VARCHAR2 DEFAULT 'PREDICTION',
score_criterion_column_name IN VARCHAR2 DEFAULT 'PROBABILITY',
cost_matrix_table_name IN VARCHAR2 DEFAULT NULL,
apply_result_schema_name IN VARCHAR2 DEFAULT NULL,
target_schema_name IN VARCHAR2 DEFAULT NULL,
cost_matrix_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表25-9 COMPUTE_CONFUSION_MATRIXプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
モデルの精度。 |
|
|
テスト・データセットに対する |
|
|
ケースID列値およびターゲット列値のみが定義された表またはビューの名前(「使用上の注意」を参照)。 |
|
|
テスト・データセット内のケースID列の名前。 この名前はターゲット表と適用結果表で共通の名前にする必要があります。 |
|
|
ターゲット表のターゲット列の名前。 |
|
|
コンフュージョン・マトリックスが格納される表の名前。 |
|
|
適用結果表の中でスコアを示す列の名前。 |
|
|
適用結果表内のスコアのランキング係数を表す列の名前。 |
|
|
固定スキーマを持つコスト・マトリックス表の名前。 |
|
|
|
|
|
ターゲット表に適用されるスキーマの名前。 |
|
|
コスト・マトリックス表に適用されるスキーマの名前。 |
使用上の注意
このプロシージャへのオプションの入力パラメータとしてコスト・マトリックスを指定すると、予測のコストを反映した結果が得られます。
COMPUTE_CONFUSION_MATRIXへの入力は、必ずしもAPPLYを使用して作成する必要がないことに十分注意してください。 2つの入力表の定義がこの項で説明した仕様に一致し、定義の内容が適正であれば、このプロシージャを使用してモデルのコンフュージョン・マトリックスと精度情報を生成できます。 出力結果の質はデータの質に依存します。
分類モデルのテストに使用するデータは、CREATE_MODELに渡したデータと比較した場合に、スキーマ定義および関連属性が一致する必要があります。 CREATE_MODELに入力として渡したデータが前処理されていた場合は、CREATE_MODELデータの前処理に関する統計情報に基づき、APPLYへの入力データも前処理する必要があります。
COMPUTE_CONFUSION_MATRIXプロシージャを使用する前に、テスト・データから2種類のデータ入力ストリームを準備する必要があります。
最初に、テスト・データにモデルを適用(APPLY)します。 APPLYで得られた結果表の名前を、COMPUTE_CONFUSION_MATRIXプロシージャのapply_result_table_nameに指定します。
次に、ケースID列とターゲット列のみがスキーマ内で定義された表またはビューを作成します。 この2つ目の表の名前を、target_table_nameに指定します。
ターゲット属性が数値である場合、2つ目の表またはビューの定義は次のようになります。
(case_identifier_column_name VARCHAR2/NUMBER, target_column_name NUMBER)
ターゲット属性がカテゴリである場合、2つ目の表またはビューの定義は次のようになります。
(case_identifier_column_name VARCHAR2/NUMBER, target_column_name NUMBER)
ユーザーは、コンフュージョン・マトリックスが格納される表の名前を指定する必要があります。 この固定スキーマ表は常に、モデルを所有するスキーマ内に作成されます。
ターゲット属性が数値である場合、コンフュージョン・マトリックス表の定義は次のようになります。
(actual_target_value NUMBER, predicted_target_value NUMBER, value NUMBER)
ターゲット属性がカテゴリである場合、コンフュージョン・マトリックス表の定義は次のようになります。
(actual_target_value VARCHAR2, predicted_target_value VARCHAR2, value NUMBER)
例
この例では、Naive Bayesアルゴリズムを使用して、census_modelという分類モデルを事前に作成していると想定します。テスト・データは、census_2d_testという表(ケースID列の名前はperson_id、ターゲット列の名前はclass)に保存されています。
DECLARE
v_sql_stmt VARCHAR2(4000);
v_accuracy NUMBER;
BEGIN
/* apply the model census_model on test data */
DBMS_DATA_MINING.APPLY(
model_name => 'census_model',
data_table_name => 'census_2d_test',
case_id_column_name => 'person_id',
result_table_name => 'census_test_result');
CREATE VIEW census_2d_test_view as select person_id, class from census_2d_test;
/* now compute the confusion matrix from the two
* data streams, also providing a cost matrix as input.
*/
DBMS_DATA_MINING.COMPUTE_CONFUSION_MATRIX (
accuracy => v_accuracy,
apply_result_table_name => 'census_test_result',
target_table_name => 'census_2d_test_view',
case_id_column_name => 'person_id',
target_column_name => 'class',
confusion_matrix_table_name => 'census_confusion_matrix',
cost_matrix_table_name => 'census_cost_matrix');
DBMS_OUTPUT.PUT_LINE('Accuracy of the model: ' || v_accuracy);
END;
/
-- View the confusion matrix using Oracle SQL
SELECT actual_target_value, predicted_target_value, value
FROM census_confusion_matrix;
このプロシージャは、分類モデルをテスト・データに適用して、特定の正数ターゲットのリフト表を計算します。 リフトについては、『Oracle Data Mining概要』を参照してください。
COMPUTE_LIFTプロシージャを実行する前に、次の操作を実行します。
テスト・データへのモデルの適用
テスト・データのケースID列およびターゲット列のみが含まれるターゲット表またはターゲット・ビューの作成
この表またはビューおよび適用結果表は、プロシージャの入力として指定します。
構文
DBMS_DATA_MINING.COMPUTE_LIFT (
apply_result_table_name IN VARCHAR2,
target_table_name IN VARCHAR2,
case_id_column_name IN VARCHAR2,
target_column_name IN VARCHAR2,
lift_table_name IN VARCHAR2,
positive_target_value IN VARCHAR2,
score_column_name IN VARCHAR2 DEFAULT 'PREDICTION',
score_criterion_column_name IN VARCHAR2 DEFAULT 'PROBABILITY',
num_quantiles IN NUMBER DEFAULT 10,
cost_matrix_table_name IN VARCHAR2 DEFAULT NULL,
apply_result_schema_name IN VARCHAR2 DEFAULT NULL,
target_schema_name IN VARCHAR2 DEFAULT NULL,
cost_matrix_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表25-10 COMPUTE_LIFTプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
テスト・データセットに対する |
|
|
ケースID列値およびターゲット列値のみが定義された表またはビューの名前(「使用上の注意」を参照)。 |
|
|
テスト・データセット内のケースID列の名前。 この名前はターゲット表と適用結果表で共通の名前にする必要があります。 |
|
|
ターゲット列の名前。 |
|
|
リフト表が格納される表の名前。 |
|
|
正数のターゲット値。 ターゲット列が |
|
|
適用結果表の中でスコアを示す列の名前。 |
|
|
適用結果表内のスコアのランキング係数を表す列の名前。 |
|
|
リフト表に必要なクオンタイル数。 |
|
|
コスト・マトリックス表の名前。 |
|
|
|
|
|
ターゲット表に適用されるスキーマの名前。 |
|
|
コスト・マトリックス表に適用されるスキーマの名前。 |
使用上の注意
このプロシージャへのオプションの入力パラメータとしてコスト・マトリックスを指定すると、予測のコストを反映した結果が得られます。
COMPUTE_LIFTに入力するデータは、必ずしもAPPLYを使用して作成する必要がないことに十分注意してください。 2つの入力表のスキーマがこの項で説明した仕様に一致し、スキーマの内容が適正であれば、このプロシージャを使用してリフト表を取得できます。 出力結果の質はデータの質に依存します。
分類モデルのテストに使用するデータは、CREATE_MODELに渡したデータと比較した場合に、スキーマ定義および関連属性が一致する必要があります。 CREATE_MODELの入力として指定したデータが前処理されていた場合は、APPLYへの入力データも、その作成前処理で使用したビニング表と同じビニング表を使用して、前処理する必要があります。
COMPUTE_LIFTプロシージャを使用する前に、テスト・データから2種類のデータ入力ストリームを準備する必要があります。
最初に、テスト・データにモデルを適用(APPLY)します。 COMPUTE_LIFTプロシージャのapply_result_table_nameパラメータには、APPLY操作の結果としてスキーマ内に作成される表の名前を指定します。
次に、ケースID列とターゲット列のみがスキーマ内で定義された表またはビューを作成します。 target_table_nameパラメータには、このような表またはビューの名前を指定します。 ターゲット属性が数値である場合、このような表またはビューの定義は次のようになります。
(case_identifier_column_name VARCHAR2/NUMBER, target_column_name NUMBER)
ターゲット属性がカテゴリである場合、このような表またはビューの定義は次のようになります。
(case_identifier_column_name VARCHAR2/NUMBER, target_column_name NUMBER)
ユーザーは、リフト表が格納される表の名前を指定する必要があります。 この固定スキーマ表は常に、モデルを所有するスキーマ内に作成されます。
出力のリフト表の定義は、次のようになります。
(quantile_number NUMBER, probability_threshold NUMBER, gain_cumulative NUMBER, quantile_total_count NUMBER, quantile_target_count NUMBER, percent_records_cumulative NUMBER, lift_cumulative NUMBER, target_density_cumulative NUMBER, targets_cumulative NUMBER, non_targets_cumulative NUMBER, lift_quantile NUMBER, target_density NUMBER)
COMPUTE_LIFTプロシージャにコスト・マトリックスが渡されると、probability_threshold列にコストしきい値が戻されます。
出力列については、『Oracle Data Mining概要』を参照してください。
例
この例では、Naive Bayesアルゴリズムを使用して、census_modelという分類モデルを事前に作成していると想定します。テスト・データは、census_2d_testという表(ケースID列の名前はperson_id、ターゲット列の名前はclass)に保存されています。
DECLARE v_sql_stmt VARCHAR2(4000); BEGIN /* apply the model census_model on test data */ DBMS_DATA_MINING.APPLY( model_name => 'census_model', data_table_name => 'census_2d_test, case_id_column_name => 'person_id', result_table_name => 'census_test_result'); /* next create a view from test data that projects * only the case identifier and target column */ /* now compute lift with the default 10 quantiles * from the two data streams */ DBMS_DATA_MINING.COMPUTE_LIFT ( apply_result_table_name => 'census_test_result', target_table_name => 'census_2d_test_view', case_id_column_name => 'person_id', target_column_name => 'class', lift_table_name => 'census_lift', positive_target_value => '1', cost_matrix_table_name => 'census_cost_matrix'); END; / -- View the lift table contents using SQL SELECT * FROM census_lift;
このプロシージャは、バイナリ分類モデルのROC(受信者操作特性)を計算します。 ROC(受信者操作特性)については、『Oracle Data Mining概要』を参照してください。
COMPUTE_ROCプロシージャを実行する前に、次の操作を実行します。
テスト・データへのモデルの適用
テスト・データのケースID列およびターゲット列のみが含まれるターゲット表またはターゲット・ビューの作成
この表またはビューおよび適用結果表は、プロシージャの入力として指定します。
構文
DBMS_DATA_MINING.COMPUTE_ROC (
roc_area_under_curve OUT NUMBER,
apply_result_table_name IN VARCHAR2,
target_table_name IN VARCHAR2,
case_id_column_name IN VARCHAR2,
target_column_name IN VARCHAR2,
roc_table_name IN VARCHAR2,
positive_target_value IN VARCHAR2,
score_column_name IN VARCHAR2 DEFAULT 'PREDICTION',
score_criterion_column_name IN VARCHAR2 DEFAULT 'PROBABILITY',
apply_result_schema_name IN VARCHAR2 DEFAULT NULL,
target_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表25-11 COMPUTE_ROCプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
モデルの精度(相対するクラスから無作為に選択した行のペアがモデルによって正しくランキングされる確率)。 |
|
|
テスト・データセットに対する |
|
|
テスト・データのケースIDおよびターゲット値を保存した表またはビューの名前 (「使用上の注意」を参照)。 |
|
|
テスト・データセット内のケースID列の名前。 この名前はターゲット表と適用結果表で共通の名前にする必要があります。 |
|
|
ターゲット列の名前。 |
|
|
ROCの結果が格納される表の名前。 詳細は、表25-12「COMPUTE_ROCの出力」を参照してください。 |
|
|
正数のターゲット値。 ターゲット列が |
|
|
適用結果表の中でスコアを示す列の名前。 |
|
|
適用結果表内のスコアのランキング係数を表す列の名前。 |
|
|
|
|
|
ターゲット表に適用されるスキーマの名前。 |
使用上の注意
COMPUTE_ROCに入力するデータは、必ずしもAPPLYを使用して作成する必要がないことに十分注意してください。 2つの入力表のスキーマがこの項で説明した仕様に一致し、スキーマの内容が適正であれば、このプロシージャを使用してROC表を取得できます。 出力結果の質はデータの質に依存します。
分類モデルのテストに使用するデータは、CREATE_MODELに渡したデータと比較した場合に、スキーマ定義および関連属性が一致する必要があります。 CREATE_MODELに入力として渡したデータが前処理されていた場合は、CREATE_MODELデータの前処理に関する統計情報に基づき、APPLYへの入力データも前処理する必要があります。
COMPUTE_ROCプロシージャを使用する前に、テスト・データから2種類のデータ入力ストリームを準備する必要があります。
最初に、テスト・データにモデルを適用(APPLY)します。 COMPUTE_ROCプロシージャのapply_result_table_nameパラメータには、APPLY操作の結果として自分のスキーマ内に作成される表の名前を指定します。
次に、テスト・データのケースIDおよびターゲット値のみが含まれる表またはビューを作成します。 この表を、target_table_nameパラメータに指定します。 ターゲット属性が数値である場合、この表の列は次のようになります。
case_identifier_column_name VARCHAR2/NUMBER, target_column_name NUMBER
ターゲット属性がカテゴリである場合、この表の列は次のようになります。
case_identifier_column_name VARCHAR2/NUMBER, target_column_name VARCHAR2
ユーザーは、ROC表が格納される表の名前を指定する必要があります。 この表は、常にモデルを所有するスキーマ内に作成され、常に次の列があります。
(probability NUMBER, true_positives NUMBER, false_negatives NUMBER, false_positives NUMBER, true_negatives NUMBER, true_positive_fraction NUMBER, false_positive_fraction NUMBER)
表25-12に、出力列を示します。
表25-12 COMPUTE_ROCの出力
| 出力列 | 説明 |
|---|---|
|
|
ポジティブ・クラスに属すると予測されるポジティブ・クラス確率の最小値。 しきい値が異なると、ヒット率と |
|
|
テスト・データ内のネガティブ・ケースのうち、予測確率が |
|
|
テスト・データ内のポジティブ・ケースのうち、予測確率が |
|
|
テスト・データ内のポジティブ・ケースのうち、予測確率が |
|
|
テスト・データ内のネガティブ・ケースのうち、予測確率が |
|
|
|
|
|
|
これらの出力列の代表的な使用方法は、true_positive_fractionの値とfalse_positive_fractionの値を調べて、最適な確率しきい値(probability_threshold)を決定することです。 次に、この確率しきい値を使用して、以降の適用操作でクラス値を予測します。 たとえば、特定のprobability_thresholdが前提条件として与えられたときに、確率ランク順序内で肯定的に予測されたケースを適用結果表から取り出すには、次のようなSQL文を使用します。
select case_id_column_name from apply_result_table_name where probability > probability_threshold order by probability DESC;
最適な確率しきい値(probability_threshold)を決定するには、次の2通りの方法があります。 最初の方法は、ポジティブ・クラスとネガティブ・クラスを誤って予測した場合の相対コストが事前に判明しているときに適用できます。 2番目の方法は、そのような相対コストが明確にわかっていない場合に適用します。 最初の方法では、相対コストをROC表に適用して、相対コストが最小になるprobability_thresholdを計算します。 たとえば、相対コスト比率が20(ポジティブ・クラスの誤りコスト / ネガティブ・クラスの誤りコスト = 20)である場合は、次のような問合せを実行します。
WITH cost AS (
SELECT probability_threshold, 20 * false_negatives + false positives cost
FROM ROC_table
GROUP BY probability_threshold),
minCost AS (
SELECT min(cost) minCost
FROM cost)
SELECT max(probability_threshold)probability_threshold
FROM cost, minCost
WHERE cost = minCost;
相対コストが明確にわかっていない場合は、ROC表のすべての値を確率しきい値の昇順に並べ替えて表示し、表示されたトレードオフ(誤って分類されたポジティブ・クラスとネガティブ・クラスの比率)のうち、どのトレードオフ値が最適であるのかを判断します。
select * from ROC_table order by probability_threshold
例
この例では、SVMアルゴリズムを使用して、census_modelという分類モデルを事前に作成していると想定します。テスト・データは、census_2d_testという表(ケースID列の名前はperson_id、ターゲット列の名前はclass)に保存されています。
DECLARE v_sql_stmt VARCHAR2(4000); v_accuracy NUMBER; BEGIN /* apply the model census_model on test data */ DBMS_DATA_MINING.APPLY( model_name => 'census_model', data_table_name => 'census_2d_test', case_id_column_name => 'person_id', result_table_name => 'census_test_result'); /* next create a view from test data that projects * only the case identifier and target column */ v_sql_stmt := 'CREATE VIEW census_2d_test_view AS ' || 'SELECT person_id, class FROM census_2d_test'; EXECUTE IMMEDIATE v_sql_stmt; /* now compute the receiver operating characterestics from * the two data streams, also providing a cost matrix * as input. */ DBMS_DATA_MINING.COMPUTE_ROC ( accuracy => v_accuracy, apply_result_table_name => 'census_test_result', target_table_name => 'census_2d_test_view', case_id_column_name => 'person_id', target_column_name => 'class', roc_table_name => 'census_roc', cost_matrix_table_name => 'census_cost_matrix'); END; / -- View the ROC results using Oracle SQL SELECT * FROM census_roc;
このプロシージャは、特定のマイニング機能用のマイニング・モデルを作成します。
構文
DBMS_DATA_MINING.CREATE_MODEL (
model_name IN VARCHAR2,
mining_function IN VARCHAR2,
data_table_name IN VARCHAR2,
case_id_column_name IN VARCHAR2,
target_column_name IN VARCHAR2 DEFAULT NULL,
settings_table_name IN VARCHAR2 DEFAULT NULL,
data_schema_name IN VARCHAR2 DEFAULT NULL,
settings_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表25-13 CREATE_MODELプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
モデルの名前。 詳細は、「モデル名」を参照してください。 |
|
|
マイニング機能を表す定数。 詳細は、「マイニング機能を指定する定数」を参照してください。 |
|
|
トレーニング・データが保存された表またはビューの名前。 |
|
|
ケースID列の名前。 |
|
|
|
|
|
マイニング機能の設定およびアルゴリズムの設定が保存された表またはビューの名前。 |
|
|
トレーニング・データに適用されるスキーマの名前。 |
|
|
設定表/設定ビューに適用されるスキーマの名前。 |
使用上の注意
以降のすべての操作(APPLYなど)に渡すデータは、CREATE_MODELに渡したデータと比較した場合に、スキーマ定義および関連属性が一致する必要があります。 CREATE_MODELに入力として渡したデータが前処理されていた場合は、CREATE_MODELデータの前処理に関する統計情報に基づき、以降のすべての操作(APPLYなど)に渡す入力データも前処理する必要があります。 ケースID列は、CREATE_MODELによる処理時にマイニング属性とみなされません。
各アルゴリズムのデフォルト設定を表示するには、GET_DEFAULT_SETTINGSを使用します。 マイニング・アルゴリズムのデフォルト設定を変更するには、目的のアルゴリズムの名前と、そのアルゴリズムのデフォルト設定を上書きする値を指定した設定表を作成します。
モデルの作成が完了した後、GET_MODEL_SIGNATUREを使用して、モデルの作成に使用された属性に関する情報を取得できます。 モデルの内容を検証または確認するには、各アルゴリズムに固有のGET_MODEL_DETAILSファンクションを使用します。
CREATE_MODELの動作は、SQL DDL CREATEの動作と似ています。 CREATE_MODELの実行中には、RENAME_MODELおよびDROP_MODELはブロックされ実行できません。
|
注意: CREATE_MODELを実行すると、所有者のスキーマ内に複数の表が作成され、特定のアルゴリズムのマイニング・モデルを形成する情報やパターンが格納されます。これらの表の名前には、DM$という接頭辞が付きます。 システム表の個数、スキーマ、内容などはオラクル固有の情報であり、リリースごとに変更される可能性があります。 これらのシステム表に対して問合せや更新を実行しないでください。 |
例
最初の例では、サポート・ベクター・マシン・アルゴリズムを使用して分類モデルを作成します。
/* prepare a settings table to override default * settings (Naive Bayes is the default classifier) */ CREATE TABLE census_settings ( setting_name VARCHAR2(30), setting_value VARCHAR2(128)); BEGIN /* indicate that SVM is the chosen classifier */ INSERT INTO census_settings VALUES ( DBMS_DATA_MINING.ALGO_NAME, DBMS_DATA_MINING.ALGO_SUPPORT_VECTOR_MACHINES); /* override the default value for complexity factor */ INSERT INTO census_settings (setting_name, setting_value) VALUES (dbms_data_mining.svms_complexity_factor, TO_CHAR(0.081)); COMMIT; /* build a model with name census_model */ DBMS_DATA_MINING.CREATE_MODEL( model_name => 'census_model', mining_function => DBMS_DATA_MINING.CLASSIFICATION, data_table_name => 'census_2d_build', case_id_column_name => 'person_id', target_column_name => 'class', settings_table_name => 'census_settings'); END; /
類似したコードを使用して、1クラスSVMモデルを作成します。 主な違いは、ターゲット列が空であることです。
/* prepare a settings table to override default * settings (Naive Bayes is the default classifier) */ CREATE TABLE census_settings ( setting_name VARCHAR2(30), setting_value VARCHAR2(128)); BEGIN /* indicate that SVM is the chosen classifier */ INSERT INTO census_settings VALUES ( DBMS_DATA_MINING.ALGO_NAME, DBMS_DATA_MINING.ALGO_SUPPORT_VECTOR_MACHINES); /* override the default value for outlier rate */ INSERT INTO census_settings (setting_name, setting_value) VALUES (dbms_data_mining.svms_outlier_rate, TO_CHAR(0.05)); COMMIT; /* build a model with name census_model */ DBMS_DATA_MINING.CREATE_MODEL( model_name => 'census_model', mining_function => DBMS_DATA_MINING.CLASSIFICATION, data_table_name => 'census_2d_build', case_id_column_name => 'person_id', target_column_name => NULL, settings_table_name => 'census_settings'); END; /
このプロシージャは、ユーザーのスキーマから既存のマイニング・モデルを削除します。
構文
DBMS_DATA_MINING.DROP_MODEL (model_name IN VARCHAR2);
パラメータ
使用上の注意
DROP_MODELを使用すると、既存のマイニング・モデルを削除できます。
DROP_MODELの動作は、SQL DDL DROPの動作と似ています。 DROP_MODELの実行中には、RENAME_MODELおよびCREATE_MODELはブロックされ実行できません。 一方、APPLYでは、SQL問合せと同様にモデル・データは更新されないため、DROP_MODEの実行中でもAPPLYを実行できます。
ただし、APPLYでモデルを使用しているときに、そのモデルを削除すると、DROP操作は成功しますが、APPLYからは不確定な結果が戻されます。 この動作は、DDL操作によって問合せ操作がブロックされないというRDBMSの標準的な動作に準拠しています。
例
census_modelというモデルがあるとします。 次の例は、このモデルの削除方法を示しています。
BEGIN DBMS_DATA_MINING.DROP_MODEL(model_name => 'census_model'); END; /
このプロシージャは、指定されたデータ・マイニング・モデルをダンプ・ファイル・セットにエクスポートします。 ダンプ・ファイル・セットからのインポートは、IMPORT_MODELプロシージャを使用して行うことができます。 EXPORT_MODELとIMPORT_MODELの両方で、Oracle Data Pumpテクノロジが使用されています。
|
関連項目: モデルのエクスポートおよびインポートの詳細は、『Oracle Data Mining管理者ガイド』を参照してください。 |
構文
DBMS_DATA_MINING.EXPORT_MODEL (
filename IN VARCHAR2,
directory IN VARCHAR2,
model_filter IN VARCHAR2 DEFAULT NULL,
filesize IN VARCHAR2 DEFAULT NULL,
operation IN VARCHAR2 DEFAULT NULL,
remote_link IN VARCHAR2 DEFAULT NULL,
jobname IN VARCHAR2 DEFAULT NULL);
パラメータ
表25-15 EXPORT_MODELプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
モデルのエクスポート先のダンプ・ファイル・セットの名前。 この名前は、スキーマ内で一意である必要があります。 ダンプ・ファイル・セットには1つ以上のファイルを保存できます。 ファイルの個数は、エクスポートするモデルのサイズ(メタデータとデータの両方)および指定した(または推定された)最大ファイル・サイズによって決まります。 ファイル・サイズは、 エクスポート操作が正常に終了すると、ダンプ・ファイル・セット内にファイルが1つしか存在しない場合でも、ダンプ・ファイル・セットの名前が自動的に |
|
|
ダンプ・ファイル・セットの作成場所を指定する、事前定義済のディレクトリ・オブジェクトの名前。 このディレクトリ・オブジェクト、およびこのディレクトリ・オブジェクトによって指定されるファイル・システム・ディレクトリに対する読取り/書込み権限が必要です。 |
|
|
エクスポートするモデルを指定するパラメータ(オプション)。 名前に基づいて個々のモデルをエクスポートできます。また、同じ特性を持つモデルのグループをエクスポートすることもできます。 たとえば、すべてのNaive Bayesモデル、または同じターゲット属性を使用するすべてのモデルをエクスポートできます。 詳細は、「使用上の注意」を参照してください。 例は、表25-16を参照してください。 |
|
|
ダンプ・ファイル・セット内のファイルの最大サイズを指定するパラメータ(オプション)。 サイズは、バイト単位、キロバイト単位(KB)、メガバイト単位(MB)、ギガバイト単位(GB)で指定可能です。 デフォルトのサイズは50MBです。 エクスポートするモデルのサイズが |
|
|
ダンプ・ファイル・セット内のファイルのサイズを推定するかどうかを指定するパラメータ(オプション)。 デフォルトでは、ファイルのサイズは推定されず、
|
|
|
このリリースでは使用されないパラメータ(オプション)。 |
|
|
エクスポート・ジョブの名前を指定するパラメータ(オプション)。 デフォルトでは、 ジョブ名を指定する場合は、スキーマ内で一意の名前を指定する必要があります。 ジョブ名の最大長は30文字です。 エクスポート・ジョブのログ・ファイルが、 |
使用上の注意
エクスポートするモデルは、model_filterパラメータで指定します。 モデルは、名前に基づいて指定できます。また、同じ特性を持つモデルの集合を指定することもできます。 名前に基づいてモデルを指定する場合は、1つのモデル名を指定するか、または複数のモデル名をカンマで区切って指定します。 同じ特性を持つモデルの集合を指定する場合は、DM_USER_MODELSビューに対する問合せのWHERE句を完成する条件式を使用します。 DM_USER_MODELSには、現行のスキーマ内のモデルが表示されます。 次の列が表示されます。
Name Null? Type ----------------------------------------- -------- ---------------------------- NAME NOT NULL VARCHAR2(25) FUNCTION_NAME VARCHAR2(30) ALGORITHM_NAME VARCHAR2(30) CREATION_DATE DATE BUILD_DURATION NUMBER TARGET_ATTRIBUTE VARCHAR2(30) MODEL_SIZE NUMBER
DM_USER_MODELSの列については、「ユーザー・ビュー」を参照してください。
model_filterの条件式を作成するには、列名、サポートされている条件演算子、および値を指定します。 サポートされている条件演算子には、<、<=、=、=>、>、LIKEおよびINがあります。 条件演算子およびWHERE句については、『Oracle Database SQLリファレンス』を参照してください。
表25-16に、モデル・フィルタの例を示します。
表25-16 モデル・フィルタ・パラメータのサンプル値
| サンプル値 | 意味 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
名前が |
|
|
すべてのNaive Bayesモデルをエクスポートします。 アルゴリズム名のリストについては、表25-2を参照してください。 |
|
|
すべての分類モデルをエクスポートします。 マイニング機能のリストについては、表25-1を参照してください。 |
例
次の文では、DMUSER3スキーマ内のすべてのモデルが、$ORACLE_HOME/rdbms/logディレクトリのmodels_outというダンプ・ファイル・セットにエクスポートされます。 このディレクトリは、DATA_PUMP_DIRというディレクトリ・オブジェクトにマップされています。 DMUSER3ユーザーには、このディレクトリおよびディレクトリ・オブジェクトへの読取り/書込みアクセス権があります。
SQL>execute dbms_data_mining.export_model ('models_out', 'DATA_PUMP_DIR');
SQL*Plusを終了し、作成されたダンプ・ファイルおよびログ・ファイルを表示できます。
SQL>exit >cd $ORACLE_HOME/rdbms/log >ls >DMUSER3_exp_1027.log models_out01.dmp
次の例は、同じディレクトリ・オブジェクトを使用し、同じユーザーによって実行されます。 NMF_SH_SAMPLEというモデルおよびSVMR_SH_REGR_SAMPLEというモデルが、同じディレクトリ内の別々のダンプ・ファイル・セットにエクスポートされます。
SQL>execute dbms_data_mining.export_model ( 'models2_out', 'DATA_PUMP_DIR',
'name in (''NMF_SH_SAMPLE'', ''SVMR_SH_REGR_SAMPLE'')');
SQL>exit
>cd $ORACLE_HOME/rdbms/log
>ls
>DMUSER3_exp_1027.log models_out01.dmp
DMUSER3_exp_924.log models2_out01.dmp
次の例では、同じディレクトリ・オブジェクトとスキーマを使用して、ターゲットがAFFINITY_CARDであるモデルがすべてエクスポートされます。
SQL>execute dbms_data_mining.export_model ('models050402_out',
'DATA_PUMP_DIR', 'target_attribute = ''AFFINITY_CARD''',
'1M', 'EXPORT', NULL, 'models050402_job');
SQL>exit
>cd $ORACLE_HOME/rdbms/log
>ls
>DMUSER3_exp_1027.log models_out01.dmp
DMUSER3_exp_924.log models2_out01.dmp
models050402_job.log models050402_out01.dmp models050402_out02.dmp
このテーブル・ファンクションは、ルールを表す行の集合を相関モデルから戻します。
フィルタ条件を指定して、ルールのサブセットをGET_ASSOCIATION_RULESから戻すことができます。 このテーブル・ファンクションのパフォーマンスは、フィルタ条件によって向上させることができます。 ルールの数が多い場合は、topnパラメータを指定するとパフォーマンスが最適化されます。
構文
DBMS_DATA_MINING.GET_ASSOCIATION_RULES ( model_name IN VARCHAR2, topn IN NUMBER DEFAULT NULL, rule_id IN INTEGER DEFAULT NULL, min_confidence IN NUMBER DEFAULT NULL, min_support IN NUMBER DEFAULT NULL, max_rule_length IN INTEGER DEFAULT NULL, min_rule_length IN INTEGER DEFAULT NULL, sort_order IN DMSYS.ORA_MINING_VARCHAR2_NT DEFAULT NULL, antecedent_items IN DYSYS.ORA_MINING_VARCHAR2_NT DEFAULT NULL, consequent_items IN DYSYS.ORA_MINING_VARCHAR2_NT DEFAULT NULL) RETURN DM_RULES PIPELINED;
パラメータ
表25-17 GET_ASSOCIATION_RULESファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
モデルの名前。 |
|
|
まず信頼度、次にサポート値に基づいて降順でルールを並べ、上位n個のルールを戻します。 ソート順序を指定すると、そのソートの実行後に上位n個のルールが導出されます。
|
|
|
戻すルールの識別子。 |
|
|
この数値以上の信頼度を持つルールを戻します。 |
|
|
この数値以上のサポート値を持つルールを戻します。 |
|
|
この数値以下の長さを持つルールを戻します。 ルールの長さとは、ルール内の項目数のことです(表25-18の「
|
|
|
この数値以上の長さを持つルールを戻します。 ルールの長さについては、「
|
|
|
戻される1つ以上の列の値に基づいてルールをソートします。 列名の後に たとえば、結果セットを、まず
デフォルトでは、結果は、まず信頼度に基づいて降順でソートされ、次にサポート値に基づいて降順でソートされます。 詳細は、例を参照してください。 |
|
|
これらの項目が前件にあるルールを戻します。 詳細は、例を参照してください。 |
|
|
この項目が後件にあるルールを戻します。 詳細は、例を参照してください。 |
戻り値
表25-18 GET_ASSOCIATION RULESファンクションの戻り値
| 戻り値 | 説明 |
|---|---|
|
|
(rule_id INTEGER, antecedent DM_PREDICATES, consequent DM_PREDICATES, rule_support NUMBER, rule_confidence NUMBER, antecedent_support NUMBER, consequent_support NUMBER, number_of_items INTEGER ) |
|
(attribute_name VARCHAR2(30),
conditional_operator CHAR(2)/*=,<>,<,>,<=,>=*/,
attribute_num_value NUMBER,
attribute_str_value VARCHAR2(4000),
attribute_support NUMBER,
attribute_confidence NUMBER)
|
使用上の注意
このテーブル・ファンクションは、DM_RULES型の行をパイプライン出力します。 ODMのデータ型およびテーブル・ファンクションからのパイプライン出力については、「データ型」を参照してください。
DMSYS.ORA_MINING_VARCHAR2_NT型は、VARCHAR2(4000)の表として定義されます。
例
次の例では、相関モデルを作成した後、テーブル・ファンクションGET_ASSOCIATION_RULESを数回コールしています。
-- prepare a settings table to override default settings
CREATE TABLE market_settings AS
SELECT *
FROM TABLE(DBMS_DATA_MINING.GET_DEFAULT_SETTINGS)
WHERE setting_name LIKE 'ASSO_%';
BEGIN
-- update the value of the minimum confidence
UPDATE census_settings
SET setting_value = TO_CHAR(0.081)
WHERE setting_name = DBMS_DATA_MINING.asso_min_confidence;
-- build an AR model
DBMS_DATA_MINING.CREATE_MODEL(
model_name => 'market_model',
function => DBMS_DATA_MINING.ASSOCIATION,
data_table_name => 'market_build',
case_id_column_name => 'item_id',
target_column_name => NULL,
settings_table_name => 'census_settings');
END;
/
-- View the (unformatted) rules
SELECT rule_id, antecedent, consequent, rule_support,
rule_confidence
FROM TABLE(DBMS_DATA_MINING.GET_ASSOCIATION_RULES('market_model'));
前述の例では、すべてのルールが表示されます。 上位20個のルールのみを表示するには、次の文を使用します。
-- View the top 20 (unformatted) rules
SELECT rule_id, antecedent, consequent, rule_support,
rule_confidence
FROM TABLE(DBMS_DATA_MINING.GET_ASSOCIATION_RULES('market_model', 20));
次の例では、前件に'AQUATIC'または'EGGS'があり、後件が'VENOMOUS'であるすべてのルールが戻されます。 ルールは、まずNUMBER_OF_ITEMS、次にRULE_CONFIDENCE、最後にRULE_SUPPORTに基づいて降順でソートされます。
SELECT * FROM TABLE
( DBMS_DATA_MINING.GET_ASSOCIATION_RULES
('AR_Model_31', 120, NULL, 1, .51, 7,
DMSYS.ORA_MINING_VARCHAR2_NT
('NUMBER_OF_ITEMS DESC', 'RULE_CONFIDENCE DESC', 'RULE_SUPPORT DESC'),
DMSYS.ORA_MINING_VARCHAR2_NT('AQUATIC', 'EGGS'),
DMSYS.ORA_MINING_VARCHAR2_NT('VENOMOUS')));
このテーブル・ファンクションは、DBMS_DATA_MININGパッケージでサポートされるすべてのマイニング機能とマイニング・アルゴリズムのデフォルト設定を戻します。
構文
DBMS_DATA_MINING.GET_DEFAULT_SETTINGS RETURN DM_MODEL_SETTINGS PIPELINED;
戻り値
表25-19 GET_DEFAULT_SETTINGSファンクションの戻り値
| 戻り値 | 説明 |
|---|---|
|
|
(setting_name VARCHAR2(30), setting_value VARCHAR2(128)) |
使用上の注意
このテーブル・ファンクションは、DM_MODEL_SETTING型の行をパイプライン出力します。 ODMのデータ型およびテーブル・ファンクションからのパイプライン出力については、「データ型」を参照してください。
特定の機能やアルゴリズムで使用される設定がわからないときに、それらの設定の全部または一部を変更する場合は、このファンクションが特に便利です。
例
たとえば、k-Meansクラスタ化のすべての設定または一部の設定を変更する場合は、次の例のような設定表を作成し、必要に応じて個々の設定を更新します。
BEGIN
CREATE TABLE mysettings AS
SELECT *
FROM TABLE(DBMS_DATA_MINING.GET_DEFAULT_SETTINGS)
WHERE setting_name LIKE 'KMNS%';
-- now update individual settings as required
UPDATE mysettings
SET setting_value = 0.02
WHERE setting_name = DBMS_DATA_MINING.KMNS_MIN_PCT_ATTR_SUPPORT;
END;
/
このテーブル・ファンクションは、頻度の高い項目セットを表す行の集合を相関モデルから戻します。 頻度の高い項目セットの説明は、『Oracle Data Mining概要』を参照してください。
構文
DBMS_DATA_MINING.GET_FREQUENT_ITEMSETS (
model_name IN VARCHAR2,
topn IN NUMBER DEFAULT NULL)
RETURN DM_ITEMSETS PIPELINED;
パラメータ
表25-20 GET_FREQUENT_ITEMSETSファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
モデルの名前。 |
|
|
|
戻り値
表25-21 GET_FREQUENT_ITEMSETSファンクションの戻り値
| 戻り値 | 説明 |
|---|---|
|
|
(itemsets_id NUMBER, items DM_ITEMS, support NUMBER, number_of_items NUMBER)
|
使用上の注意
このテーブル・ファンクションは、DM_ITEMSETS型の行をパイプライン出力します。 ODMのデータ型およびテーブル・ファンクションからのパイプライン出力については、「データ型」を参照してください。
例
この例では、相関モデルを作成した後、Oracle SQLからテーブル・ファンクションGET_FREQUENT_ITEMSETSをコールする方法を示します。
-- prepare a settings table to override default settings CREATE TABLE market_settings AS
SELECT *
FROM TABLE(DBMS_DATA_MINING.GET_DEFAULT_SETTINGS)
WHERE setting_name LIKE 'ASSO_%';
BEGIN
-- update the value of the minimum confidence
UPDATE market_settings
SET setting_value = TO_CHAR(0.081)
WHERE setting_name = DBMS_DATA_MINING.asso_min_confidence;
/* build a AR model */
DBMS_DATA_MINING.CREATE_MODEL(
model_name => 'market_model',
function => DBMS_DATA_MINING.ASSOCIATION,
data_table_name => 'market_build',
case_id_column_name => 'item_id',
target_column_name => NULL,
settings_table_name => 'census_settings');
END;
/
-- View the (unformatted) Itemsets from SQL*Plus
SELECT itemset_id, items, support, number_of_items
FROM TABLE(DBMS_DATA_MINING.GET_FREQUENT_ITEMSETS('market_model'));
前述の例では、すべての項目セットが表示されます。 上位20個の項目セットのみを表示するには、次の文を使用します。
-- View the top 20 (unformatted) Itemsets from SQL*Plus
SELECT itemset_id, items, support, number_of_items
FROM TABLE(DBMS_DATA_MINING.GET_FREQUENT_ITEMSETS('market_model', 20));
このテーブル・ファンクションは、動的なベイズ・ネットワーク・モデルのディテールを表す行の集合を戻します。
構文
DBMS_DATA_MINING.GET_MODEL_DETAILS_ABN (
model_name IN VARCHAR2)
RETURN DM_ABN_DETAILS PIPELINED;
パラメータ
戻り値
表25-23 GET_MODEL_DETAILS_ABNファンクションの戻り値
| 戻り値 | 説明 |
|---|---|
|
|
(rule_id INTEGER, antecedent DM_PREDICATES, consequent DM_PREDICATES, rule_support NUMBER) |
|
(attribute_name VARCHAR2(30),
conditional_operator CHAR(2), /*=,<>,<,>,<=,>=*/
attribute_num_value NUMBER,
attribute_str_value VARCHAR2(4000),
attribute_support NUMBER,
attribute_confidence NUMBER)
|
使用上の注意
このテーブル・ファンクションは、DM_ABN_DETAIL型の行をパイプライン出力します。 ODMのデータ型およびテーブル・ファンクションからのパイプライン出力については、「データ型」を参照してください。
このファンクションは、単一機能ABNモデルのみのディテールを戻します。
例
この例では、ABNモデルを作成した後、Oracle SQLからテーブル・ファンクションGET_MODEL_DETAILS_ABNをコールする方法を示します。
BEGIN
-- prepare a settings table to override default algorithm and model type
CREATE TABLE abn_settings (setting_name VARCHAR2(30),
setting_value
VARCHAR2(128));
INSERT INTO abn_settings VALUES (DBMS_DATA_MINING.ALGO_NAME,
DBMS_DATA_MINING.ALGO_ADAPTIVE_BAYES_NETWORK);
INSERT INTO abn_settings VALUES (DBMS_DATA_MINING.ABNS_MODEL_TYPE, DBMS_DATA_MINING.ABNS_SINGLE_FEATURE);
COMMIT;
-- create a model
DBMS_DATA_MINING.CREATE_MODEL (
model_name => 'abn_model',
function => DBMS_DATA_MINING.CLASSIFICATION,
data_table_name => 'abn_build',
case_id_column_name => 'id',
target_column_name => NULL,
settings_table_name => 'abn_settings');
END;
/
-- View the (unformatted) results from SQL*Plus
SELECT *
FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_ABN('abn_model'));
このテーブル・ファンクションは、属性重要度モデルのディテールを表す行の集合を戻します。
構文
DBMS_DATA_MINING.GET_MODEL_DETAILS_AI ( model_name IN VARCHAR2) RETURN DM_RANKED_ATTRIBUTES PIPELINED;
パラメータ
戻り値
表25-25 GET_MODEL_DETAILS_AIファンクションの戻り値
| 戻り値 | 説明 |
|---|---|
|
|
(attribute_name VARCHAR2(30), importance_value NUMBER, rank NUMBER(38)) |
このテーブル・ファンクションは、k-Meansクラスタ化モデルのディテールを表す行の集合を戻します。
モデルに関する特定の情報を要求するようにGET_MODEL_DETAILS_KMの入力を指定すると、問合せのパフォーマンスが向上します。 フィルタ・パラメータを指定しない場合、GET_MODEL_DETAILS_KMはモデルに関するすべての情報を戻します。
構文
DBMS_DATA_MINING.GET_MODEL_DETAILS_KM (
model_name VARCHAR2,
cluster_id NUMBER DEFAULT NULL,
attribute VARCHAR2 DEFAULT NULL,
centroid NUMBER DEFAULT 1,
histogram NUMBER DEFAULT 1,
rules NUMBER DEFAULT 2)
RETURN DM_CLUSTERS PIPELINED;
パラメータ
表25-26 GET_MODEL_DETAILS_KMファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
モデルの名前。 |
|
|
モデル内のクラスタのID。 指定したクラスタIDが有効な場合、そのクラスタのディテールのみが戻されます。 そうでない場合は、すべてのクラスタのディテールが戻されます。 |
|
|
属性の名前。 指定した属性名が有効な場合、その属性のディテールのみが戻されます。 そうでない場合は、すべての属性のディテールが戻されます。 |
|
|
次の値を指定できます。
|
|
|
次の値を指定できます。
|
|
|
次の値を指定できます。
|
戻り値
表25-27 GET_MODEL_DETAILS_KMファンクションの戻り値
| 戻り値 | 説明 |
|---|---|
|
|
(id INTEGER, record_count NUMBER, parent NUMBER, tree_level NUMBER, dispersion NUMBER, split_predicate DM_PREDICATES, child DM_CHILDREN, centroid DM_CENTROIDS, histogram DM_HISTOGRAMS, rule DM_RULE) |
|
(attribute_name VARCHAR2(30),
conditional_operator CHAR(2) /*=,<>,<,>,<=,>=*/,
attribute_num_value NUMBER,
attribute_str_value VARCHAR2(4000),
attribute_support NUMBER,
attribute_confidence NUMBER)
|
|
|
|
|
|
(attribute_name VARCHAR2(30),
mean NUMBER,
mode_value VARCHAR2(4000),
variance NUMBER)
|
|
|
(attribute_name VARCHAR2(30),
bin_id NUMBER,
lower_bound NUMBER,
upper_bound NUMBER,
label VARCHAR2(4000),
count NUMBER)
|
|
|
(rule_id INTEGER,
antecedent DM_PREDICATES,
consequent DM_PREDICATES,
rule_support NUMBER,
rule_confidence NUMBER)
|
|
|
(attribute_name VARCHAR2(30),
conditional_operator CHAR(2)/*=,<>,<,>,<=,>=*/,
attribute_num_value NUMBER,
attribute_str_value VARCHAR2(4000),
attribute_support NUMBER,
attribute_confidence NUMBER)
|
使用上の注意
このテーブル・ファンクションは、DM_CLUSTERS型の行をパイプライン出力します。 ODMのデータ型およびテーブル・ファンクションからのパイプライン出力については、「データ型」を参照してください。
例
この例では、k-Meansクラスタ化モデルを作成した後、Oracle SQLからテーブル・ファンクションGET_MODEL_DETAILS_KMをコールする方法を示します。
BEGIN
-- create a settings table
UPDATE cluster_settings
SET setting_value = 3
WHERE setting_name = DBMS_DATA_MINING.KMEANS_BLOCK_GROWTH;
/* build a k-Means clustering model */
DBMS_DATA_MINING.CREATE_MODEL(
model_name => 'eight_clouds',
function => DBMS_DATA_MINING.CLUSTERING,
data_table_name => 'eight_clouds_build',
case_id_column_name => 'id',
target_column_name => NULL,
settings_table_name => 'cluster_settings');
END;
/
-- View the (unformatted) rules from SQL*Plus
SELECT id, record_count, parent, tree_level, dispersion,
child, centroid, histogram, rule
FROM TABLE(DBMS_DATA_MINING_GET_MODEL_DETAILS_KM('eight_clouds'));
このテーブル・ファンクションは、Naive Bayesモデルのディテールを表す行の集合を戻します。
構文
DBMS_DATA_MINING.GET_MODEL_DETAILS_NB ( model_name IN VARCHAR2) RETURN DM_NB_DETAILS PIPELINED;
パラメータ
戻り値
表25-29 GET_MODEL_DETAILS_NBファンクションの戻り値
| 戻り値 | 説明 |
|---|---|
|
|
(target_attribute_name VARCHAR2(30), target_attribute_str_value VARCHAR2(4000), target_attribute_num_value NUMBER, prior_probability NUMBER, conditionals DM_CONDITIONALS) |
|
(attribute_name VARCHAR2(30),
attribute_str_value VARCHAR2(4000),
attribute_num_value NUMBER,
conditional_probability NUMBER)
|
使用上の注意
このテーブル・ファンクションは、DM_NB_DETAILS型の行をパイプライン出力します。 ODMのデータ型およびテーブル・ファンクションからのパイプライン出力については、「データ型」を参照してください。
例
この例では、Naive Bayesアルゴリズムを使用して、census_modelという分類モデルを事前に作成していると想定します。 このモデルのディテールを取り出すには、次のようにします。
-- You can view the Naive Bayes model details in many ways
-- Consult the Oracle Application Developer's Guide -
-- Object-Relational Features for different ways of
-- accessing Oracle Objects.
-- View the (unformatted) details from SQL*Plus
SELECT attribute_name, attribute_num_value, attribute_str_value,
prior_probability, conditionals,
FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_NB('census_model');
書式化のルールは、nbdemo.sqlを参照してください。
このテーブル・ファンクションは、Non-Negative Matrix Factorizationモデルのディテールを表す行の集合を戻します。
構文
DBMS_DATA_MINING.GET_MODEL_DETAILS_NMF ( model_name IN VARCHAR2) RETURN DM_NMF_FEATURE_SET PIPELINED;
パラメータ
戻り値
表25-31 GET_MODEL_DETAILS_NMFファンクションの戻り値
| 戻り値 | 説明 |
|---|---|
|
|
(feature_id NUMBER, attribute_set DM_NMF_ATTRIBUTE_SET) |
|
(attribute_name VARCHAR2(30),
attribute_value VARCHAR2(4000),
coefficient NUMBER)
|
使用上の注意
このテーブル・ファンクションは、DM_NMF_FEATURE_SET型の行をパイプライン出力します。 ODMのデータ型およびテーブル・ファンクションからのパイプライン出力については、「データ型」を参照してください。
例
この例では、my_nmf_modelというNMFモデルを事前に作成していると想定します。 このモデルのディテールを取り出すには、次のようにします。
--View (unformatted) details from SQL*Plus
SELECT feature_id, attribute_set
FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_NMF(
'my_nmf_model'));
このテーブル・ファンクションは、O-Clusterクラスタ化モデルのディテールを表す行の集合を戻します。 戻り値の行集合は、モデルの作成時に生成されたクラスタ化パターンを列挙しています。
モデルに関する特定の情報を要求するようにGET_MODEL_DETAILS_OCの入力を指定すると、問合せのパフォーマンスが向上します。 フィルタ・パラメータを指定しない場合、GET_MODEL_DETAILS_OCはモデルに関するすべての情報を戻します。
構文
DBMS_DATA_MINING.GET_MODEL_DETAILS_OC (
model_name VARCHAR2,
cluster_id NUMBER DEFAULT NULL,
attribute VARCHAR2 DEFAULT NULL,
centroid NUMBER DEFAULT 1,
histogram NUMBER DEFAULT 1,
rules NUMBER DEFAULT 2)
RETURN DM_CLUSTERS PIPELINED;
パラメータ
表25-32 GET_MODEL_DETAILS_OCファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
モデルの名前。 |
|
|
モデル内のクラスタのID。 指定したクラスタIDが有効な場合、そのクラスタのディテールのみが戻されます。 そうでない場合は、すべてのクラスタのディテールが戻されます。 |
|
|
属性の名前。 指定した属性名が有効な場合、その属性のディテールのみが戻されます。 そうでない場合は、すべての属性のディテールが戻されます。 |
|
|
次の値を指定できます。
|
|
|
次の値を指定できます。
|
|
|
次の値を指定できます。
|
戻り値
表25-33 GET_MODEL_DETAILS_OCファンクションの戻り値
| 戻り値 | 説明 |
|---|---|
|
|
(id INTEGER, record_count NUMBER, parent NUMBER, tree_level NUMBER, dispersion NUMBER, split_predicate DM_PREDICATES, child DM_CHILDREN, centroid DM_CENTROIDS, histogram DM_HISTOGRAMS, rule DM_RULE) |
|
(attribute_name VARCHAR2(30),
conditional_operator CHAR(2) /*=,<>,<,>,<=,>=*/,
attribute_num_value NUMBER,
attribute_str_value VARCHAR2(4000),
attribute_support NUMBER,
attribute_confidence NUMBER)
|
|
|
|
|
|
(attribute_name VARCHAR2(30)
mean NUMBER,
mode_value VARCHAR2(4000),
variance NUMBER)
|
|
|
(attribute_name VARCHAR2(30),
bin_id NUMBER,
lower_bound NUMBER,
upper_bound NUMBER,
label VARCHAR2(4000),
count NUMBER)
|
|
|
(rule_id INTEGER,
antecedent DM_PREDICATES,
consequent DM_PREDICATES,
rule_support NUMBER,
rule_confidence NUMBER)
|
|
|
(attribute_name VARCHAR2(30),
conditional_operator CHAR(2)/*=,<>,<,>,<=,>=*/,
attribute_num_value NUMBER,
attribute_str_value VARCHAR2(4000),
attribute_support NUMBER,
attribute_confidence NUMBER)
|
使用上の注意
このテーブル・ファンクションは、DM_CLUSTER型の行をパイプライン出力します。 ODMのデータ型およびテーブル・ファンクションからのパイプライン出力については、「データ型」を参照してください。
例
この例では、my_oc_modelというOCモデルを事前に作成していると想定します。 このモデルのディテールから情報を取り出すには、次のようにします。
--View (unformatted) details from SQL*Plus
SELECT T.id clu_id,
T.record_count rec_cnt,
T.parent parent,
T.tree_level tree_level
FROM (SELECT *
FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_OC(
'my_oc_model'))
ORDER BY id) T
WHERE ROWNUM < 11;
このテーブル・ファンクションは、サポート・ベクター・マシン・モデルのディテールを表す行の集合を戻します。 このテーブル・ファンクションを適用できるのは、線形カーネルを使用して作成された分類モデルまたはリグレッション・モデルに限られます。 その他のカーネルについては、ORA-40215が戻されます。
構文
DBMS_DATA_MINING.GET_MODEL_DETAILS_SVM ( model_name IN VARCHAR2) RETURN DM_SVM_LINEAR_COEFF_SET PIPELINED;
パラメータ
戻り値
表25-35 GET_MODEL_DETAILS_SVMファンクションの戻り値
| 戻り値 | 説明 |
|---|---|
|
|
(class VARCHAR2(4000), attribute_set DM_SVM_ATTRIBUTE_SET) |
|
(attribute_name VARCHAR2(30),
attribute_value VARCHAR2(4000),
coefficient NUMBER)
詳細は、「使用上の注意」を参照してください。 |
使用上の注意
このテーブル・ファンクションは、DM_SVM_LINEAR_COEFF型の行をパイプライン出力します。 ODMのデータ型およびテーブル・ファンクションからのパイプライン出力については、「データ型」を参照してください。
DM_SVM_LINEAR_COEFFのclass列は分類ターゲット値を表します。 リグレッションのターゲットの場合、classはNULLです。 分類モデルの個々の分類ターゲット値の場合は、係数の集合が戻されます。 バイナリ分類モデル、1クラス分類子モデルおよびリグレッション・モデルの場合は、係数の単一集合のみが戻されます。
ネストした表DM_SVM_ATTRIBUTE_SETのattribute_value列は、カテゴリ属性で使用されます。 coefficient列は、線形係数の値です。
例
この例では、SVMモデルを作成した後、Oracle SQLからテーブル・ファンクションGET_MODEL_DETAILS_SVMをコールする方法を示します。
-- Create SVM model
BEGIN
dbms_data_mining.create_model(
model_name => 'SVM_Clas_sample',
mining_function => dbms_data_mining.classification,
data_table_name => 'svmc_sample_build_prepared',
case_id_column_name => 'id',
target_column_name => 'affinity_card',
settings_table_name => 'svmc_sample_settings');
END;
/
-- Display model details
SELECT *
FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_SVM('SVM_Clas_sample'))
ORDER BY class;
このテーブル・ファンクションは、ディシジョン・ツリー・モデルのディテールを示すXMLオブジェクトを戻します。
構文
DBMS_DATA_MINING.GET_MODEL_DETAILS_XML ( model_name IN VARCHAR2) RETURN XMLTYPE;
パラメータ
戻り値
使用上の注意
このファンクションは、ディシジョン・ツリーを表すXMLを戻します。この定義は、Data Mining Group Predictive Model Markup Language(PMML)バージョン2.1の仕様で規定されている定義です。 この仕様については、http://www.dmg.orgを参照してください。
このテーブル・ファンクションは、モデルの作成に使用された設定のリストを戻します。
構文
DBMS_DATA_MINING.GET_MODEL_SETTINGS( model_name IN VARCHAR2) RETURN DM_MODEL_SETTINGS PIPELINED;
パラメータ
戻り値
表25-39 GET_MODEL_SETTINGSファンクションの戻り値
| 戻り値 | 説明 |
|---|---|
|
|
(setting_name VARCHAR2(30), setting_value VARCHAR2(128)) |
使用上の注意
このテーブル・ファンクションは、DM_MODEL_SETTING型の行をパイプライン出力します。 ODMのデータ型およびテーブル・ファンクションからのパイプライン出力については、「データ型」を参照してください。
このテーブル・ファンクションを使用すると、モデルの作成に使用された設定を確認できます。 このファンクションの目的は情報の参照に限られています。モデルの設定は変更できません。
例
この例では、Naive Bayesアルゴリズムを使用して、census_modelという分類モデルを事前に作成していると想定します。 Oracle SQLを使用してこのモデルの設定を参照するには、次の文を実行します。
SELECT setting_name, setting_value
FROM TABLE(DBMS_DATA_MINING.GET_MODEL_SETTINGS('census_model'));
このテーブル・ファンクションはモデルのシグネチャを戻します。シグネチャは、APPLY操作への入力として必要になる個々のマイニング属性の名前と型を表す行の集合です。
ケースIDはマイニング属性とみなされません。 分類モデルとリグレッション・モデルでは、ターゲット属性もモデルのシグネチャに入りません。
構文
DBMS_DATA_MINING.GET_MODEL_SIGNATURE( model_name IN VARCHAR2) RETURN DM_MODEL_SIGNATURE PIPELINED;
パラメータ
戻り値
表25-41 GET_MODEL_SIGNATUREファンクションの戻り値
| 戻り値 | 説明 |
|---|---|
|
|
|
使用上の注意
このテーブル・ファンクションは、DM_MODEL_SIGNATURE型の行をパイプライン出力します。 ODMのデータ型およびテーブル・ファンクションからのパイプライン出力については、「データ型」を参照してください。
このテーブル・ファンクションを使用すると、モデルの作成に使用された属性のリスト(シグネチャ)を取得できます。 モデルを作成した時点、またはモデルを別の定義にインポートした時点からかなり長い時間が経った後で、テスト・データまたはスコアリング・データにモデルを適用(APPLY)する場合は、このファンクションを使用してモデルの属性リストを確認することをお薦めします。
例
この例では、Naive Bayesアルゴリズムを使用して、census_modelという分類モデルを事前に作成していると想定します。 Oracle SQLを使用してこのモデルのシグネチャを参照するには、次の文を実行します。
SELECT attribute_name, attribute_type
FROM TABLE(DBMS_DATA_MINING.GET_MODEL_SIGNATURE('census_model');
このプロシージャは、EXPORT_MODELまたはexpdpエクスポート・ユーティリティによって作成されたダンプ・ファイル・セットから、指定されたデータ・マイニング・モデルをインポートします。 IMPORT_MODELとEXPORT_MODELの両方で、Oracle Data Pumpテクノロジが使用されています。
|
関連項目: モデルのエクスポートおよびインポートの詳細は、『Oracle Data Mining管理者ガイド』を参照してください。 |
構文
DBMS_DATA_MINING.IMPORT_MODEL (
filename IN VARCHAR2,
directory IN VARCHAR2,
model_filter IN VARCHAR2 DEFAULT NULL,
operation IN VARCHAR2 DEFAULT NULL,
remote_link IN VARCHAR2 DEFAULT NULL,
jobname IN VARCHAR2 DEFAULT NULL,
schema_remap IN VARCHAR2 DEFAULT NULL);
パラメータ
表25-42 IMPORT_MODELプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
モデルのインポート元のダンプ・ファイル・セットの名前。 ダンプ・ファイル・セットは、 ダンプ・ファイル・セットには1つ以上のファイルを保存できます。 (詳細は、「EXPORT_MODELプロシージャ」を参照)。 ダンプ・ファイル・セット内に複数のダンプ・ファイルが存在する場合は、ファイルを列挙するかわりに |
|
|
ダンプ・ファイル・セットの場所を指定する、事前定義済のディレクトリ・オブジェクトの名前。 このディレクトリ・オブジェクト、およびこのディレクトリ・オブジェクトによって指定されるファイル・システム・ディレクトリに対する読取り/書込み権限が必要です。 |
|
|
インポートするモデルを指定するパラメータ(オプション)。 名前に基づいて個々のモデルをインポートできます。また、同じ特性を持つモデルのグループをインポートすることもできます。 たとえば、すべてのNaive Bayesモデル、または同じターゲット属性を使用するすべてのモデルをインポートできます。 詳細は、「使用上の注意」を参照してください。 例は、表25-43を参照してください。 |
|
|
モデルをインポートするか、モデルを作成するSQL文をインポートするかを指定するパラメータ(オプション)。 デフォルトでは、モデルがインポートされます。
|
|
|
このリリースでは使用されないパラメータ(オプション)。 |
|
|
インポート・ジョブの名前を指定するパラメータ(オプション)。 デフォルトでは、 ジョブ名を指定する場合は、スキーマ内で一意の名前を指定する必要があります。 ジョブ名の最大長は30文字です。 インポート・ジョブのログ・ファイルが、 |
|
|
別のスキーマにインポートするためのパラメータ(オプション)。 デフォルトでは、モデルのエクスポートとインポートは同じスキーマ内で行われます。 ダンプ・ファイル・セットが別のスキーマに属している場合は、 注意: 別のスキーマからモデルをインポートする際に、 |
使用上の注意
インポートするモデルは、model_filterパラメータで指定します。 モデルは、名前に基づいて指定できます。また、同じ特性を持つモデルの集合を指定することもできます。 名前に基づいてモデルを指定する場合は、1つのモデル名を指定するか、または複数のモデル名をカンマで区切って指定します。 同じ特性を持つモデルの集合を指定する場合は、DM_USER_MODELSビューに対する問合せのWHERE句を完成する条件式を使用します。 DM_USER_MODELSには、現行のスキーマ内のモデルが表示されます。 次の列が表示されます。
Name Null? Type ----------------------------------------- -------- ---------------------------- NAME NOT NULL VARCHAR2(25) FUNCTION_NAME VARCHAR2(30) ALGORITHM_NAME VARCHAR2(30) CREATION_DATE DATE BUILD_DURATION NUMBER TARGET_ATTRIBUTE VARCHAR2(30) MODEL_SIZE NUMBER
DM_USER_MODELSの列については、「ユーザー・ビュー」を参照してください。
model_filterの条件式を作成するには、列名、サポートされている条件演算子、および値を指定します。 サポートされている条件演算子には、<、<=、=、=>、>、LIKEおよびINがあります。 条件演算子およびWHERE句については、『Oracle Database SQLリファレンス』を参照してください。
表25-43に、モデル・フィルタの例を示します。
表25-43 モデル・フィルタ・パラメータのサンプル値
| サンプル値 | 意味 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
名前が |
|
|
すべてのNaive Bayesモデルをインポートします。 アルゴリズム名のリストについては、表25-2を参照してください。 |
|
|
すべての分類モデルをインポートします。 マイニング機能のリストについては、表25-1を参照してください。 |
例
この例では、dmuser2スキーマ内でモデルのエクスポートとインポートを行っています。 次に、同じモデルをdmuser3スキーマにインポートしています。 dmuser3ユーザーには、IMPORT_FULL_DATABASE権限があります。
SQL>CONNECT dmuser2/dmuser2_psw
SQL>SELECT name FROM dm_user_models;
NAME
-------------------------
NMF_SH_SAMPLE
SVMO_SH_CLAS_SAMPLE
SVMR_SH_REGR_SAMPLE
-- export the model called NMF_SH_SAMPLE to a dump file in same schema
SQL>EXECUTE DBMS_DATA_MINING.EXPORT_MODEL ('NMF_SH_SAMPLE_out', 'DATA_PUMP_DIR',
'name = ''NMF_SH_SAMPLE''');
-- import the model back into the same schema
SQL>EXECUTE DBMS_DATA_MINING.IMPORT_MODEL ('NMF_SH_SAMPLE_out01.dmp',
'DATA_PUMP_DIR', 'name = ''NMF_SH_SAMPLE''');
-- connect as different user
-- import same model into that schema
SQL>CONNECT dmuser3/dmuser3_psw
SQL>EXECUTE DBMS_DATA_MINING.IMPORT_MODEL ('NMF_SH_SAMPLE_out01.dmp',
'DATA_PUMP_DIR', 'name = ''NMF_SH_SAMPLE''',
'IMPORT', NULL, 'nmf_imp_job', 'dmuser2:dmuser3');
この例では、ユーザーSCOTTが作成したダンプ・ファイルmodel_exp_001.dmpから、ユーザーMARYがすべてのモデルをインポートします。 ダンプ・ファイルは、DM_DUMPというディレクトリ・オブジェクトにマップされたファイル・システム・ディレクトリに保存されています。 ユーザーMARYがIMPORT_FULL_DATABASE権限を持っていない場合は、IMPORT_MODELからエラーが戻されます。
-- import all models
DECLARE
file_name VARCHAR2(40);
BEGIN
file_name := 'model_exp_001.dmp';
DBMS_DATA_MINING.IMPORT_MODEL(
filename=>file_name,
directory=>'DM_DUMP', schema_remap=>'SCOTT:MARY');
DBMS_OUTPUT.PUT_LINE(
'DBMS_DATA_MINING.IMPORT_MODEL of all models from SCOTT done!');
END;
/
このプロシージャは、予測モデルまたは記述モデルをデータに適用した結果(APPLY結果)を上位N番までのフィルタに基づいてランク付けします。 分類モデルの場合は、このプロシージャへの入力パラメータとしてコスト・マトリックスを指定すると、予測のコストを反映したランク付けされた結果が得られます。
構文
DBMS_DATA_MINING.RANK_APPLY (
apply_result_table_name IN VARCHAR2,
case_id_column_name IN VARCHAR2,
score_column_name IN VARCHAR2,
score_criterion_column_name IN VARCHAR2,
ranked_apply_result_tab_name IN VARCHAR2,
top_N IN INTEGER DEFAULT 1,
cost_matrix_table_name IN VARCHAR2 DEFAULT NULL,
apply_result_schema_name IN VARCHAR2 DEFAULT NULL,
cost_matrix_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表25-44 RANK_APPLYプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
テスト・データセットに対する |
|
|
ケースID列の名前。 この名前は適用( |
|
|
適用結果表の予測列の名前。 |
|
|
適用結果表の確率列の名前。 |
|
|
ランク付けされた適用結果が保存される表の名前。 |
|
|
上位N番までが、精密なリコール計算の |
|
|
コスト・マトリックス表の名前。 |
|
|
|
|
|
コスト・マトリックス表に適用されるスキーマの名前。 |
使用上の注意
RANK_APPLYを使用すると、上位N番までのフィルタに基づいてランク付けされた適用結果を作成できます。また、モデルがコスト付きで作成されている場合は、予測のコストを反映した結果が得られます。
CREATE_MODEL、DROP_MODEL、RENAME_MODELなどの他のDDL操作の観点から見ると、RANK_APPLYの動作はAPPLYの動作と似ています。 このプロシージャの基本動作は、モデル型には依存しません。重要な入力パラメータは、APPLYによって固定スキーマ表に出力される適用結果です。
RANK_APPLYの主な使用目的は、本番環境においてモデルをスコアリング・データに適用(APPLY)して、最終的な適用結果を作成することです。 APPLYを使用してテスト・データにモデルを適用し、様々なコスト・マトリックス表に対するテスト指標値を計算した後、最適なコスト・マトリックスをRANK_APPLYへの入力として指定できます。
以降の項では、サポートされる個々のアルゴリズムにおいて、適用結果が保存される表のスキーマを示します。 case_id列の値は、適用結果のケースID列と同じ値になります。
ターゲットが数値である場合、ランク付けされた適用結果は次の定義を持つ表に保存されます。
(case_id VARCHAR2/NUMBER,
prediction NUMBER,
probability NUMBER,
cost NUMBER,
rank INTEGER)
ターゲットがカテゴリである場合、ランク付けされた適用結果は次の定義を持つ表に保存されます。
(case_id VARCHAR2/NUMBER,
prediction VARCHAR2,
probability NUMBER,
cost NUMBER,
rank INTEGER)
クラスタ化は非監視型のマイニング機能であるため、ターゲットは存在しません。 APPLY操作の結果は、単にケースに対応するクラスタ識別子と、ケースの確率のみになります。 コスト・マトリックスは考慮されません。 ランク付けされた適用結果は次の定義を持つ表に保存されます。この表のクラスタ識別子はtop-Nによってランク付けされます。
(case_id VARCHAR2/NUMBER,
cluster_id NUMBER,
probability NUMBER,
rank INTEGER)
特徴抽出も非監視型のマイニング機能であるため、ターゲットは存在しません。 APPLY操作の結果は、単にケースに対応する機能識別子と、ケースの一致率のみになります。 コスト・マトリックスは考慮されません。 ランク付けされた適用結果は次の定義を持つ表に保存されます。この表の機能識別子はtop-Nによってランク付けされます。
(case_id VARCHAR2/NUMBER,
feature_id NUMBER,
match_quality NUMBER,
rank INTEGER)
例
BEGIN /* build a model with name census_model. * (See example under CREATE_MODEL) */ /* if build data was pre-processed in any manner, * perform the same pre-processing steps on apply * data also. * (See examples in the section on DBMS_DATA_MINING_TRANSFORM) */ /* apply the model to data to be scored */ DBMS_DATA_MINING.RANK_APPLY( apply_result_table_name => 'census_apply_result', case_id_column_name => 'person_id', score_column_name => 'prediction', score_criterion_column_name => 'probability ranked_apply_result_tab_name => 'census_ranked_apply_result', top_N => 3, cost_matrix_table_name => 'census_cost_matrix'); END; / -- View Ranked Apply Results SELECT * FROM census_ranked_apply_result;
このプロシージャは、データ・マイニング・モデルの名前を指定された新しい名前に変更します。
構文
DBMS_DATA_MINING.RENAME_MODEL (
model_name IN VARCHAR2,
new_model_name IN VARCHAR2);
パラメータ
使用上の注意
RENAME_MODELを使用すると、既存のマイニング・モデルの名前を変更できます。
RENAME_MODELの動作は、SQL DDL RENAMEの動作と似ています。 その実行中には、DROP_MODELおよびCREATE_MODELはブロックされ実行できません。 一方、APPLYでは、SQL問合せと同様にモデル・データは更新されないため、RENAME_MODELの実行中でもAPPLYを実行できます。
ただし、APPLYでモデルを使用しているときに、そのモデルの名前を変更すると、RENAME操作は成功しますが、APPLYからは不確定な結果が戻されます。 この動作は、DDL操作によって問合せ操作がブロックされないというRDBMSの標準的な動作に準拠しています。
例
census_modelというモデルがあるとします。 次の例は、このモデルの名前を変更する方法を示しています。
BEGIN
DBMS_DATA_MINING.RENAME_MODEL(
model_name => 'census_model',
new_model_name => 'census_new_model');
END;
/