42.1 DBMS_DATA_MINING
DBMS_DATA_MINING
パッケージは、Oracle Machine Learning for SQLのモデルを作成、評価および問合せするためのアプリケーション・プログラミング・インタフェースです。
Oracle Databaseリリース21cでは、Oracle Data Miningという名称がOracle Machine Learning for SQL (OML4SQL)に変更されました。ただし、PL/SQLパッケージの名前はDBMS_DATA_MINING
のまま変更されていません。
この章のトピックは、次のとおりです:
42.1.1 DBMS_DATA_MININGの概要
Oracle Machine Learning for SQLは、教師ありと教師なしの両方の機械学習をサポートしています。教師あり機械学習は、履歴データに基づいてターゲット値を予測します。教師なし機械学習は、自然なグループを検出するもので、ターゲットを使用しません。OML4SQLのプロシージャは、構造化データと非構造化テキストに使用できます。
教師あり機械学習手法には、次のものがあります。
-
分類
-
回帰
-
特徴選択(属性評価)
-
時系列
教師なし機械学習手法には、次のものがあります。
-
クラスタリング
-
相関
-
特徴抽出
-
異常検出
機械学習モデルを構築および適用するために使用するステップは、使用する機械学習手法およびアルゴリズムによって異なります。次の表に、Oracle Machine Learning for SQLでサポートされているアルゴリズムを示します。
条42-1 OML4SQLのアルゴリズム
アルゴリズム | 略称 | ファンクション |
---|---|---|
AR |
||
CUR |
||
DT |
分類 |
|
EM |
クラスタリング |
|
ESA |
||
ESM |
||
GLM |
||
KM |
||
最小記述長 |
MDL |
|
MSET-SPRT |
異常検出、分類 |
|
NB |
||
NN |
||
NMF |
||
O-Cluster |
||
RF |
||
SVDおよびPCA |
特徴抽出 |
|
SVM |
||
XGBoost |
分類、回帰 |
OML4SQLでは、分類、回帰、クラスタリングおよび特徴抽出の機械学習手法に対して2つ以上のアルゴリズムをサポートしています。次の表に示すように、これらの機械学習手法には、それぞれデフォルトのアルゴリズムがあります。
表42-2 OML4SQLのデフォルト・アルゴリズム
マイニング機能 | デフォルト・アルゴリズム |
---|---|
分類 |
Naive Bayes |
クラスタリング |
k-Means |
特徴抽出 |
Non-Negative Matrix Factorization |
特徴選択 |
最小記述長 |
回帰 |
サポート・ベクター・マシン |
時系列 |
指数平滑法 |
42.1.2 DBMS_DATA_MININGのセキュリティ・モデル
DBMS_DATA_MINING
パッケージは、ユーザーSYS
によって所有され、データベース・インストールの一環としてインストールされます。このパッケージの実行権限は、PUBLICに付与されます。このパッケージ内のルーチンは、実行者権限(現行のユーザーの権限)を使用して実行されます。
DBMS_DATA_MINING
パッケージは、Oracle Machine Learning for SQLで利用するAPIを公開するものです。自分が所有するスキーマ内に機械学習のモデルを作成するユーザーには、CREATE MINING MODEL
システム権限が必要です。その他のスキーマ内に機械学習のモデルを作成するユーザーには、CREATE ANY MINING MODEL
システム権限が必要です。
ユーザーは、独自のスキーマ内に存在するモデルの管理を完全に制御できます。その他のスキーマ内にある機械学習のモデルを管理するために必要な追加のシステム権限には、ALTER ANY MINING MODEL
、DROP ANY MINING MODEL
、SELECT ANY MINING MODEL
、COMMENT ANY MINING MODEL
およびAUDIT ANY
があります。
機械学習のモデルに対する個別のオブジェクト権限であるALTER MINING MODEL
およびSELET MINING MODEL
を使用して、モデルに対する権限を異なるユーザーに選択的に付与できます。
参照:
OML4SQLのセキュリティ機能の詳細は、『Oracle Data Miningユーザーズ・ガイド』を参照してください。
42.1.3 DBMS_DATA_MINING — 機械学習のファンクション
機械学習のファンクションとは、特定の機械学習問題を解決するための方法を表します。
機械学習のファンクションは、モデルの作成時に指定する必要があります。機械学習のファンクションは、CREATE_MODELプロシージャまたはCREATE_MODEL2プロシージャのmining_function
パラメータで指定します。
表42-3 機械学習のファンクション
値 | 説明 |
---|---|
|
相関は、記述の機械学習ファンクションの一種です。相関モデルによって、データ・セット内に存在する関係とその発生確率が識別されます。 相関モデルでは、Aprioriアルゴリズムが使用されます。 |
|
属性重要度は、予測の機械学習ファンクションの一種で、特徴選択とも呼ばれます。属性評価モデルによって、特定の結果を予測する際の、属性の相対的な重要度が識別されます。 属性重要度モデルには、最小記述長(MDL)またはCUR行列分解を使用できます。MDLはデフォルトです。 |
|
分類は、予測の機械学習ファンクションの一種です。分類モデルは、履歴データを使用して質的ターゲットを予測します。 分類のモデルには、デシジョン・ツリー、ロジスティック回帰、多変量状態推定法 - 逐次確率比検定、Naive Bayes、サポート・ベクター・マシン(SVM)またはXGBoostを使用できます。デフォルトはNaive Bayes。 分類ファンクションは、異常検出にも使用できます。異常検出には、多変量状態推定手法 - 順次確率比率テスト・アルゴリズム、またはnullターゲットを含むSVMアルゴリズム(1クラスSVM)、またはnullターゲットを含むEMアルゴリズム(EM異常)を使用できます。 |
|
クラスタリングは、記述の機械学習ファンクションの一種です。クラスタリング・モデルは、データセットの中で自然なグループを識別します。 クラスタリングのモデルは、k-Means、O-Clusterまたは期待値最大化を使用できます。デフォルトはk-Means。 |
|
特徴抽出は、記述の機械学習ファンクションの一種です。特徴抽出モデルは、モデルのベースになる最適化されたデータセットを作成します。 特徴抽出モデルでは、明示的セマンティック分析、Non-negative Matrix Factorization、特異値分解または主成分分析を使用できます。デフォルトはNon-Negative Matrix Factorizationです。 |
|
回帰は、予測の機械学習ファンクションの一種です。回帰モデルは、履歴データを使用して量的ターゲットを予測します。 回帰のモデルには、線形回帰、サポート・ベクター・マシンまたはXGBoostを使用できます。デフォルトはサポート・ベクター・マシン。 |
|
時系列は、予測の機械学習ファンクションの一種です。時系列モデルは、ユーザー指定の時間ウィンドウに渡って時間順に並べられた過去の数値データに関する将来の値を予測します。時系列モデルでは、指数平滑法アルゴリズムを使用します。 |
参照:
マイニング機能の詳細は、『Oracle Machine Learning for SQL概要』を参照してください。
42.1.4 DBMS_DATA_MINING — モデル設定
Oracle Machine Learning for SQLは、モデルのアルゴリズムなどの特性を指定するために設定を使用します。設定には、一般的な設定と、機械学習のファンクションおよびアルゴリズムに固有の設定があります。
すべての設定にはデフォルト値があります。モデルの1つ以上の設定を上書きするには、設定表を作成する必要があります。設定表には、次の表に示す列名とデータ型を含める必要があります。
表42-4 モデル設定表に必要な列
列名 | データ型 |
---|---|
|
|
|
|
設定表に指定する情報は、モデルの作成時に使用されます。設定表の名前は、CREATE_MODELプロシージャのオプションの引数です。CREATE_MODEL2プロシージャを使用して、これらの設定を指定することもできます。
データ・ディクショナリ・ビューALL_MINING_MODEL_SETTINGS
を問い合せると、モデルで使用される設定を検索できます。このビューには、アクセス権を持つ機械学習モデルで使用されるモデル設定が表示されます。デフォルトの設定値およびユーザーが指定した設定値がすべて、このビューに含まれます。
参照:
-
『Oracle Databaseリファレンス』の
ALL_MINING_MODEL_SETTINGS
に関する説明 -
モデル設定の指定方法の詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください
42.1.4.1 DBMS_DATA_MINING — アルゴリズム名
ALGO_NAME
設定では、モデルのアルゴリズムが指定されます。
次の表に、ALGO_NAME
設定の値を示します。
表42-5 アルゴリズム名
ALGO_NAMEの値 | 説明 | 機械学習ファンクション |
---|---|---|
|
最小記述長 |
属性重要度 |
|
Apriori |
相関ルール |
|
CUR行列分解 |
属性重要度 |
|
デシジョン・ツリー |
分類 |
|
期待値の最大化 |
クラスタリング、分類 |
|
明示的セマンティック分析 |
特徴抽出 分類 |
|
指数平滑法 |
時系列 |
|
拡張可能アルゴリズムで使用される言語 |
サポートされるすべてのマイニング機能 |
|
一般化線形モデル |
分類、回帰および特徴選択と特徴生成 |
|
拡張k-Means |
クラスタリング |
|
多変量状態推定法 - 逐次確率比検定 |
分類 |
|
Naive Bayes |
分類 |
|
ニューラル・ネットワーク |
分類 |
|
Non-Negative Matrix Factorization |
特徴抽出 |
|
O-Cluster |
クラスタリング |
|
ランダム・フォレスト |
分類 |
|
特異値分解 |
特徴抽出 |
|
サポート・ベクター・マシン |
分類と回帰 |
|
XGBoost |
分類と回帰 |
参照:
アルゴリズムの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
42.1.4.2 DBMS_DATA_MINING — 自動データ準備
Oracle Machine Learning for SQLでは、完全自動データ準備(ADP)、ユーザーが指示する一般的なデータ準備およびユーザー指定の埋込みデータ準備がサポートされます。PREP_*
設定により、完全自動データ準備またはユーザーが指示する一般的なデータ準備をユーザーが要求できます。デフォルトでは、完全自動データ準備(PREP_AUTO_ON
)が有効になっています。
ADPを有効にすると、モデルでは、経験則を使用し、アルゴリズムの要件に応じて作成データを変換します。ユーザーは、完全ADPのかわりに、PREP_SCALE*
とPREP_SHIFT*
の設定を使用したデータのシフトまたはスケール(あるいはその両方)を要求できます。変換命令は、モデルに格納され、モデルが適用されるたびに再利用されます。モデル設定は、USER_MINING_MODEL_SETTINGS
で表示できます。
モデルの作成時にxform_list
パラメータに追加の変換を指定することによって、自動データ準備を補うことができます。「CREATE_MODELプロシージャ」および「CREATE_MODEL2プロシージャ」を参照してください。
ADPを使用しないときに、CREATE_MODEL
へのxform_list
パラメータで変換を指定しない場合は、作成データ、テスト・データおよびスコアリング・データのそれぞれに独自の変換を実装する必要があります。各データ・セットに同じ変換を実装する場合は特に注意してください。
ADPを使用しないときに、CREATE_MODEL
へのxform_list
パラメータで変換を指定すると、OML4SQLは、モデルに変換定義を埋め込んで作成データと一致するようにテスト・データおよびスコアリング・データを準備するようになります。
次の表に、PREP_*
設定の値を示します。
表42-6 PREP_*設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
この設定により、完全自動データ準備が有効になります。
デフォルトは |
|
|
この設定により、2次元数値列のスケーリングのデータ準備が有効になります。この変更を有効にするには、
|
|
PREP_SCALE_MAXABS |
この設定により、ネストした数値列のスケーリングのデータ準備が有効になります。この変更を有効にするには、 |
|
|
この設定により、2次元数値列のセンタリングのデータ準備が有効になります。この変更を有効にするには、
PREP_AUTO をOFF にする必要があります。次は、返される値です。
|
参照:
データ変換の詳細は、Oracle® Machine Learning for SQLを参照してください
42.1.4.3 DBMS_DATA_MINING — 機械学習ファンクションの設定
この表で説明する設定は、機械学習ファンクションに適用されます。
表42-7 機械学習ファンクションの設定
機械学習ファンクション | 設定名 | 設定値 | 説明 |
---|---|---|---|
相関 |
|
|
相関ルールの最大ルール長。 デフォルトは |
相関 |
|
|
相関ルールの最小信頼度。 デフォルトは |
相関 |
|
|
相関ルールの最小支持度 デフォルトは |
相関 |
|
正の整数 |
各ルールで満たす必要がある絶対最小支持度。値は整数である必要があります。 デフォルトは |
相関 |
|
|
各ルールで満たす必要がある最小逆確信度を設定します。 ルールの逆確信度は、ルールが発生するトランザクションの数を後件が発生するトランザクションの数で割ったものとして定義されています。 値は0から1の実数になります。 デフォルトは |
相関 |
|
|
各相関ルールに適用されるインクルード・ルールを設定します。これにより、項目のリストが指定されて、その1つ以上が前件または後件としてレポート対象の各相関ルールに表示されます。これは、インクルードする項目のリストを含むカンマで区切られた文字列です。 設定しない場合のデフォルトの動作では、フィルタ処理は適用されません。 次に例を示します。
|
相関 |
|
|
各相関ルールに適用されるエクスクルード・ルールを設定します。これにより、項目のリストが指定されて、レポート対象の各相関ルールにそれらの項目が表示されなくなります。これは、除外する項目のリストを含む、カンマで区切られた文字列です。リスト内の項目をルールに含めることはできません。 デフォルトは 次に例を示します。
|
相関 |
|
|
前件のインクルード・ルールを設定します。これにより、項目のリストが指定されて、レポート対象の各相関ルールの前件部分にその1つ以上が表示されます。これは、インクルードする項目のリストを含むカンマで区切られた文字列です。各ルールの前件部分に、リスト内の1つ以上の項目が含まれます。 デフォルトは 次に例を示します。
|
相関 |
|
|
前件のエクスクルード・ルールを設定します。これにより、項目のリストが指定されて、レポート対象の各相関ルールの前件部分にそれらの項目が表示されなくなります。これは、除外する項目のリストを含む、カンマで区切られた文字列です。リスト内の項目をルールの前件部分に含めることはできません。 デフォルトは 次に例を示します。
|
相関 |
|
|
後件のインクルード・ルールを設定します。これにより、項目のリストが指定されて、レポート対象の各相関ルールの後件部分にその1つ以上が表示されます。これは、インクルードする項目のリストを含むカンマで区切られた文字列です。各ルールの後件は、リスト内の項目である必要があります。 デフォルトは 次に例を示します。
|
相関 |
|
|
後件のエクスクルード・ルールを設定します。これにより、項目のリストが指定されて、レポート対象の各相関ルールの後件部分にそれらの項目が表示されなくなります。これは、除外する項目のリストを含む、カンマで区切られた文字列です。リスト内の項目を後件としてルールに含めることはできません。 エクスクルード・ルールを使用すると、格納する必要があるデータを削減できますが、ユーザーは、異なるインクルード・ルールまたはエクスクルード・ルールを実行するための追加のモデルを作成する必要がある場合があります。 デフォルトは 次に例を示します。
|
相関 |
|
|
集計する列を指定します。これは、集計する列の名前を含むカンマで区切られた文字列です。リスト内の列の数は10以下にする必要があります。
デフォルトは 項目ごとに、ユーザーが集計対象の複数の列を指定できます。追加データをバッファする場合は、必要なメモリー量が増加します。また、入力データ・セットが大きくなり、操作が増えるため、パフォーマンスへの影響が発生する場合があります。 |
相関 |
|
0 <ASSO_ABS_ERROR ≤MAX(ASSO_MIN_SUPPORT, ASSO_MIN_CONFIDENCE) |
相関ルールのサンプリングの絶対誤差を指定します。
|
相関 |
|
0 ≤ ASSO_CONF_LEVEL ≤ 1 |
相関ルールのサンプルに対する信頼水準を指定します。
|
分類 |
|
table_name |
(デシジョン・ツリーのみ)モデル作成のアルゴリズムに使用されるコスト・マトリックスを格納する表の名前。コスト・マトリックスは、分類ミスに関連するコストを指定します。 作成時には、デシジョン・ツリーのモデルのみがコスト・マトリックスを使用できます。適用時には、すべての分類アルゴリズムがコスト・マトリックスを使用できます。 コスト・マトリックス表は、ユーザーが作成します。列の要件については、「ADD_COST_MATRIXプロシージャ」を参照してください。 コストの詳細は、『Oracle Machine Learning for SQL概要』を参照してください。 |
分類 |
|
table_name |
(Naive Bayes)作成データとスコアリング・データの分布の差を埋めるために、事前確率を格納する表の名前。 事前確率表は、ユーザーが作成します。列の要件については、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください。事前確率の詳細は、『Oracle Machine Learning for SQL概要』を参照してください。 |
分類 |
|
table_name |
(GLMおよびSVMのみ)SVM分類およびGLMロジスティック回帰モデルの、各ターゲット値に関する重み情報を格納する表の名前。アルゴリズムでは、重みを使用して、より高い重み付けのクラスを優先するようにモデルにバイアスをかけます。 クラスの重み表は、ユーザーが作成します。列の要件については、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください。クラスの重みの詳細は、『Oracle Machine Learning for SQL概要』を参照してください。 |
分類 |
|
|
この設定により、ターゲットの分布を平均化するモデルをアルゴリズムで作成する必要があることが指定されます。分布の平均化では、主要なクラスを重視する全体精度ではなく、平均精度(クラスごとの精度の平均)を向上できるため、この設定は稀なターゲットが存在する場合に最適です。デフォルト値は |
分類 |
|
デシジョン・ツリーの場合:
ランダム・フォレストの場合:
|
このパラメータでは、各属性のビンの最大数を指定します。 デフォルト値は 「DBMS_DATA_MINING — 自動データ準備」を参照してください。 |
クラスタリング |
|
|
クラスタリング・アルゴリズムで生成されるリーフ・クラスタの最大数。このアルゴリズムでは、データによって、より少ない数のクラスタが返される場合があります。 通常、拡張k-Meansでは、個別のデータ・ポイントの数の方が多ければ、 期待値の最大化(EM)をクラスタリングに使用した場合、データによっては、 EMクラスタリング・アルゴリズムでは、 |
特徴抽出 |
|
|
特徴抽出モデルで抽出される特徴の数。 アルゴリズムによって、データからデフォルトが見積もられます。マトリックスのランクがこの数よりも小さい場合、戻される特徴は少なくなります。 CUR行列分解の場合、 |
参照:
機械学習のファンクションの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
42.1.4.4 DBMS_DATA_MINING — グローバル設定
この表の構成の設定はあらゆるタイプのモデルに適用できますが、現在は特定のアルゴリズムに対してのみ実装されています。
表42-8 グローバル設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
この設定では、Box-Cox分散安定化変換を有効にします。これは、ターゲット値が大きくなるにつれて分散が大きくなる場合に便利です。これにより、分散が小さくなり、ターゲットとの乗法関係が変換されて、よりシンプルな加法関係になります。この設定は、指数平滑法アルゴリズムにのみ適用可能です。EXSM_MODEL 設定の値が指定されていない場合、デフォルト値はODMS_BOXCOX_ENABLE で、EXSM_MODEL 設定の値が指定されている場合、デフォルト値はODMS_BOXCOX_DISABLE です。
|
|
正の整数 | これは、展開マッピングに含まれている必要があるカテゴリ値の最低限必要なサポートです。これにより、モデルに対して統計的に有意な影響を及ぼすのに十分な行インスタンスがないカテゴリ値が削除されますが、パフォーマンスが低下する可能性があります。デフォルトは、データセット内の行数に応じて、システムによって決定されます。値1 を指定すると、すべてのカテゴリ値がマッピングされます。
|
|
column_name |
(相関ルールのみ)トランザクションの項目を格納している列の名前。この設定が指定されていると、アルゴリズムは、2つの列で構成されたネイティブ・トランザクション形式でデータが表されると想定します。
ノート: Oracle Machine Learningは、この設定についてBOOLEAN 値をサポートしていません。
トランザクション・データの典型的な例としては、多くの項目を含む可能性があるバスケットがケースによって表されるマーケット・バスケット・データがあげられます。各項目は個別の行に格納され、1つのケースを表すのに多くの行が必要になる場合があります。ケースID値は各行を一意に識別しません。トランザクション・データはマルチレコード・ケース・データとも呼ばれます。 通常、相関ルール関数はトランザクション・データとともに使用されますが、単一レコード・ケース・データにも適用できます(その他のアルゴリズムと同様)。 単一レコードおよびマルチ・レコードのケース・データの詳細は、『Oracle SQL Developer Data Modelerユーザーズ・ガイド』を参照してください。 |
|
column_name |
(相関ルールのみ)トランザクションの各項目に関連付けられている値を格納している列の名前。この設定は、データがネイティブ・トランザクション形式で表されることを示す値が
ノート: Oracle Machine Learningは、この設定についてBOOLEAN 値をサポートしていません。
ASSO_AGGREGATES 、ケースIDおよび項目ID列が存在する場合は、項目値列が表示される場合とされない場合があります。
この項目値列では、(リンゴ3個などの)項目数、(マッキントッシュのリンゴなどの)項目タイプなどの情報を指定できます。 ASSO_AGGREGATES の詳細は、「DBMS_DATA_MINING - マイニング機能の設定」を参照してください。
|
|
|
トレーニング・データでの欠損値を処理する方法を示します。この設定は、スコアリング・データに影響を与えません。デフォルト値は、
値 |
|
column_name |
(GLMのみ)行の重み要素を含むトレーニング・データの列の名前。列のデータ型は数値である必要があります。Oracle Machine Learningは、この設定について 行の重みは、特定の構成が複数回繰り返される試用を設計する場合のように、繰返し行のコンパクトな表現として使用できます。また、行の重みは、モデルの作成中に特定の行を強調するためにも使用できます。たとえば、より新しい行を優先し、古い可能性のあるデータを避けるようにバイアスをかける場合に使用できます。 |
|
|
非構造化テキストからの個々のトークンの抽出方法に影響を与える。
|
|
1 <= 値 |
|
|
負でない値 |
あるトークンがいくつのドキュメントに表示されればそれを特徴として使用できるかを制御するテキスト処理設定です。 デフォルトは |
|
機械学習の属性のカンマ区切りリスト |
この設定は、パーティション化されたモデルを作成する要求を示しています。設定値は、リスト内のパーティション・キーの値を決定するために使用される機械学習属性のカンマ区切りリストです。Oracle Machine Learningは、この設定について |
|
1< value <= 1000000 |
この設定は、モデルに対して許可されるパーティションの最大数を示します。デフォルトは |
|
|
この設定により、ユーザーが作成データのサンプリングを要求できます。デフォルトは |
|
0 < Value |
この設定により、サンプリングされるおおよその行数が決まります。これは、 |
|
|
この設定により、パーティション化されたモデルのパラレル作成が制御されます。
デフォルト・モードは、 |
|
tablespace_name |
この設定では、記憶域の指定内容を制御します。 これを表領域の名前に明示的に設定すると(十分な割当て容量がある場合)、指定した表領域記憶域で結果のモデル・コンテンツが生成されます。この設定を指定していないと、ユーザーのデフォルトの表領域で結果のモデル・コンテンツが生成されます。 |
|
この値は、負でない整数である必要があります |
乱数シードのあるハッシュ関数は、一様分布の無作為数を生成します。ユーザーは、この設定によって乱数シードを制御できます。デフォルトは この設定は、ランダム・フォレスト、ニューラル・ネットワークおよびCUR行列分解で使用されます。 |
|
|
この設定により、モデル(特にパーティション化されたモデル)の作成時に使用される領域を削減します。デフォルト値は この設定が 削減される領域は、モデルに応じて異なります。約10倍の削減が可能です。 |
参照:
GLMの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
相関ルールの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
機械学習の非構造化テキストの詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください
42.1.5 DBMS_DATA_MINING — アルゴリズム固有のモデル設定
Oracle Machine Learning for SQLでは、アルゴリズム固有の設定を使用してモデルの特性が定義されます。
すべての設定にはデフォルト値があります。モデルの1つ以上の設定を上書きする場合は、それらの設定を指定する必要があります。
設定表に指定する情報は、モデルの作成時に使用されます。設定表の名前は、CREATE_MODELプロシージャのオプションの引数です。CREATE_MODEL2プロシージャを使用して、これらの設定を指定することもできます。
データ・ディクショナリ・ビューALL_MINING_MODEL_SETTINGS
を問い合せると、モデルで使用される設定を検索できます。このビューには、アクセス権を持つ機械学習モデルで使用されるモデル設定が表示されます。デフォルトの設定値およびユーザーが指定した設定値がすべて、このビューに含まれます。
参照:
-
『Oracle Databaseリファレンス』の
ALL_MINING_MODEL_SETTINGS
に関する説明 -
モデル設定の指定方法の詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください
42.1.5.1 DBMS_DATA_MINING - アルゴリズムの設定: ALGO_EXTENSIBLE_LANG
次の表に示した設定によって、拡張可能アルゴリズムを使用する機械学習のモデルの動作を構成します。モデルはR言語で作成されます。
RALG_*_FUNCTION
では、Rモデルの作成、スコアリングおよび表示に使用されるRスクリプトを指定します。このスクリプトは、Oracle Machine Learning for Rスクリプト・リポジトリに登録されている必要があります。Rスクリプトは、特別な権限のあるOML4Rによって登録します。MINING_MODEL_SETTING
表でALGO_EXTENSIBLE_LANG
がRに設定されている場合は、機械学習のモデルがR言語で作成されます。Rモデルが作成されると、Rスクリプトの名前がSYS
スキーマのMINING_MODEL_SETTING
表に記録されます。Rモデルが機能するには、スクリプトがスクリプト・リポジトリに存在している必要があります。こうしたRスクリプトによってRモデルを作成、スコアリングおよび表示するために使用されるRメモリーの量は、OML4Rで制御できます。
アルゴリズムに依存しないすべてのDBMS_DATA_MINING
サブプログラムは、機械学習ファンクション(相関、属性重要度、分類、クラスタリング、特徴抽出および回帰など)でRモデルに対する操作が可能です。
サポートされるDBMS_DATA_MINING
サブプログラムの一部を次に示します。
-
ADD_COST_MATRIXプロシージャ
-
COMPUTE_CONFUSION_MATRIXプロシージャ
-
COMPUTE_LIFTプロシージャ
-
COMPUTE_ROCプロシージャ
-
CREATE_MODELプロシージャ
-
DROP_MODELプロシージャ
-
EXPORT_MODELプロシージャ
-
GET_MODEL_COST_MATRIXファンクション
-
IMPORT_MODELプロシージャ
-
REMOVE_COST_MATRIXプロシージャ
-
RENAME_MODELプロシージャ
表42-9 ALGO_EXTENSIBLE_LANGの設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
Rアルゴリズムの機械学習モデル作成ファンクションに対する、既存の登録済Rスクリプトの名前を指定します。Rスクリプトにより、トレーニング・データに対して最初に入力した引数のRファンクションが定義され、Rモデル・オブジェクトが戻されます。クラスタリングと特徴抽出の機械学習ファンクションのモデル作成では、RモデルでR属性のdm$nclusおよびdm$nfeatを設定し、それぞれでクラスタと特徴の数を指定する必要があります。 |
|
SELECT value param_name, ...FROM DUAL
|
モデル作成ファンクションのオプションの入力パラメータに対する、数値および文字列のスカラーのリストを指定します。 |
|
|
既存の登録済Rスクリプトの名前を指定して、データをスコアリングします。スクリプトにより、対応する予測結果が含まれる |
|
|
スコアリングの各属性の重み(コントリビューション)を計算するRアルゴリズムに対する、既存の登録済Rスクリプトの名前を指定します。スクリプトにより、各属性の影響を与える重みが行内に含まれる |
|
|
モデル情報を生成するRアルゴリズムに対する、既存の登録済Rスクリプトの名前を指定します。モデル・ビューの生成には、この設定が必要です。 |
|
SELECT type_value column_name, ... FROM DUAL |
生成されるモデル・ビューの出力列タイプと列名の数値および文字列のスカラーのリストに対する、 |
42.1.5.2 DBMS_DATA_MINING — アルゴリズムの設定: CUR行列分離
次に示す設定は、CUR行列分解アルゴリズムの動作に影響します。
表42-10 CUR行列分解の設定
設定名 | 設定値 | 説明 |
---|---|---|
|
値は正整数である必要があります |
選択する属性の概数を定義します。 デフォルト値は属性の数です。 |
|
|
行選択を実行するかどうかを示すフラグを定義します。 デフォルト値は |
|
値は正整数である必要があります |
選択する行の概数を定義します。このパラメータは、ユーザーが行選択の実行を決定した場合( デフォルト値は行の合計数です。 |
|
値は正整数である必要があります |
列/行のレバレッジ・スコア計算に使用されるランク・パラメータを定義します。 ユーザーが入力値を指定していない場合は、システムによって値が決定されます。 |
42.1.5.3 DBMS_DATA_MINING - アルゴリズムの設定: デシジョン・ツリー
これらの設定は、デシジョン・ツリー・アルゴリズムの動作を構成します。デシジョン・ツリーの設定は、ランダム・フォレストの動作を構成する際にも使用されます。ランダム・フォレストでは、その設定によって個別のデシジョン・ツリーが構築されます。
表42-11 デシジョン・ツリーの設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
デシジョン・ツリーのツリー不純メトリック。 ツリー・アルゴリズムでは、各ノードでのデータの分岐に最適なテスト質問が検索されます。最適な分岐および分岐値は、ノードのエンティティに対するターゲット値の同質性(純度)が最大限に高くなるものです。純度はメトリックで表されます。デシジョン・ツリーでは、純度メトリックとしてジニ( |
|
デシジョン・ツリーの場合:
ランダム・フォレストの場合:
|
分岐の条件: ツリーの最大深度(ルート・ノードとリーフ・ノードとの間(リーフ・ノードを含む)の最大ノード数)。 デシジョン・ツリーの場合、デフォルトは ランダム・フォレストの場合、デフォルト値は |
|
|
ノード内のトレーニング行の最小行数は、トレーニング・データ内の行の割合として表されます。 デフォルトは |
|
|
ノードの分割を考慮する際に必要になる最小行数。トレーニング行の割合として表されます。 デフォルトは |
|
|
ノード内の最小行数。 デフォルトは |
|
|
分岐の条件: 値として表現される親ノードのレコードの最小数。レコード数がこの値よりも少ない場合、分岐は試行されません。 デフォルトは |
参照:
デシジョン・ツリーの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
42.1.5.4 DBMS_DATA_MINING - アルゴリズムの設定: 期待値の最大化
これらのアルゴリズム設定は、期待値の最大化アルゴリズムの動作を構成します。
参照:
期待値の最大化の詳細は、『Oracle Data Mining概要』を参照してください。
表42-12 データ準備と分析用の期待値の最大化設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
モデルに相関していない属性を含めるかどうかの指定。 ノート: この設定は、ネストしていない属性にのみ適用されます。 クラスタリングの場合、デフォルトはシステムによって決定されます。 異常検出の場合、デフォルトは |
|
|
モデルに含める相関属性の最大数。 ノート: この設定は、ネストしていない属性(2D)にのみ適用されます。 デフォルトは |
|
|
量的属性をモデリングする分布。入力表または入力ビューの全体に適用され、属性ごとの指定は許可されません。 オプションには、ベルヌーイ分布、ガウス分布またはシステム決定の分布が含まれます。ベルヌーイ分布やガウス分布を選択した場合、すべての量的属性が同じタイプの分布を使用してモデリングされます。システム決定の分布の場合は、個々の属性で、データに応じて異なる分布(ベルヌーイ分布またはガウス分布)を使用できます。 デフォルトは |
|
|
量的列のクラスタ統計を収集するために使用される等幅ビンの数。 デフォルトは |
|
|
ネストした各列で使用される予測の数を指定します。指定した数の予測よりも列の個別属性の数が少ない場合、データの予測は行われません。この設定は、すべてのネストしている列に適用されます。 デフォルトは |
|
|
複数値のベルヌーイ分布において、量的列のモデリングに使用されるクオンタイル・ビンの数を指定します。 デフォルトは、システムによって決定されます。 |
|
|
複数値のベルヌーイ分布において、質的列のモデリングに使用される上位Nビンの数を指定します。 デフォルトは、システムによって決定されます。 |
表42-13 学習用の期待値の最大化設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
EMの収束基準。収束基準は、取り分けておいたデータ・セットやベイズ情報量基準に基づいている場合があります。 デフォルトは、システムによって決定されます。 |
|
|
収束基準が取り分けておいたデータ・セットに基づいている場合( デフォルトは |
|
|
モデル内のコンポーネントの最大数。モデル検索が有効である場合、アルゴリズムによってコンポーネントの数(尤度ファンクションの改善度または正則化に基づいた指定された最大数まで)が自動的に決定されます。 EMクラスタリングの場合、コンポーネントの数は、クラスタの数以上である必要があります。 EMクラスタリングとEM異常の両方のデフォルトは20です。 |
|
|
EMアルゴリズムにおける最大反復数を指定します。 デフォルトは |
|
|
この設定により、様々なモデル・サイズが検索されるEMでのモデル検索が有効になり、最適なサイズが選択されます。 デフォルトは |
|
|
この設定により、EMアルゴリズムで、ソリューションから小さいコンポーネントを削除できます。 デフォルトは |
|
負でない整数 |
この設定により、EMで使用されるランダム・ジェネレータのシードが制御されます。デフォルトは |
表42-14 コンポーネント・クラスタリング用の期待値の最大化設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
EMコンポーネントの上位レベルのクラスタへのグループ化を有効または無効にします。無効にすると、コンポーネント自体がクラスタとして扱われます。この設定は、EMクラスタリングにのみ使用できます。 コンポーネント・クラスタリングを有効にすると、SQL デフォルトは |
|
|
EMコンポーネントのクラスタリングを制御する相違点のしきい値。相違点メジャーがしきい値よりも少ない場合、複数のコンポーネントは1つのクラスタに結合されます。この設定は、EMクラスタリングにのみ使用できます。 しきい値が低いと、よりコンパクトな多くのクラスタが作成されます。しきい値が高いと、より広く散らばった少数のクラスタが作成されます。 デフォルトは |
|
|
凝集クラスタリング・ステップにおけるリンケージ機能の指定を許可します。この設定は、EMクラスタリングにのみ使用できます。
デフォルトは |
表42-15 クラスタ統計用の期待値の最大化設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
クラスタ(セントロイド、ヒストグラムおよびルール)の記述統計の収集を有効または無効にします。統計を無効にすると、モデルのサイズが縮小され、 デフォルトは |
|
|
クラスタ・ルールに属性を含めるときに必要とされる最小限のサポート。このサポートでは、クラスタに割り当てられたデータ行のうち、属性がnull以外の値である必要があるものの割合を示します。この設定は、EMクラスタリングにのみ使用できます。 デフォルトは |
表42-16 異常検出の期待値の最大化設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
トレーニング・データでの目標となる外れ値率。この設定は、EM異常にのみ使用できます。 デフォルトは0.05です。 |
42.1.5.5 DBMS_DATA_MINING - アルゴリズムの設定: 明示的セマンティック分析
明示的セマンティック分析(ESA)は、意味を持つ解釈可能な特徴を抽出する際に役立つ技術です。
表42-17 明示的セマンティック分析の設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
この設定は、特徴抽出モデルに適用されます。デフォルト値は
ESAS_EMBEDDINGS_DISABLE です。ESAS_EMBEDDINGS_ENABLE を設定すると、次のようになります。
|
|
4096以下の正の整数 |
この設定は、特徴抽出モデルに適用されます。この設定では、埋込みを表すベクトルのサイズを指定します。このパラメータを設定できるのは、ESAS_EMBEDDINGS を有効にした場合のみです。デフォルト・サイズは1024です。この値がトレーニング・セット内の個別特徴の数より少ない場合は、明示的な特徴の実際の数が埋込みベクトルのサイズとしてかわりに使用されます。
|
|
テキスト入力は テキスト以外の入力は |
この設定により、入力行に表示する必要があるゼロ以外のエントリの最小数が決まります。デフォルトはテキスト入力の場合は100、テキスト以外の入力の場合は0です。 |
|
正の整数 |
この設定により、属性ごとの特徴の最大数が制御されます。デフォルトは |
|
負以外の数値 |
この設定により、変換される作成データの属性の重みに対して小さい値がしきい値処理されます。デフォルトは、 |
参照:
ESAの詳細は、『Oracle Machine Learning for SQL概要』を参照してください。
42.1.5.6 DBMS_DATA_MINING — アルゴリズムの設定: 指数平滑法
これらの設定は、指数平滑法(ESM)アルゴリズムの動作を構成します。
次の表に示す設定は、「指数平滑法」の設定名と使用可能な値を指定します。設定値は、接頭辞DBMS_DATA_MINING
を使用して指定できます。たとえば、DBMS_DATA_MINING.EXSM_SIMPLE
です。または、DBMS_DATA_MINING
接頭辞を付けずに一重引用符で囲んで設定値を指定できます。たとえば、'EXSM_SIMPLE'
です。
グローバル設定については、「DBMS_DATA_MINING — グローバル設定」を参照してください。
表42-18 指数平滑法の設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
この設定によって、モデルを指定します。
デフォルト値は |
|
|
この設定では、季節的な周期の長さとして正の整数値を指定します。この値は、 この設定は、季節性のあるモデルにのみ適用されます。また、そうしたモデルにのみ指定する必要があります。それ以外の場合、モデルはエラーをスローします。
|
|
|
この設定は、時間列( 入力表の時間列が日時型の場合、 入力表の時間列がOracle数値型の場合、
|
|
|
設定
EXSM_INITVL_OPTIMIZE によって、モデルの作成中に初期値が最適化されるかどうかが決まります。デフォルト値はEXSM_INITVL_OPTIMIZE_ENABLE です。
ノート: EXSM_INITVL_OPTIMIZE をEXSM_INITVL_OPTIMIZE_DISABLE に設定できるのは、ユーザーがEXSM_MODEL をEXSM_HW またはEXSM_HW_ADDSEA に設定した場合のみです。EXSM_MODEL が別のモデル・タイプに設定されているか、指定されていない場合、エラー40213 (競合する設定)がスローされ、モデルは作成されません。
|
|
|
この設定は、時間列が日時型を保持している場合にのみ適用されます。また、その場合にのみ指定する必要があります。入力時系列から累積時系列の値を生成する方法を指定します。
デフォルト値は |
|
オプションを指定します:
|
この設定では、欠損値の処理方法を指定します。欠損値は、入力データや時系列の累積処理で発生することがあります。数値またはオプションのどちらかを指定できます。数値を指定すると、すべての欠損値はその数値に設定されます。
この設定が指定されていない場合は、 |
|
1から30の間の数に設定する必要があります。 |
この設定では、何ステップ先の予測を行うかを指定します。 設定されていない場合、デフォルト値は |
|
0から1の間(両端を含まない)の数値にする必要があります。 |
この設定では、予測に対して目的とする信頼水準を指定します。 指定された信頼区間の上限と下限が報告されます。この設定が指定されていない場合、デフォルトの信頼水準は |
|
|
この設定では、目的とする最適化基準を指定します。最適化基準は、同じデータへのモデルの適合性を比較するための診断として役立ちます。
デフォルト値は、 |
|
正の整数 |
この設定では、誤差メトリックの平均二乗誤差(AMSE)の計算に使用するウィンドウの長さを指定します。 |
|
時系列列のカンマ区切りリスト |
この設定を使用すると、ターゲット系列に加えて最大20個の予測子系列を予測できます。 EXSM_SERIES_LIST 内の列名は、一重引用符で囲みます。
ノート: このリストは個々の列名ではなく、単一引用符で囲みます。たとえば:
接頭辞 |
EXSM_BACKCAST_OUTPUT |
|
この設定により、ユーザーはオプションでバックキャスト値の出力を抑制できます。バックキャストは、履歴データのモデル推定です。バックキャストの詳細は、時系列でのバックキャストを参照してください。バックキャスト値の出力を抑制すると、多数のパーティションを持つパーティション化されたESMモデルのメモリーおよびストレージ要件が大幅に削減される可能性があります。 デフォルト値は |
参照:
ESMの詳細は、『Oracle Machine Learning for SQL概要』を参照してください。
https://github.com/oracle-samples/oracle-db-examples/tree/main/machine-learning/sqlリリース・フォルダを参照し、oml4sql-time-series-exponential-smoothing.sql
の例をクリックします。
42.1.5.7 DBMS_DATA_MINING - アルゴリズムの設定: 一般化線形モデル
一般化線形モデル・アルゴリズムの動作は、次の表に示した設定で構成します。
表42-19 DBMS_DATA_MININGのGLM設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
信頼区間の信頼水準。 デフォルトの信頼水準は |
|
|
特徴生成が二次式または三次式のどちらであるかを示します。 特徴の生成を有効にすると、アルゴリズムでは、最適な特徴生成方式がデータに基づいて自動的に選択されます。 |
|
|
GLMに対して特徴生成を有効にするかどうかの指定。デフォルトでは、特徴生成は有効化されていません。 ノート: 特徴生成は、特徴選択が有効な場合にのみ有効です。 |
|
|
モデルに特徴を追加する際の、特徴選択のペナルティ基準。 特徴選択を有効にすると、アルゴリズムでは、ペナルティ基準がデータに基づいて自動的に選択されます。 |
|
|
GLMに対して特徴選択を有効にするかどうかの指定。 デフォルトでは、特徴選択は無効です。 |
|
|
特徴選択を有効にすると、この設定では、最終モデルで選択可能な特徴の最大数が指定されます。 デフォルトでは、十分なメモリーを確保するために、アルゴリズムによって特徴の数が制限されます。 |
|
|
最終モデルでの特徴のプルーニングを有効また無効にします。プルーニングは、線形回帰の場合はt検定統計に、ロジスティック回帰の場合はWald検定統計に基づきます。すべての特徴が全データに対して統計的な意味付けを持つまで、これらの特徴はループ処理でプルーニングされます。 特徴選択を有効にすると、アルゴリズムにより、データに基づいて自動的にプルーニングされます。 |
|
target_value |
バイナリ・ロジスティック回帰モデルで参照クラスとして使用されるターゲット値。その他のクラスに対しては確率が生成されます。 デフォルトでは、参照クラスの場合、最も普及率の高い値(ほとんどのケース)がアルゴリズムによって選択されます。 |
|
|
リッジ回帰を有効または無効にします。リッジは、回帰と分類の両方の機械学習ファンクションに適用されます。 リッジを有効にすると、 ノート: リッジは、特徴選択が指定されていない場合または明示的に無効にされている場合にのみ有効です。リッジ回帰と特徴選択の両方を明示的に有効にすると、例外が発生します。 |
|
|
リッジ・パラメータ値。この設定は、アルゴリズムでリッジ回帰の使用が構成されている場合にのみ使用されます。 リッジ回帰がアルゴリズムによって内部的に有効になっている場合、リッジ・パラメータはアルゴリズムによって決定されます。 |
GLMS_ROW_DIAGNOSTICS
|
|
行診断を有効または無効にします。 |
|
範囲は( |
GLMアルゴリズムの収束許容値の設定 デフォルト値は、システムによって決定されます。 |
|
正の整数 |
GLMアルゴリズムの最大反復数。デフォルト値は、システムによって決定されます。 |
|
|
SGDソルバーで使用されるバッチ内の行数。このパラメータの値によって、SGDソルバーのバッチのサイズが設定されます。0を入力すると、データ駆動のバッチ・サイズの推定値がトリガーされます。 デフォルトは |
|
|
この設定により、ユーザーがGLMソルバーを選択できます。 オプションは次のとおりです。
デフォルト値は、システムによって決定されます。 |
|
|
この設定により、ユーザーはスパース・ソルバーを使用できます(使用可能な場合)。デフォルト値は |
|
|
この設定を使用すると、ユーザーは、GLMモデルを作成するためのリンク・ファンクションを指定できます。リンク・ファンクションはマイニング機能に固有です。分類については、次のものが適用可能です。
回帰については、次のものが適用可能です。
|
42.1.5.8 DBMS_DATA_MINING - アルゴリズムの設定: k-Means
k-Meansアルゴリズムの動作は、次の表に示した設定で構成します。
表42-20 k-Meansの設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
k-Meansの最小収束許容値。最小収束許容値を満たすか、 収束許容値が減少すると、ソリューションはより正確になりますが、実行時間が長くなることがあります。 デフォルトの収束許容値は、 |
|
|
k-Meansの距離関数。 デフォルトの距離ファンクションは |
|
|
k-Meansの最大反復数。最大反復数に到達するか、 デフォルトの反復回数は |
|
|
クラスタのルール記述にその属性を含めるために必要な、非NULL値でなければならない属性値の最小パーセント。 データがまばらであったり多くの欠損値を含んでいる場合、最小支持度が高すぎると非常に短いルールまたは空のルールになる可能性があります。 デフォルトの最小支持度は、 |
|
|
k-meansで生成される属性ヒストグラムでのビンの数。各属性のビン境界は、トレーニング・データセット全体でグローバルに計算されます。ビニングの方法は等幅です。ただ1つのビンを持つ単一値が含まれる属性を除き、すべての属性は同じ数のビンを持ちます。 デフォルトのヒストグラム・ビン数は |
|
|
k-meansの分割基準。分割基準は、新しいk-Meansクラスタの初期化を制御します。アルゴリズムがバイナリ・ツリーを作成し、同時に新しいクラスタを1つ追加します。 分割基準がサイズに基づいている場合、新しいクラスタは現在最も大きなクラスタのある領域に置かれます。分割基準が分散値に基づいている場合、新しいクラスタは最も拡大されたクラスタの領域に置かれます。 デフォルトの分割基準は |
KMNS_RANDOM_SEED |
負でない整数 |
この設定により、k-Meansの初期化中に使用されるランダム・ジェネレータのシードを制御します。これは、負でない整数である必要があります。 デフォルトは |
|
|
この設定により、作成中に計算されるクラスタ詳細のレベルが決まります。
|
|
|
データをウィンザライズするには、このパラメータを有効または無効にします。ウィンザライズが有効な場合、平均値の周囲の6つの標準偏差のウィンドウ・サイズでデータが制限されます。この機能は、
AUTO_DATA_PREP をON およびOFF にして使用できます。範囲外の値は、間隔の端の値に置き換えられます。ウィンザライズはデフォルトでは有効になっていません。
ノート: ウィンザライズは、KMNS_EUCLIDEAN 距離ファンクションが使用されている場合にのみ使用できます。ウィンザライズが有効になっていて、他の距離ファンクションが設定されている場合は、例外が発生します。
|
参照:
- クラスタリングに関連する一般的な機械学習機能の設定については、「DBMS_DATA_MINING — 機械学習機能」を参照してください。
- k-Meansの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
42.1.5.9 DBMS_DATA_MINING - アルゴリズム設定: 多変量状態推定法 - 逐次確率比検定
多変量状態推定法 - 逐次確率比検定アルゴリズムのトレーニング・キャリブレーション動作を構成する設定です。
表42-21 MSET-SPRTの設定
設定名 | 設定値 | 説明 |
---|---|---|
|
正のdouble |
シグナル値が正常に周期変動するバンドを推定します。 デフォルト値は |
|
正の整数 |
しきい値を超えてアラートが生成される、最後のnシグナルの数(アラート・ウィンドウ)。アラート数は、アラート・ウィンドウ以内である必要があります。 デフォルト値は |
|
|
SPRT仮説統合ロジックで考慮するシグナルの数。 デフォルト値は |
|
0から1までの正のdouble |
誤警報確率FAP(誤検出)。 デフォルト値は |
|
0から1までの正のdouble |
不警報確率MAP(検出漏れ)。 デフォルトは |
|
正の整数 |
MSETモデルのキャリブレーションに使用するデータ行のおよその数。
デフォルト値は |
|
正の整数 |
デフォルト値は、データ駆動で決まります。 |
|
0より大きく、10000以下の正の整数 |
ランダム予測を使用するかどうかを指定します。センサーの数が設定値を超えると、ランダム予測が使用されます。ランダム予測を無効にするには、しきい値をセンサー数以上の値に設定します。 デフォルト値は |
|
正の整数 |
SPRT計算で使用される標準偏差の許容値。 デフォルト値は |
42.1.5.10 DBMS_DATA_MINING - アルゴリズムの設定: Naive Bayes
Naive Bayesアルゴリズムの動作は、次の表に示した設定で構成します。
表42-22 Naive Bayesの設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
NBアルゴリズムでの組しきい値。 デフォルトは |
|
|
NBアルゴリズムでの単一しきい値。 デフォルト値は |
参照:
Naive Bayesの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
42.1.5.11 DBMS_DATA_MINING — アルゴリズムの設定: ニューラル・ネットワーク
次の表に示した設定によってニューラル・ネットワーク・アルゴリズムの動作を構成します。
表42-23 DBMS_DATA_MININGのニューラル・ネットワーク設定
設定名 | 設定値 | 説明 |
---|---|---|
|
次のいずれかの文字列です。
|
最適化の方法を指定します。 デフォルト値は、システムによって決定されます。 |
|
次の1つ以上の文字列です。
|
非表示層の活性化関数を指定します。単一の活性化関数を指定(その後、非表示層に適用)することも、各層に活性化関数を個別に指定することもできます。層ごとに異なる活性化関数を用意できます。 1つ以上の層に異なる活性化関数を適用するには、各層に活性化関数を指定する必要があります。指定する活性化関数の数は、 たとえば、非表示層が3つある場合、次の設定値を使用して3つすべての層に同じ活性化関数の使用を指定できます。
次の設定値では、層ごとに異なる活性化関数を指定します。
ノート: 異なる活性化関数は、文字列として1つの文字列内に指定します。引用符はすべて一重引用符で、SQL文およびPL/SQLブロック内の一重引用符をエスケープするには2つの一重引用符を使用します。デフォルト値は |
NNET_HELDASIDE_MAX_FAIL |
正の整数 |
デフォルト値は |
|
|
除外メソッドの保持比率を定義します。 デフォルト値は |
|
正の整数 |
非表示層の数によってトポロジを定義します。 デフォルト値は |
|
正の整数 |
ニューラル・ネットワーク・アルゴリズムにおける最大反復数を指定します。
|
|
正の整数または正の整数のリスト |
層ごとのノード数によってトポロジを定義します。層ごとに異なる数のノードを保持できます。 各層に同じ数のノードを指定するには、単一の値を指定すると、その値が各層に適用されます。 1つ以上の層に異なる数のノードを指定するには、層ごとに1つずつカンマで区切った正の整数のリストを指定します。たとえば、3つの層の場合は、 層ごとのレイヤーのデフォルト数は、属性の数または |
|
|
L2正則化パラメータ・ラムダを定義します。 デフォルト値は |
|
次のいずれかの文字列です。
|
ニューラル・ネットワーク・アルゴリズムの正則化の設定です。トレーニング行の合計数が50000より大きい場合、デフォルトは |
|
|
ニューラル・ネットワーク・アルゴリズムの収束許容値の設定を定義します。 デフォルト値は |
|
|
この設定では、重みがランダムに初期化される領域の下限を指定します。
NNET_WEIGHT_LOWER_BOUND とNNET_WEIGHT_UPPER_BOUND は、同時に設定する必要があります。どちらか一方のみを設定すると、エラーが発生します。NNET_WEIGHT_LOWER_BOUND には、NNET_WEIGHT_UPPER_BOUND より大きな値を設定しないでください。デフォルト値は–sqrt(6/(l_nodes+r_nodes)) です。l_nodes の値は、次のとおりです。
|
|
|
この設定では、重みが初期化される領域の上限を指定します。 デフォルト値は |
参照:
ニューラル・ネットワークの詳細は、『Oracle Machine Learning for SQL概要』を参照してください。
42.1.5.12 DBMS_DATA_MINING - アルゴリズムの設定: Non-Negative Matrix Factorization
Non-negative Matrix Factorizationアルゴリズムの動作は、次の表に示した設定で構成します。
データ・ディクショナリ・ビュー*_MINING_MODEL_SETTINGS
(接頭辞ALL
、USER
またはDBA
を使用)を問い合せると、モデルの設定値を確認できます。*_MINING_MODEL_SETTINGS
の詳細は、『Oracle Databaseリファレンス』を参照してください。
表42-24 NMFの設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
NMFアルゴリズムでの収束許容値。 デフォルトは |
|
|
スコアリング結果で負数を許可するかどうか。 デフォルトは |
|
|
NMFアルゴリズムの反復回数。 デフォルトは |
|
|
NMFアルゴリズムのランダム・シード。 デフォルトは |
参照:
NMFの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
42.1.5.13 DBMS_DATA_MINING - アルゴリズムの設定: O-Cluster
O-Clusterアルゴリズムの動作は、この表の設定で構成します。
表42-25 O-CLusterの設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
新しいクラスタを分割するために必要な最大密度を指定する割合。この割合は、全体の均一密度と関連しています。 デフォルトは |
参照:
O-Clusterの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
42.1.5.14 DBMS_DATA_MINING — アルゴリズムの設定: ランダム・フォレスト
これらの設定では、ランダム・フォレスト・アルゴリズムの動作を構成します。ランダム・フォレストでは、個々のツリーの構築を構成するためにデシジョン・ツリーの設定を使用します。
表42-26 ランダム・フォレストの設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
列のランダムなサブセットのサイズ。ノードでの分割を選択しているときに考慮されます。各ノードで、プールのサイズは同じままになりますが、特定の候補の列数が変更されます。デフォルトは、モデル・シグネチャに含まれる列数の半数です。特殊な値の |
|
|
フォレスト内のツリーの数 デフォルトは |
|
|
個々のツリーの構築に使用するためにランダムにサンプリングされるトレーニング・データの割合。デフォルトは、トレーニング・データに含まれる行数の半数です。 |
関連トピック
参照:
ランダム・フォレストの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
42.1.5.15 DBMS_DATA_MINING - アルゴリズム定数と設定: 特異値分解
次の設定により、特異値分解アルゴリズムの動作が構成されます。
表42-27 特異値分解設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
SVDによって作成されたUマトリックスを永続化するかどうかを示します。 SVDのUマトリックスには、ビルド・データの行と同数の行があります。大規模なモデルの作成を回避するため、Uマトリックスは、
デフォルトは |
|
|
モデルでSVDスコアリングとPCAスコアリングのどちらを使用するかの指定。 ビルド・データがSVDでスコアリングされた場合、Uマトリックスと同じ予測になります。ビルド・データがPCAでスコアリングされた場合、UマトリックスとSマトリックスの積が予測になります。 デフォルトは |
|
|
この設定は、データのSVDの計算に使用されるソルバーを示します。PCAの場合、ソルバー設定は、データのPCAの計算に使用されるSVDソルバーのタイプを示します。この設定が指定されない場合、ソルバー・タイプの選択はデータ駆動で行われます。属性の数が3240を超える場合は、デフォルトのワイド・ソルバーが使用されます。そうでない場合、デフォルトのナロー・ソルバーが選択されます。 次に、ソルバーのグループを示します。
ナロー・データ・ソルバーの場合:
ワイド・データ・ソルバーの場合:
|
|
[ |
特徴のプルーニングには、この設定が使用されます。プルーニング対象外の最初の固有値の共有部分として、特徴の固有値の最小値を定義します。デフォルト値は、データ駆動で決まります。 |
|
[ |
ランダム・シード値は、確率SVDソルバーで使用されるサンプリング・マトリックスの初期化に使用されます。デフォルトは |
|
[ |
この設定により、確率SVDソルバーで使用されるサンプリング・マトリックスの列数が構成されます。このマトリックスの列数は、特徴の要求数にオーバーサンプリング設定を加えた数と同じです。SVDソルバーを |
|
[ |
べき乗法設定により、SSVDソルバーの精度が向上します。デフォルトは |
42.1.5.16 DBMS_DATA_MINING - アルゴリズムの設定: サポート・ベクター・マシン
次の表に示されている設定がサポート・ベクター・マシン・アルゴリズムの動作を構成します。
表42-28 SVMの設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
新しいデータに対して優れた一般化を実現するための、モデルの堅牢性に対するモデルの複雑性のバランスをとる正則化設定。SVMでは、データ駆動の手法を使用して複雑性要素が検出される。 SVMアルゴリズム(分類と回帰の両方)の複雑度係数の値。 デフォルト値は、アルゴリズムによってデータから概算されます。 |
|
|
SVMアルゴリズムでの収束許容値。 デフォルトは |
|
|
回帰の正則化設定(複雑度係数と同様)。イプシロンによって、データ内で許容される残差(ノイズ)が指定される。 SVM回帰のエプシロン係数の値。 デフォルトは |
|
|
サポート・ベクター・マシンのカーネル。線形またはガウス。 デフォルト値はSVMS_LINEAR です。
|
|
|
トレーニング・データでの目標となる外れ値率。1クラスSVMモデル(異常検出)に対してのみ有効です。 デフォルトは |
|
|
ガウス・カーネル関数の分布を制御する。SVMでは、データ駆動の手法が使用され、通常のケース間の距離と同じスケールにある標準偏差値が検出される。 SVMアルゴリズムの標準偏差の値。 これは、ガウス・カーネルにのみ適用されます。 デフォルト値は、アルゴリズムによってデータから概算されます。 |
|
正の整数 |
この設定により、SVM反復数の上限が設定されます。これはSVMソルバーに依存するため、デフォルトはシステムによって決定されます。 |
|
[ |
この設定により、不完全なコレスキ分解で使用されるピボット数の上限が設定されます。これは、非線形カーネルにのみ設定できます。デフォルト値は |
|
正の整数 |
この設定は、線形カーネルを使用するSVMモデルに適用されます。この設定により、SGDソルバーのバッチのサイズが設定されます。0を入力すると、データ駆動のバッチ・サイズの推定値がトリガーされます。デフォルト値は |
|
|
この設定により、SGD SVMソルバーで使用される正則化のタイプが制御されます。この設定は、線形SVMモデルにのみ使用できます。これは潜在的なモデル・サイズに依存するため、デフォルトはシステムによって決定されます。 |
|
|
この設定により、ユーザーがSVMソルバーを選択できます。カーネルが非線形である場合、SGDソルバーは選択できません。デフォルト値は、システムによって決定されます。 |
参照:
SVMの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
42.1.5.17 DBMS_DATA_MINING - アルゴリズムの設定: XGBoost
XGBoostの勾配ブースティング・アルゴリズムの動作を構成する設定です。
グローバル設定については、「DBMS_DATA_MINING — グローバル設定」を参照してください。
一般的な機械学習手法の設定については、「DBMS_DATA_MINING — 機械学習機能」を参照してください。
表42-29 一般的な設定
設定名 | 設定値 | 説明 |
---|---|---|
|
次のいずれかの文字列。
|
使用するブースタは次のとおりです。
デフォルト値は |
|
負でない整数。 |
ブースティング用の丸めの数。 デフォルト値は |
表42-30 ツリー・ブースティングの設定
設定名 | 設定値 | 説明 |
---|---|---|
|
負でない数値 |
重みに対するL1正規化項。この値を大きくすると、モデルはより保守的になります。 デフォルト値は |
|
[0, 1]の範囲内の数値 |
各レベルの分割ごとの列のサブサンプル比率。サブサンプリングは、新しい分割が行われるたびに発生します。 デフォルト値は |
|
[0, 1]の範囲内の数値 |
各ノードの列のサブサンプル比率(分割)。サブサンプリングは、新しい分割が評価されるたびに1回発生します。列は、現在のレベルで選択されている列セットからサブサンプリングされます。 デフォルト値は |
|
[0, 1]の範囲内の数値 |
各ツリーの構築時における列のサブサンプル比率。サブサンプリングは、ブースティングの反復ごとに1回発生します。 デフォルト値は |
|
[0, 1]の範囲内の数値 |
オーバーフィットを回避するために更新ステップで使用されるステップ・サイズの縮小。各ブースティング・ステップ後に、 デフォルト値は |
|
[0, ∞]の範囲内の数値 |
ツリーのリーフ・ノードでさらにパーティションを作成するのに必要な最小損失低減。gamma値が大きいほど、アルゴリズムは保守的になります。 デフォルト値は |
|
次のいずれかの文字列。
|
新しいノードをツリーに追加する方法を制御します。
デフォルト値は |
|
|
この設定では、モデル内で許可される相互作用を指定します。ネストされたリストの形式で制約を指定します。内側の各リストは、相互に作用できる特徴(列名)のグループです。相互作用で単一の列が渡された場合、入力は無視されます。 ここでは、特徴x0、x1およびx2は相互に作用できますが、他の特徴と相互に作用することはできません。同様に、x0とx4は相互に作用できるが、他の特徴と相互に作用することはできないというようになります。この設定は、2次元特徴に適用されます。サポートされていない型の列や存在しない特徴名を渡すと、エラーが発生します。 |
|
負でない数値 |
重みに対するL2正規化項。 デフォルト値は |
|
負でない整数 |
連続素性をバケット化するための離散ビンの最大数。この数を増やすと、計算時間はかかりますが、分割の最適化は向上します。
デフォルト値は |
|
[0, ∞]の範囲内の数値 |
各リーフ出力に許容される最大デルタ・ステップ。 これを正の値に設定すると、更新ステップがより保守的になります。通常、このパラメータは必要ありませんが、クラスが非常に不均衡な場合はロジスティック回帰に役立つことがあります。1から10までの値に設定すると、更新の制御に役立つことがあります。 デフォルト値は |
|
[0, ∞]の範囲内の整数 |
ツリーの最大深度。この値を大きくすると、モデルはより複雑になり、オーバーフィットする可能性が高くなります。 この値を0 (ゼロ)に設定すると、制限がないことを意味します。 ノート: grow_policy 設定がdepthwise の場合、max_depth 制限を設定する必要があります。
デフォルト値は |
|
負でない数値 |
追加するノードの最大数。 この設定は、 デフォルト値は |
|
[0, ∞]の範囲内の数値 |
子で必要とされるインスタンスの重み(ヘッセ)の最小合計。ツリー・パーティション・ステップの結果が、インスタンスの重みの合計が デフォルト値は |
|
[ |
この設定では、減少制約に従う必要がある特徴(列名)を指定します。特徴名はカンマで区切ります。たとえば、値'x4,x5'を設定すると、特徴x4およびx5に対して減少制約が設定されます。この設定は、数値列および2次元特徴に適用されます。サポートされていない型の列や存在しない特徴名を渡すと、エラーが発生します。 |
|
[ |
この設定では、増加制約に従う必要がある特徴(列名)を指定します。特徴名はカンマで区切ります。たとえば、値'x0,x3'を設定すると、特徴x0およびx3に対して増加制約が設定されます。この設定は、2次元特徴に適用されます。サポートされていない型の列や存在しない特徴名を渡すと、エラーが発生します。 |
|
負でない整数 |
各反復で構築されたパラレル・ツリーの数。このオプションを使用してブースティングされたランダム・フォレストをサポートします。 デフォルト値は |
|
負でない数値 |
正の重みと負の重みのバランスを制御します。これは、不均衡なクラスに役立ちます。考慮する一般的な値: デフォルト値は |
|
(0, 1)の範囲内の数値 |
列挙精度を高めます。近似貪欲ツリー法でのみ有効です。 ビン数の直接選択と比較して、この設定には、スケッチ精度による理論的な保証が付いています。通常、この設定を変更する必要はありませんが、より正確な列挙を得るために、より小さい数値の設定を検討することも可能です。 デフォルト値は |
|
[0, 1]の範囲内の数値 |
トレーニング・インスタンスのサブサンプル比率。0.5に設定すると、XGBoostでは、ツリーを拡張する前にトレーニング・データの半分がランダムにサンプリングされ、オーバーフィットが回避されます。サブサンプリングは、ブースティングの反復ごとに1回発生します。 デフォルト値は |
|
次のいずれかの文字列。
|
XGBoostで使用されるツリー構築アルゴリズムです。
デフォルト値は |
|
次の1つ以上のカンマで区切られた文字列。
|
実行するツリー・アップデータの順序を定義します。これにより、モジュール方式でツリーを構築および変更できます。これは、他のいくつかのパラメータに応じて、通常は自動的に設定される拡張パラメータです。ただし、設定を明示的に指定することもできます。 設定値は次のとおりです。
|
表42-31 ダート・ブースタの設定
設定名 | 設定値 | 説明 |
---|---|---|
|
0または1の数値 |
1に設定すると、ドロップアウト中に少なくとも1つのツリーが常に削除されます。0に設定すると、ドロップアウト中に少なくとも1つのツリーが常に削除されるわけではありません。 デフォルト値は |
|
次のいずれかの文字列。
|
正規化アルゴリズムのタイプです。
デフォルト値は |
|
[0.0, 1.0]の範囲内の数値 |
ドロップアウト比率(ドロップアウト中に削除する、ごく一部の前のツリー)。 デフォルト値は |
|
次のいずれかの文字列。
|
サンプリング・アルゴリズムのタイプです。
デフォルト値は |
|
[0.0, 1.0]の範囲内の数値 |
ブースティングの反復中にドロップアウト手順をスキップする確率。ドロップアウトがスキップされた場合、 ゼロ以外の デフォルト値は |
表42-32 線形ブースタの設定
設定名 | 設定値 | 説明 |
---|---|---|
|
負でない数値 |
トレーニング例の数に正規化されている、重みに対するL1正規化項。この値を大きくすると、モデルはより保守的になります。 デフォルト値は |
|
次のいずれかの文字列。
|
素性選択および順序付けの方法です。
デフォルト値は |
|
負でない数値 |
トレーニング例の数に正規化されている、重みに対するL2正規化項。この値を大きくすると、モデルはより保守的になります。 デフォルト値は |
|
負でない整数 |
デフォルト値は |
|
次のいずれかの文字列。
|
線形モデルに適合するアルゴリズムです。
デフォルト値は |
表42-33 Tweedie回帰の設定
設定名 | 設定値 | 説明 |
---|---|---|
|
(1, 2)の範囲内の数値 |
Tweedie分布 1に近い設定では、ポアソン分布にシフトします。 2に近い設定では、ガンマ分布にシフトします。 デフォルト値は |
XGBoostの目標には、分類機能モデルにのみ適用されるものもあれば、回帰機能モデルにのみ適用されるものもあります。互換性のないobjective
値を指定すると、エラーが発生します。DBMS_DATA_MINING.CREATE_MODEL
プロシージャで、DBMS_DATA_MINING.CLASSIFICATION
を関数として指定した場合、使用できる目標値はbinary
値およびmulti
値のみです。例外の1つはbinary: logitraw
で、これは、連続値を生成して回帰モデルにのみ適用されます。DBMS_DATA_MINING.REGRESSION
を関数として指定する場合は、binary: logitraw
またはcount
、rank
、reg
およびsurvival
のいずれかの値を目標として指定できます。
表42-34 学習タスクの設定
設定名 | 設定値 | 説明 |
---|---|---|
|
分類モデルの場合は、次のいずれかの文字列です。
回帰モデルの場合は、次のいずれかの文字列です。
|
分類モデル用の設定:
分類のデフォルト 回帰モデル用の設定:
回帰のデフォルトの |
|
[normal, logistic, extreme] |
AFTモデルのZ項の分布を指定します。これは、 |
|
正数 |
AFTモデルのZ項のサイズをスケーリングするスケーリング係数σを指定します。デフォルト値は |
|
column_name |
AFTモデルのラベルの右境界を含む列を指定します。非AFTモデルについてこのパラメータを選択することはできません。
ノート: Oracle Machine Learningは、この設定についてBOOLEAN 値をサポートしていません。
|
|
数値 |
すべてのインスタンスの初期予測スコア(グローバル・バイアス) 反復数が十分である場合、この値を変更してもあまり効果はありません。 デフォルト値は |
|
次の1つ以上のカンマで区切られた文字列。
|
検証データの評価メトリック。次の評価メトリックを1つ以上指定できます。
デフォルトのメトリックは、目標に応じて割り当てられます。
|
seed |
負でない整数 |
乱数シード。 デフォルト値は |
参照:
https://github.com/oracle/oracle-db-examples/tree/master/machine-learning/sql/ (リリースを選択し、XGBoostの例を参照してください)。42.1.6 DBMS_DATA_MINING — ソルバーの設定
Oracle Machine Learning for SQLのアルゴリズムでは、様々なソルバーを使用できます。ソルバーの設定は、ビルド時に設定表で指定できます。
42.1.6.1 DBMS_DATA_MINING — ソルバーの設定: Adam
次の設定により、Adaptive Moment Estimation (Adam)ソルバーの動作が構成されます。
ニューラル・ネットワーク・モデルでは、次の設定が使用されます。
表42-35 DBMS_DATA_MINING Adamの設定
設定名 | 設定値 | 説明 |
---|---|---|
|
[0; 1]の間隔内の負でない倍精度浮動小数点数 |
Adamの学習率。 デフォルト値は |
|
正の整数 |
バッチ当たりの行数。 デフォルト値は |
|
[0; 1]の間隔内の正の倍精度浮動小数点数 |
第1の瞬間の見積に対する指数減衰率。 デフォルト値は |
|
[0; 1]の間隔内の正の倍精度浮動小数点数 |
第2の瞬間の見積に対する指数減衰率。 デフォルト値は |
|
正の倍精度浮動小数点数 |
Adamの勾配の無限ノルム許容範囲。 デフォルト値は |
42.1.6.2 DBMS_DATA_MINING — ソルバーの設定: ADMM
次の表に示した設定によってADMM (Alternating Direction Method of Multipliers)の動作を構成します。一般化線形モデル(GLM)アルゴリズムには、ここに示す設定を使用します。
参照:
ニューラル・ネットワークの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
42.1.6.3 DBMS_DATA_MINING — ソルバーの設定: LBFGS
次の表に示した設定によってL-BFGSの動作を構成します。ニューラル・ネットワーク・モデルと一般化線形モデル(GLM)には、ここに示す設定を使用します。
表42-37 DBMS_DATA_MININGのL-BFGS設定
設定名 | 設定値 | 説明 |
---|---|---|
|
|
L-BFGSの勾配の無限ノルム許容範囲を定義します。デフォルト値は |
|
値は正整数である必要があります。 |
L-BFGSソルバーに保持される履歴コピーの数を定義します。 デフォルト値は |
|
|
L-BFGSでヘッセをスケールするかどうかを定義します。 デフォルト値は |
参照:
ニューラル・ネットワークの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
42.1.7 DBMS_DATA_MININGのデータ型
DBMS_DATA_MINING
パッケージでは、トランザクション・データを処理するためのオブジェクト・データ型が定義されています。このパッケージでは、ユーザー指定の変換用の型も定義されます。こうした型は、DM_NESTED_
n
と呼ばれています。このn
により、ネストした属性のOracleデータ型を識別します。
次の表に、Oracle Machine Learning for SQLのオブジェクト・データ型の説明を示します。
表42-38 DBMS_DATA_MININGのデータ・タイプの要約
データ・タイプ | 説明 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
モデルのユーザー定義変換のリスト。パラメータとしてCREATE_MODELプロシージャで使用されます。 このコレクション・タイプは、DBMS_DATA_MINING_TRANSFORMパッケージで定義されます。 |
ネストしたデータの処理の詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください。
ノート:
Oracle Database 12cリリース2以降、*GET_MODEL_DETAILS
は非推奨になり、モデル・ディテール・ビューに置き換えられています。『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください。
42.1.7.1 非推奨になったタイプ
このトピックでは、非推奨になったタイプの一覧表を示します。
DBMS_DATA_MINING
パッケージでは、モデル属性に関する情報を格納するためにオブジェクト・データ・タイプが定義されます。これらのタイプの大部分は、テーブル・ファンクションGET
_n
によって戻され、n
は戻す情報のタイプを表します。これらのファンクションは、モデル名を入力に使用し、要求された情報を行のコレクションとして戻します。
GET
ファンクションのリストは、「DBMS_DATA_MININGサブプログラムの要約」を参照してください。
すべてのテーブル・ファンクションでパイプライン出力が使用され、出力の各行がモデルの記憶域から読み取られながら実体化されるため、表オブジェクトが完全に生成されるまで待機する必要がありません。パイプライン・テーブル・ファンクションの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
表42-39 DBMS_DATA_MININGの非推奨になったデータ・タイプの要約
データ・タイプ | 説明 |
---|---|
|
クラスタの重心。 |
|
|
|
クラスタの子ノード。 |
|
|
|
クラスタ。クラスタには、 表42-41も参照してください。 |
|
表42-41も参照してください。 |
|
Naive Bayesモデルの属性の条件付き確率。 |
|
|
|
コスト・マトリックスの実際の値および予測値。 |
|
|
|
期待値最大化モデルのコンポーネント。 |
|
|
|
期待値最大化モデルのプロジェクト。 |
|
|
|
一般化線形モデルの属性の係数および関連付けられている統計。 |
|
|
|
クラスタに関連付けられたヒストグラム。 |
|
表42-41も参照してください。 |
|
相関ルールの項目。 |
|
|
|
|
|
|
|
モデルに関する高水準の統計。 |
|
|
|
Naive Bayesモデルの属性に関する情報。 |
|
|
|
Non-negative Matrix Factorizationモデルの機能の属性。 |
|
|
|
Non-negative Matrix Factorizationモデルの機能。 |
|
|
|
ルールの前件と後件。 |
|
表42-41も参照してください。 |
|
属性評価モデルで重要度別にランク付けされた属性。 |
|
|
|
条件付きの関係を定義するルール。 このルールには、GET_ASSOCIATION_RULESファンクションによって戻される相関ルールのいずれか、またはGET_MODEL_DETAILS_KMファンクションおよびGET_MODEL_DETAILS_OCファンクションによって戻されるクラスタのコレクションでクラスタに関連付けられたルールを指定できます。 表42-41も参照してください。 |
|
表42-41も参照してください。 |
|
特異値分解モデルによって戻されるマトリックス因数分解S、VまたはU。 |
|
|
|
サポート・ベクター・マシン・モデルの属性の名前、値および係数。 |
|
|
|
サポート・ベクター・マシン・モデルの各属性の線形係数。 |
|
|
|
属性の変換式および逆変換式。 |
|
|
クラスタリング・アルゴリズムの戻り値
この表には、DM_CLUSTER
の戻り値の列、ネストした表の列および行の説明が含まれます。
表42-40 クラスタリング・アルゴリズムのDM_CLUSTERの戻り値
戻り値 | 説明 |
---|---|
|
(id NUMBER, cluster_id VARCHAR2(4000), 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) |
DM_PREDICATE |
(attribute_name VARCHAR2(4000), attribute_subname VARCHAR2(4000), conditional_operator CHAR(2)/*=,<>,<,>,<=,>=*/, attribute_num_value NUMBER, attribute_str_value VARCHAR2(4000), attribute_support NUMBER, attribute_confidence NUMBER) |
DM_CLUSTERのフィールド
次の表では、DM_CLUSTER
のフィールドについて説明します。
表42-41 DM_CLUSTERのフィールド
列名 | 説明 |
---|---|
|
クラスタの識別子 |
|
モデル内のクラスタのID |
|
レコードの数を指定します。 |
|
親ID |
|
ルートからの分岐の数を指定します。 |
|
標準の統計モデルと比較して、一連の確認された出現が分散しているかどうかを定量化するために使用されるメジャー。 |
|
(attribute_name VARCHAR2(4000), attribute_subname VARCHAR2(4000), conditional_operator CHAR(2) /*=,<>,<,>,<=,>=*/, attribute_num_value NUMBER, attribute_str_value VARCHAR2(4000), attribute_support NUMBER, attribute_confidence NUMBER) ノート: 期待値の最大化アルゴリズムでは、 |
|
|
|
(attribute_name VARCHAR2(4000), attribute_subname VARCHAR2(4000), mean NUMBER, mode_value VARCHAR2(4000), variance NUMBER) |
|
(attribute_name VARCHAR2(4000), attribute_subname VARCHAR2(4000), 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, rule_lift NUMBER, antecedent_support NUMBER, consequent_support NUMBER, number_of_items INTEGER) |
使用上のノート
-
このテーブル・ファンクションは、
DM_CLUSTER
タイプの行をパイプライン出力します。Oracle Machine Learning for SQLのデータ型とテーブル・ファンクションからのパイプ出力については、「データ型」を参照してください。 -
述語(
DM_PREDICATE
)とルール(DM_RULE
)の説明については、「GET_ASSOCIATION_RULESファンクション」を参照してください。
42.1.8 DBMS_DATA_MININGサブプログラムの要約
この表は、DBMS_DATA_MINING
パッケージに含まれるサブプログラムの概要を示しています。
GET_*
インタフェースはモデル・ビューに置き換えられます。かわりにモデル・ディテール・ビューを利用することをお薦めします。詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』のモデル・ディテール・ビューに関する項と、『Oracle Databaseリファレンス』の静的データ・ディクショナリ・ビュー: ALL_ALL_TABLESからALL_OUTLINESに関する項を参照してください。
表42-42 DBMS_DATA_MININGパッケージのサブプログラム
サブプログラム | 用途 |
---|---|
分類モデルにコスト・マトリックスを追加します。 |
|
ADD_PARTITIONプロシージャ |
既存のパーティション・モデルに1つ以上のパーティションを追加します。 |
逆変換式を指定した式に変更します。 |
|
データ・セットにモデルを適用します(データのスコアリングを行います)。 |
|
分類モデルのコンフュージョン・マトリックスを計算します。 |
|
COMPUTE_CONFUSION_MATRIX_PARTプロシージャ |
パーティション化されたモデルの評価マトリックスを計算します。 |
分類モデルのリフトを計算します。 |
|
COMPUTE_LIFT_PARTプロシージャ |
パーティション化されたモデルのリフトを計算します。 |
分類モデルの受信者操作特性(ROC)を計算します。 |
|
COMPUTE_ROC_PARTプロシージャ |
パーティション化されたモデルの受信者操作特性(ROC)を計算します。 |
モデルを作成します。 |
|
CREATE_MODEL2プロシージャ |
永続性ステージを追加することなくモデルを作成します。 |
登録情報を使用したモデルの作成 |
JSONオブジェクトから設定情報をフェッチします |
DROP_ALGORITHMプロシージャ |
登録されているアルゴリズム情報を削除します。 |
DROP_PARTITIONプロシージャ |
単一パーティションを削除します。 |
モデルを削除します。 |
|
モデルをダンプ・ファイルにエクスポートします。 |
|
シリアライズされた形式でモデルをエクスポートします |
|
|
|
モデルのコスト・マトリックスを戻します。 |
|
モデルをユーザー・スキーマにインポートします。 |
|
ONNXモデルをデータベースにインポートします。 |
|
シリアライズされたモデルをデータベースにインポートします |
|
R拡張のJSONスキーマの作成における柔軟性を表示します |
|
新しいアルゴリズムを登録します |
|
分類モデルに対する |
|
モデルからコスト・マトリックスを削除します。 |
|
モデルの名前を変更します。 |
非推奨になったGET_MODEL_DETAILS
Oracle Database 12cリリース2以降、次のGET_MODEL_DETAILS
は非推奨になりました。
表42-43 非推奨になったGET_MODEL_DETAILS
ファンクション
サブプログラム | 目的 |
---|---|
相関モデルからルールを返します |
|
相関モデルの高頻度項目セットを返します |
|
属性重要度モデルに関する詳細を返します |
|
期待値の最大化モデルに関するディテールを戻します。 |
|
期待値の最大化モデルのパラメータに関するディテールを戻します。 |
|
期待値の最大化モデルのプロジェクトに関するディテールを戻します。 |
|
一般化線形モデルに関する詳細を返します |
|
モデルに関する高水準の統計を戻します。 |
|
k-Meansモデルに関するディテールを戻します。 |
|
Naive Bayesモデルに関するディテールを戻します。 |
|
Non-Negative Matrix Factorizationモデルに関するディテールを戻します。 |
|
O-Clusterモデルに関するディテールを戻します。 |
|
指定のモデルの作成に使用された設定を戻します このファンクションは、 |
|
作成用の入力表の列のリストを返します。 このファンクションは、 |
|
特異値分解モデルに関するディテールを戻します。 |
|
線形カーネルを使用するサポート・ベクター・マシン・モデルに関するディテールを戻します。 |
|
モデルに埋め込まれた変換を戻します。 このファンクションは、 |
|
デシジョン・ツリー・モデルに関するディテールを戻します。 |
|
2つの異なる変換仕様形式との間を変換します。 |
42.1.8.1 ADD_COST_MATRIXプロシージャ
ADD_COST_MATRIX
プロシージャは、分類モデルにコスト・マトリックス表を関連付けます。コスト・マトリックスでは、コストまたは利益を特定のモデル結果に割り当てることによって、そのモデルにバイアスをかけます。
コスト・マトリックスはモデルとともに格納され、モデルのスコアリング時に考慮されます。
また、スコアリングのためにOracle Machine Learning for SQLファンクションを起動したときに、コスト・マトリックスをインラインで指定できます。モデルのスコアリング・マトリックスを表示するには、DM$VC
の接頭辞付きモデル・ビューを問い合せます。分類アルゴリズムのモデル・ディテール・ビューに関する項を参照してください。
モデルのデフォルト・スコアリング・マトリックスを取得するには、DM$VC
の接頭辞付きモデル・ビューを問い合せます。モデルからデフォルト・スコアリング・マトリックスを削除するには、REMOVE_COST_MATRIX
プロシージャを使用します。「REMOVE_COST_MATRIXプロシージャ」を参照してください。
参照:
-
コストの詳細は、『Oracle Machine Learning for SQL概要』の分類モデルのバイアスに関する項を参照してください
-
インラインのコスト・マトリックスの構文は、『Oracle Database SQL言語リファレンス』を参照してください。
-
『Oracle Machine Learning for SQLユーザーズ・ガイド』のコストの指定に関する項を参照してください
構文
DBMS_DATA_MINING.ADD_COST_MATRIX ( model_name IN VARCHAR2, cost_matrix_table_name IN VARCHAR2, cost_matrix_schema_name IN VARCHAR2 DEFAULT NULL); partition_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表42-44 ADD_COST_MATRIXプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが想定されます。 |
|
コスト・マトリックス表の名前(表42-45を参照)。 |
|
コスト・マトリックス表のスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。 |
|
パーティション化されたモデルのパーティション名 |
使用上のノート
-
モデルが自分のスキーマ内にない場合、
ADD_COST_MATRIX
には、ALTER ANY MINING MODEL
システム権限か、その機械学習モデルに対するALTER
オブジェクト権限が必要になります。 -
コスト・マトリックス表には、表42-45に示す列が必要です。
表42-45 コスト・マトリックス表に必要な列
列名 データ型 ACTUAL_TARGET_VALUE
有効なターゲット・データ型
PREDICTED_TARGET_VALUE
有効なターゲット・データ型
COST
NUMBER
、FLOAT
、BINARY_DOUBLE
またはBINARY_FLOAT
参照:
有効なターゲット・データ型については、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください
-
実際のターゲット値と予測されるターゲット値のタイプは、モデル・ターゲットのタイプと同じである必要があります。たとえば、モデルのターゲットが
BINARY_DOUBLE
の場合、実際の値と予測される値はBINARY_DOUBLE
である必要があります。実際の値と予測値がCHAR
またはVARCHAR
の場合、ADD_COST_MATRIX
によって、VARCHAR2
として内部的に処理されます。タイプが一致しない場合、または実際の値や予測値が有効なターゲット値ではない場合、
ADD_COST_MATRIX
プロシージャでエラーが発生します。ノート:
ターゲットに逆変換が関連付けられている場合は、実際の値や予測値と、逆変換の適用後のターゲットとの整合性が保持されている必要があります。
詳細は、「DBMS_DATA_MINING_TRANSFORMの操作上のノート」の「変換リストについて」の「逆変換とモデルの透過性」を参照してください。
-
利益は負のコストとして表示できるため、コスト・マトリックス表の
COST
列に負の数値を指定すると、特定の結果に利益を指定できます。 -
すべての分類アルゴリズムで、スコアリングのためにコスト・マトリックスを使用できます。デシジョン・ツリー・アルゴリズムでは、作成時にコスト・マトリックスを使用することもできます。コスト・マトリックスを使用してデシジョン・ツリー・モデルを作成する場合、モデルの設定表の
CLAS_COST_TABLE_NAME
設定にコスト・マトリックス表の名前を指定します。表42-7を参照してください。デシジョン・ツリー・モデルを作成する場合に使用するコスト・マトリックスは、そのモデルに対するデフォルトのスコアリング・マトリックスになります。スコアリング用に異なるコストを指定する場合は、
REMOVE_COST_MATRIX
プロシージャを使用してコスト・マトリックスを削除し、ADD_COST_MATRIX
プロシージャを使用して新規コスト・マトリックスを追加します。 -
パーティション化されたモデルのスコアリングは、パーティション固有です。スコアリング・コスト・マトリックスは、パーティション化されたモデルの個々のパーティションに対して追加することも削除することもできます。
PARTITION_NAME
がNOT NULLの場合、モデルはパーティション化されたモデルである必要があります。COST_MATRIX
は、パーティション化されたモデルのそのパーティションに追加されます。PARTITION_NAME
がNULLであるが、モデルがパーティション化されたモデルである場合、COST_MATRIX
表はモデルのすべてのパーティションに追加されます。
例
この例では、COSTS_NB
というコスト・マトリックス表を作成し、NB_SH_CLAS_SAMPLE
というNaive Bayesモデルに追加します。このモデルにはバイナリ・ターゲットがあり、1は顧客がプロモーションに応答することを表し、0は顧客が応答しないことを表します。コスト・マトリックスは、応答しない顧客の分類ミスに0.25のコストを割り当て、応答する顧客の分類ミスに0.75のコストを割り当てます。これは、応答しない顧客の分類ミスよりも、応答する顧客の分類ミスの方が3倍コストがかかることを意味します。
CREATE TABLE costs_nb ( actual_target_value NUMBER, predicted_target_value NUMBER, cost NUMBER); INSERT INTO costs_nb values (0, 0, 0); INSERT INTO costs_nb values (0, 1, .25); INSERT INTO costs_nb values (1, 0, .75); INSERT INTO costs_nb values (1, 1, 0); COMMIT; EXEC dbms_data_mining.add_cost_matrix('nb_sh_clas_sample', 'costs_nb'); SELECT cust_gender, COUNT(*) AS cnt, ROUND(AVG(age)) AS avg_age FROM mining_data_apply_v WHERE PREDICTION(nb_sh_clas_sample COST MODEL USING cust_marital_status, education, household_size) = 1 GROUP BY cust_gender ORDER BY cust_gender; C CNT AVG_AGE - ---------- ---------- F 72 39 M 555 44
42.1.8.2 ADD_PARTITIONプロシージャ
ADD_PARTITION
プロシージャは、既存のパーティション化されたモデルに対する1つ以上のパーティションの追加をサポートしています。
ADD_PARTITION
プロシージャは、既存のモデルから作成設定とユーザー定義の式を導出します。教師ありモデルにパーティションを追加する場合は、ターゲット列が入力データ問合せに存在する必要があります。
構文
DBMS_DATA_MINING.ADD_PARTITION (
model_name IN VARCHAR2,
data_query IN CLOB,
add_options IN VARCHAR2 DEFAULT ERROR);
パラメータ
表42-46 ADD_PARTITIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
model_name |
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
data_query |
モデル作成にデータを提供する任意のSQL文。ユーザーには、この問合せを評価する権限が必要です。 |
add_options |
入力データ・セットの行がモデル内の既存のパーティションと競合する場合に、ユーザーがADDの条件付きの動作を制御できます。次は、返される値です。
ノート: パフォーマンス向上のために、REPLACE オプションを使用せずに、DROP_PARTITION の後でADD_PARTITION を使用することをお薦めします。
|
42.1.8.3 ALTER_REVERSE_EXPRESSIONプロシージャ
このプロシージャは、逆変換式を指定した式に置換します。属性に反転式が含まれない場合、このプロシージャは指定した式から反転式を作成します。
このプロシージャを使用して、クラスタリング、特徴抽出および異常検出の各モデルの出力をカスタマイズすることもできます。
構文
DBMS_DATA_MINING.ALTER_REVERSE_EXPRESSION ( model_name VARCHAR2, expression CLOB, attribute_name VARCHAR2 DEFAULT NULL, attribute_subname VARCHAR2 DEFAULT NULL);
パラメータ
表42-47 ALTER_REVERSE_EXPRESSIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。 |
|
属性に関連した逆変換を置き換える式。 |
|
属性の名前。 |
|
|
使用上のノート
-
Oracle Machine Learning for SQLでは、モデルの透過性を目的として、モデルに埋め込まれた変換に対応する逆変換が提供されます。逆変換は、モデル・ディテール・ビューで返される属性と、予測モデルのスコアリング・ターゲットに適用されます。
参照:
- 「DBMS_DATA_MINING_TRANSFORMの操作上のノート」の「変換リストについて」
- 『Oracle Machine Learning for SQLユーザーズ・ガイド』のモデル・ディテール・ビューに関する項を参照してください
-
コスト・マトリックスを持つモデルのターゲットに対する逆変換を変更する場合は、コスト・マトリックス内の実際の値および予測値と同じタイプの変換式を指定する必要があります。また、指定する逆変換の結果は、コスト・マトリックスに存在する値であることが必要です。
参照:
コスト・マトリックスの詳細は、『Oracle Machine Learning for SQL概要』のADD_COST_MATRIXプロシージャに関する項を参照してください。
-
属性の逆変換が行われないようにするために、
expression
にNULL
を指定できます。 -
逆変換式には、有効なOracleデータ型を返すPL/SQLファンクションの参照を含めることができます。たとえば、'Low'、'Medium'、および'High'の値を持つ
blood_pressure
という名前の質的属性に対して、次のようなファンクションを定義できます。CREATE OR REPLACE FUNCTION numx(c char) RETURN NUMBER IS BEGIN CASE c WHEN ''Low'' THEN RETURN 1; WHEN ''Medium'' THEN RETURN 2; WHEN ''High'' THEN RETURN 3; ELSE RETURN null; END CASE; END numx;
その後、次のように
blood_pressure
に対してALTER_REVERSE_EXPRESION
を呼び出すことができます。EXEC dbms_data_mining.alter_reverse_expression( '<model_name>', 'NUMX(blood_pressure)', 'blood_pressure');
-
ALTER_REVERSE_EXPRESSION
を使用して、クラスタリング・モデルによって生成されたクラスタと、特徴抽出によって生成された特徴にラベルを付けることができます。また、
ALTER_REVERSE_EXPRESSION
を使用すると、異常検出モデルによって戻された0(ゼロ)および1を置き換えることができます。デフォルトでは、異常検出モデルによって、異常レコードには0のラベルが付けられ、他のすべてのレコードには1のラベルが付けられます。参照:
異常検出の詳細は、『Oracle Machine Learning for SQL概要』を参照してください
例
-
この例では、モデル
CLASS_MODEL
のターゲット(affinity_card
)が、内部的に1
または0
のかわりにyes
またはno
で操作されます(ただし、スコアリング時には1
および0
が戻されます)。ALTER_REVERSE_EXPRESSION
プロシージャによって、ターゲット値がTRUE
またはFALSE
として戻されます。DECLARE v_xlst dbms_data_mining_transform.TRANSFORM_LIST; BEGIN dbms_data_mining_transform.SET_TRANSFORM(v_xlst, 'affinity_card', NULL, 'decode(affinity_card, 1, ''yes'', ''no'')', 'decode(affinity_card, ''yes'', 1, 0)'); dbms_data_mining.CREATE_MODEL( model_name => 'CLASS_MODEL', mining_function => dbms_data_mining.classification, data_table_name => 'mining_data_build', case_id_column_name => 'cust_id', target_column_name => 'affinity_card', settings_table_name => NULL, data_schema_name => 'oml_user', settings_schema_name => NULL, xform_list => v_xlst ); END; / SELECT cust_income_level, occupation, PREDICTION(CLASS_MODEL USING *) predict_response FROM mining_data_test WHERE age = 60 AND cust_gender IN 'M' ORDER BY cust_income_level; CUST_INCOME_LEVEL OCCUPATION PREDICT_RESPONSE ------------------------------ --------------------- -------------------- A: Below 30,000 Transp. 1 E: 90,000 - 109,999 Transp. 1 E: 90,000 - 109,999 Sales 1 G: 130,000 - 149,999 Handler 0 G: 130,000 - 149,999 Crafts 0 H: 150,000 - 169,999 Prof. 1 J: 190,000 - 249,999 Prof. 1 J: 190,000 - 249,999 Sales 1 BEGIN dbms_data_mining.ALTER_REVERSE_EXPRESSION ( model_name => 'CLASS_MODEL', expression => 'decode(affinity_card, ''yes'', ''TRUE'', ''FALSE'')', attribute_name => 'affinity_card'); END; / column predict_response on column predict_response format a20 SELECT cust_income_level, occupation, PREDICTION(CLASS_MODEL USING *) predict_response FROM mining_data_test WHERE age = 60 AND cust_gender IN 'M' ORDER BY cust_income_level; CUST_INCOME_LEVEL OCCUPATION PREDICT_RESPONSE ------------------------------ --------------------- -------------------- A: Below 30,000 Transp. TRUE E: 90,000 - 109,999 Transp. TRUE E: 90,000 - 109,999 Sales TRUE G: 130,000 - 149,999 Handler FALSE G: 130,000 - 149,999 Crafts FALSE H: 150,000 - 169,999 Prof. TRUE J: 190,000 - 249,999 Prof. TRUE J: 190,000 - 249,999 Sales TRUE
-
この例では、
sh_clus
モデルから生成されたクラスタにラベルを指定します。このラベルは、「クラスタ」という単語およびクラスタの内部数値識別子で構成されます。BEGIN dbms_data_mining.ALTER_REVERSE_EXPRESSION( 'sh_clus', '''Cluster ''||value'); END; / SELECT cust_id, cluster_id(sh_clus using *) cluster_id FROM sh_aprep_num WHERE cust_id < 100011 ORDER by cust_id; CUST_ID CLUSTER_ID ------- ------------------------------------------------ 100001 Cluster 18 100002 Cluster 14 100003 Cluster 14 100004 Cluster 18 100005 Cluster 19 100006 Cluster 7 100007 Cluster 18 100008 Cluster 14 100009 Cluster 8 100010 Cluster 8
42.1.8.4 APPLYプロシージャ
APPLY
プロシージャは、対象のデータに機械学習モデルを適用して、その結果を表に生成します。APPLY
プロシージャは、スコアリングとも呼ばれます。
予測の機械学習ファンクションの場合、APPLY
プロシージャは予測結果をターゲット列に生成します。クラスタリングなどの記述機械学習ファンクションの場合、APPLY
プロセスは、確率によって各ケースをクラスタに割り当てます。
Oracle Machine Learning for SQLでは、APPLY
プロシージャは、相関のモデルおよび属性重要度のモデルには適用できません。
ノート:
OML4SQLのファンクションを使用すると、SQLで直接スコアリングを実行することもできます。参照
-
『Oracle Database SQL言語リファレンス』のOracle Machine Learning for SQLのファンクションに関する項を参照してください
- 『Oracle Machine Learning for SQLユーザーズ・ガイド』のスコアリングと配置に関する項を参照してください
構文
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);
パラメータ
表42-48 APPLYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
スコアリング対象のデータが保存された表またはビューの名前。 |
|
ケースID列の名前。 |
|
適用結果が保存される表の名前。 |
|
スコアリング対象のデータが保存されたスキーマの名前。 |
使用上のノート
-
APPLY
に指定したデータでは、モデルの作成およびテストに使用されるデータと同じ事前処理が実行される必要があります。自動データ準備を使用する場合、アルゴリズムで必要な事前処理は、作成時と適用時の両方で、ユーザーのかわりにモデルによって処理されます。(「自動データ準備」を参照) -
APPLY
では、ユーザーのスキーマに表を作成して結果を保存します。列はアルゴリズム固有です。結果表の列については、表42-49から表42-53で説明します。結果表のケースID列名は、ユーザーが指定したケースID列名と同じ値になります。入力のケースID列のタイプは、
APPLY
の出力でも維持されます。ノート:
ケースID列が、
APPLY
で作成されるいずれの列の名前とも同じにならないことを確認してください。たとえば、分類モデルを適用する場合は、スコアリング・データ内のケースIDをPREDICTION
にもPROBABILITY
にもしないでください(表42-49を参照)。 -
出力列
PREDICTION
、CLUSTER_ID
およびFEATURE_ID
のデータ型は、ユーザーがモデルに埋め込んだ反転式による影響を受けます。ユーザーがスコアリング値のタイプを変更する反転式を指定しない場合は、そのタイプは次の表の説明に従います。詳細は、「ALTER_REVERSE_EXPRESSIONプロシージャ」を参照してください。 -
モデルがパーティション化されている場合、入力データ表からのデータに応じて、異なるパーティションからの結果が
result_table_name
に含まれる場合があります。PARTITION_NAME
という追加の列が結果表に追加され、各行に関連するパーティション名が示されます。パーティション化されていないモデルでは、動作は変更されません。
分類
分類の結果表には、表42-49に示す列があります。モデルが質的ターゲットの場合、PREDICTION
列のデータ・タイプはVARCHAR2
になります。ターゲットがバイナリ・タイプの場合、PREDICTION
列もターゲットのバイナリ・タイプになります。
表42-49 分類に対するAPPLYの適用結果表
列名 | データ型 |
---|---|
|
ケースIDのタイプ |
|
ターゲットのタイプ |
|
|
異常検出
異常検出の結果表には、表42-50に示す列があります。
表42-50 異常検出に対するAPPLYの適用結果表
列名 | データ型 |
---|---|
|
ケースIDのタイプ |
|
|
|
|
回帰
回帰の結果表には、「APPLYプロシージャ」に示す列があります。
表42-51 回帰に対するAPPLYの適用結果表
列名 | データ型 |
---|---|
|
ケースIDのタイプ |
|
ターゲットのタイプ |
クラスタリング
クラスタリングは教師なしの機械学習ファンクションであるため、ターゲットは存在しません。APPLY
プロシージャの結果には、ケースに対応するクラスタ識別子と、それに関連付けられた確率のみが含まれます。結果表には、表42-52に示す列があります。
表42-52 クラスタリングに対するAPPLYの適用結果表
列名 | データ型 |
---|---|
|
ケースIDのタイプ |
|
|
|
|
特徴抽出
特徴抽出も教師なしの機械学習ファンクションであるため、ターゲットは存在しません。APPLY
プロシージャの結果は、単にケースに対応する特徴識別子と、ケースの一致率のみになります。結果表には、表42-53に示す列があります。
表42-53 特徴抽出に対するAPPLYの適用結果表
列名 | データ型 |
---|---|
|
ケースIDのタイプ |
|
|
|
|
例
この例では、GLM回帰モデルGLMR_SH_REGR_SAMPLE
をMINING_DATA_APPLY_V
ビューのデータに適用します。APPLY
の適用結果は、REGRESSION_APPLY_RESULT
表の出力です。
SQL> BEGIN DBMS_DATA_MINING.APPLY ( model_name => 'glmr_sh_regr_sample', data_table_name => 'mining_data_apply_v', case_id_column_name => 'cust_id', result_table_name => 'regression_apply_result'); END; / SQL> SELECT * FROM regression_apply_result WHERE cust_id > 101485; CUST_ID PREDICTION ---------- ---------- 101486 22.8048824 101487 25.0261101 101488 48.6146619 101489 51.82595 101490 22.6220714 101491 61.3856816 101492 24.1400748 101493 58.034631 101494 45.7253149 101495 26.9763318 101496 48.1433425 101497 32.0573434 101498 49.8965531 101499 56.270656 101500 21.1153047
42.1.8.5 COMPUTE_CONFUSION_MATRIXプロシージャ
このプロシージャは、コンフュージョン・マトリックスを計算してユーザーのスキーマにある表に格納し、モデルの精度を戻します。
コンフュージョン・マトリックスは、分類モデルに対するテスト指標値です。一連のテスト・データにおいて、モデルによって生成された予測結果が実際のターゲット値と比較されます。コンフュージョン・マトリックスには、各クラスが正しく予測された回数と、各クラスが他のクラスのいずれかになると予測された回数がリストされます。
COMPUTE_CONFUSION_MATRIX
は、次の3つの入力ストリームを受け入れます。
-
テスト・データに対して生成された予測結果。この情報は、次の3つの列で渡されます。
-
ケースID列
-
予測列
-
確率とコストのいずれかが格納されているスコアリング基準列
-
-
テスト・データの既知のターゲット値。この情報は、次の2つの列で渡されます。
-
ケースID列
-
既知のターゲット値が格納されているターゲット列
-
-
(オプション)事前定義された列を持つコスト・マトリックス表。列の要件については、「使用上のノート」を参照してください。
参照:
コンフュージョン・マトリックスなどの分類に対応するテスト・メトリックの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
構文
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, score_criterion_type IN VARCHAR2 DEFAULT 'PROBABILITY');
パラメータ
表42-54 COMPUTE_CONFUSION_MATRIXプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
予測の全体的な精度(パーセント)が含まれる出力パラメータ。 |
|
予測結果が含まれる表。 |
|
テスト・データの既知のターゲット値が含まれる表。 |
|
適用結果表のケースID列。ターゲット表のケースIDと一致する必要があります。 |
|
ターゲット表のターゲット列。テスト・データの既知のターゲット値が格納されます。 |
|
コンフュージョン・マトリックスが含まれる表。この表は、このプロシージャによってユーザーのスキーマ内に作成されます。 コンフュージョン・マトリックス表の列については、「使用上のノート」を参照してください。 |
|
適用結果表の予測結果が格納される列。 デフォルトの列名は |
|
適用結果表のスコアリング基準値が格納される列。予測を決定する確率またはコストが格納されます。 デフォルトでは、スコアリングは確率に基づくため、各ケースに対して最も確率の高いクラスが予測されます。スコアリングがコストに基づく場合は、最もコストの低いクラスが予測されます。
デフォルトの列名は' 詳細は、「使用上のノート」を参照してください。 |
|
(オプション)分類ミスに関連付けられたコストを定義する表。コスト・マトリックス表があり、 コスト・マトリックス表の列については、「使用上のノート」を参照してください。 |
|
適用結果表のスキーマ。 NULLの場合、ユーザーのスキーマと想定されます。 |
|
既知のターゲットが含まれている表のスキーマ。 NULLの場合、ユーザーのスキーマと想定されます。 |
|
コスト・マトリックス表のスキーマ(指定されている場合)。 NULLの場合、ユーザーのスキーマと想定されます。 |
|
スコアリング基準として確率またはコストのいずれを使用するか。確率またはコストは、
「使用上のノート」および「例」を参照してください。 |
使用上のノート
-
COMPUTE_CONFUSION_MATRIX
に渡す予測情報は、SQLファンクションPREDICTION
、DBMS_DATA_MINING.APPLY
プロシージャまたはその他のメカニズムを使用して生成できます。プロシージャは、渡すデータが適切な場合にかぎり、コンフュージョン・マトリックスを計算できます。 -
COMPUTE_CONFUSION_MATRIX
にコスト・マトリックスを渡すかわりに、モデルに関連付けられているスコアリング・コスト・マトリックスを使用できます。スコアリング・コスト・マトリックスは、モデルに埋め込むか、またはモデルの適用時に動的に定義できます。スコアリング・コスト・マトリックスを使用するには、SQLファンクションPREDICTION_COST
を起動して、スコア基準列を移入します。 -
COMPUTE_CONFUSION_MATRIX
に渡す予測情報は、apply_result_table_name
で指定した表またはビューに格納されます。CREATE TABLE
apply_result_table_name
AS (case_id_column_name
VARCHAR2, score_column_name VARCHAR2,score_criterion_column_name
VARCHAR2); -
コスト・マトリックスには、表42-55に示す列が必要です。
表42-55 コスト・マトリックスの列
列名 データ型 actual_target_value
作成データのターゲット列のタイプ
predicted_target_value
テスト・データの予測ターゲットのタイプ。予測されるターゲットのタイプは、予測されるターゲットに関連した逆変換が存在しない限り、実際のターゲットのタイプと同じであることが必要です。
cost
BINARY_DOUBLE
参照:
有効なターゲット・データ型については、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください
コスト・マトリックスの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
-
COMPUTE_CONFUSION_MATRIX
で作成されるコンフュージョン・マトリックスには、表42-56に示す列があります。表42-56 コンフュージョン・マトリックスの列
列名 データ型 actual_target_value
作成データのターゲット列のタイプ
predicted_target_value
テスト・データの予測ターゲットのタイプ。予測されるターゲットのタイプは、予測されるターゲットに関連した逆変換が存在しない限り、実際のターゲットのタイプと同じです。
value
BINARY_DOUBLE
参照:
コンフュージョン・マトリックスの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
例
ここに示す例は、Naive Bayesモデルnb_sh_clas_sample
を使用します。
確率に基づくコンフュージョン・マトリックスの計算
次の文は、テスト・データにモデルを適用し、予測結果と確率を表に格納します。
CREATE TABLE nb_apply_results AS SELECT cust_id, PREDICTION(nb_sh_clas_sample USING *) prediction, PREDICTION_PROBABILITY(nb_sh_clas_sample USING *) probability FROM mining_data_test_v;
スコアリング基準として確率を使用する場合は、次のようにコンフュージョン・マトリックスを計算できます。
DECLARE v_accuracy NUMBER; BEGIN DBMS_DATA_MINING.COMPUTE_CONFUSION_MATRIX ( accuracy => v_accuracy, apply_result_table_name => 'nb_apply_results', target_table_name => 'mining_data_test_v', case_id_column_name => 'cust_id', target_column_name => 'affinity_card', confusion_matrix_table_name => 'nb_confusion_matrix', score_column_name => 'PREDICTION', score_criterion_column_name => 'PROBABILITY' cost_matrix_table_name => null, apply_result_schema_name => null, target_schema_name => null, cost_matrix_schema_name => null, score_criterion_type => 'PROBABILITY'); DBMS_OUTPUT.PUT_LINE('**** MODEL ACCURACY ****: ' || ROUND(v_accuracy,4)); END; /
コンフュージョン・マトリックスとモデルの精度は、次のとおりです。
**** MODEL ACCURACY ****: .7847 SQL>SELECT * from nb_confusion_matrix; ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE VALUE ------------------- ---------------------- ---------- 1 0 60 0 0 891 1 1 286 0 1 263
コスト・マトリックス表に基づくコンフュージョン・マトリックスの計算
前述の例のコンフュージョン・マトリックスは、高い偽陽性率を示しています。263のケースで、実際の値が0(ゼロ)であるにもかかわらず、モデルでは1と予測されました。コスト・マトリックスを使用すると、このようなエラーを最小限に抑えることができます。
コスト・マトリックス表nb_cost_matrix
から、偽陽性は偽陰性の3倍以上のコストがかかることがわかります。
SQL> SELECT * from nb_cost_matrix; ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE COST ------------------- ---------------------- ---------- 0 0 0 0 1 .75 1 0 .25 1 1 0
次の文は、APPLY
を使用して予測を生成する方法を示しています。
BEGIN DBMS_DATA_MINING.APPLY( model_name => 'nb_sh_clas_sample', data_table_name => 'mining_data_test_v', case_id_column_name => 'cust_id', result_table_name => 'nb_apply_results'); END; /
この文では、コスト・マトリックス表を使用してコンフュージョン・マトリックスが計算されます。スコア基準列の名前は'PROBABILITY
'で、この列名は、APPLY
で生成される名前です。
DECLARE v_accuracy NUMBER; BEGIN DBMS_DATA_MINING.COMPUTE_CONFUSION_MATRIX ( accuracy => v_accuracy, apply_result_table_name => 'nb_apply_results', target_table_name => 'mining_data_test_v', case_id_column_name => 'cust_id', target_column_name => 'affinity_card', confusion_matrix_table_name => 'nb_confusion_matrix', score_column_name => 'PREDICTION', score_criterion_column_name => 'PROBABILITY', cost_matrix_table_name => 'nb_cost_matrix', apply_result_schema_name => null, target_schema_name => null, cost_matrix_schema_name => null, score_criterion_type => 'COST'); DBMS_OUTPUT.PUT_LINE('**** MODEL ACCURACY ****: ' || ROUND(v_accuracy,4)); END; /
生成されるコンフュージョン・マトリックスは、(263から212に)偽陽性が低下したことを示しています。
**** MODEL ACCURACY ****: .798 SQL> SELECT * FROM nb_confusion_matrix; ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE VALUE ------------------- ---------------------- ---------- 1 0 91 0 0 942 1 1 255 0 1 212
埋め込まれたコストに基づくコンフュージョン・マトリックスの計算
ADD_COST_MATRIX
プロシージャを使用すると、モデルにコスト・マトリックスを埋め込むことができます。埋め込まれたコストは、確率のかわりにスコアリングに使用できます。次の文は、以前に定義済のコスト・マトリックスをモデルに追加します。
BEGIN DBMS_DATA_MINING.ADD_COST_MATRIX ('nb_sh_clas_sample', 'nb_cost_matrix');END;/
次の文は、埋め込まれたコストを使用してテスト・データにモデルを適用し、結果を表に格納します。
CREATE TABLE nb_apply_results AS SELECT cust_id, PREDICTION(nb_sh_clas_sample COST MODEL USING *) prediction, PREDICTION_COST(nb_sh_clas_sample COST MODEL USING *) cost FROM mining_data_test_v;
埋め込まれたコストを使用してコンフュージョン・マトリックスを計算できます。
DECLARE v_accuracy NUMBER; BEGIN DBMS_DATA_MINING.COMPUTE_CONFUSION_MATRIX ( accuracy => v_accuracy, apply_result_table_name => 'nb_apply_results', target_table_name => 'mining_data_test_v', case_id_column_name => 'cust_id', target_column_name => 'affinity_card', confusion_matrix_table_name => 'nb_confusion_matrix', score_column_name => 'PREDICTION', score_criterion_column_name => 'COST', cost_matrix_table_name => null, apply_result_schema_name => null, target_schema_name => null, cost_matrix_schema_name => null, score_criterion_type => 'COST'); END; /
結果は次のとおりです。
**** MODEL ACCURACY ****: .798 SQL> SELECT * FROM nb_confusion_matrix; ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE VALUE ------------------- ---------------------- ---------- 1 0 91 0 0 942 1 1 255 0 1 212
42.1.8.6 COMPUTE_CONFUSION_MATRIX_PARTプロシージャ
COMPUTE_CONFUSION_MATRIX_PART
プロシージャは、コンフュージョン・マトリックスを計算してユーザーのスキーマにある表に格納し、モデルの精度を戻します。
COMPUTE_CONFUSION_MATRIX_PART
は、パーティション化されたモデルのパーティションごとの評価メトリックの計算をサポートします。パーティション化されていないモデルについては、「COMPUTE_CONFUSION_MATRIXプロシージャ」を参照してください。
コンフュージョン・マトリックスは、分類のモデルに対応するテスト・メトリックです。一連のテスト・データにおいて、モデルによって生成された予測結果が実際のターゲット値と比較されます。コンフュージョン・マトリックスには、各クラスが正しく予測された回数と、各クラスが他のクラスのいずれかになると予測された回数がリストされます。
COMPUTE_CONFUSION_MATRIX_PART
は、次の3つの入力ストリームを受け入れます。
-
テスト・データに対して生成された予測結果。この情報は、次の3つの列で渡されます。
-
ケースID列
-
予測列
-
確率とコストのいずれかが格納されているスコアリング基準列
-
-
テスト・データの既知のターゲット値。この情報は、次の2つの列で渡されます。
-
ケースID列
-
既知のターゲット値が格納されているターゲット列
-
-
(オプション)事前定義された列を持つコスト・マトリックス表。列の要件については、「使用上のノート」を参照してください。
参照:
コンフュージョン・マトリックスなどの分類に対応するテスト・メトリックの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
構文
DBMS_DATA_MINING.compute_confusion_matrix_part( accuracy OUT DM_NESTED_NUMERICALS, 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', score_partition_column_name IN VARCHAR2 DEFAULT 'PARTITION_NAME', 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, score_criterion_type IN VARCHAR2 DEFAULT NULL);
パラメータ
表42-57 COMPUTE_CONFUSION_MATRIX_PARTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
予測の全体的な精度(パーセント)が含まれる出力パラメータ 出力引数は、 |
|
予測結果が含まれる表 |
|
テスト・データの既知のターゲット値が含まれる表 |
|
適用結果表のケースID列。ターゲット表のケースIDと一致する必要があります。 |
|
ターゲット表のターゲット列。テスト・データの既知のターゲット値が格納されます。 |
|
コンフュージョン・マトリックスが含まれる表。この表は、このプロシージャによってユーザーのスキーマ内に作成されます。 コンフュージョン・マトリックス表の列については、「使用上のノート」を参照してください。 |
|
適用結果表の予測結果が格納される列。 デフォルトの列名は |
|
適用結果表のスコアリング基準値が格納される列。予測を決定する確率またはコストが格納されます。 デフォルトでは、スコアリングは確率に基づくため、各ケースに対して最も確率の高いクラスが予測されます。スコアリングがコストに基づく場合は、最もコストの低いクラスが予測されます。
デフォルトの列名は 詳細は、「使用上のノート」を参照してください。 |
|
(オプション)パーティションの名前を含む列を示すパラメータ。この列により、各パーティションで独立した評価マトリックスが計算されるように、入力テスト結果がスライスされます。 |
|
(オプション)分類ミスに関連付けられたコストを定義する表。コスト・マトリックス表があり、 コスト・マトリックス表の列については、「使用上のノート」を参照してください。 |
|
適用結果表のスキーマ。 NULLの場合、ユーザーのスキーマと想定されます。 |
|
既知のターゲットが含まれている表のスキーマ。 NULLの場合、ユーザーのスキーマと想定されます。 |
|
コスト・マトリックス表のスキーマ(指定されている場合)。 NULLの場合、ユーザーのスキーマと想定されます。 |
|
スコアリング基準として確率またはコストのいずれを使用するか。確率またはコストは、
「使用上のノート」および「例」を参照してください。 |
使用上のノート
-
COMPUTE_CONFUSION_MATRIX_PART
に渡す予測情報は、SQLファンクションPREDICTION
、DBMS_DATA_MINING.APPLY
プロシージャまたはその他のメカニズムを使用して生成できます。プロシージャは、渡すデータが適切な場合にかぎり、コンフュージョン・マトリックスを計算できます。 -
COMPUTE_CONFUSION_MATRIX_PART
にコスト・マトリックスを渡すかわりに、モデルに関連付けられているスコアリング・コスト・マトリックスを使用できます。スコアリング・コスト・マトリックスは、モデルに埋め込むか、またはモデルの適用時に動的に定義できます。スコアリング・コスト・マトリックスを使用するには、SQLファンクションPREDICTION_COST
を起動して、スコア基準列を移入します。 -
COMPUTE_CONFUSION_MATRIX_PART
に渡す予測情報は、apply_result_table_name
で指定した表またはビューに格納されます。CREATE TABLE
apply_result_table_name
AS (case_id_column_name
VARCHAR2, score_column_name VARCHAR2,score_criterion_column_name
VARCHAR2); -
コスト・マトリックスには、表42-55に示す列が必要です。
表42-58 コスト・マトリックスの列
列名 データ型 actual_target_value
テスト・データのターゲット列のタイプ
predicted_target_value
テスト・データの予測ターゲットのタイプ。予測されるターゲットのタイプは、予測されるターゲットに関連した逆変換が存在しない限り、実際のターゲットのタイプと同じであることが必要です。
cost
BINARY_DOUBLE
参照:
有効なターゲット・データ型については、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください
コスト・マトリックスの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
-
COMPUTE_CONFUSION_MATRIX_PART
で作成されるコンフュージョン・マトリックスには、表42-56に示す列があります。表42-59 コンフュージョン・マトリックス(パーティション)の列
列名 データ型 actual_target_value
テスト・データのターゲット列のタイプ
predicted_target_value
テスト・データの予測ターゲットのタイプ。予測されるターゲットのタイプは、予測されるターゲットに関連した逆変換が存在しない限り、実際のターゲットのタイプと同じです。
value
BINARY_DOUBLE
参照:
コンフュージョン・マトリックスの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
例
ここに示す例は、Naive Bayesモデルnb_sh_clas_sample
を使用します。
確率に基づくコンフュージョン・マトリックスの計算
次の文は、テスト・データにモデルを適用し、予測結果と確率を表に格納します。
CREATE TABLE nb_apply_results AS SELECT cust_id, PREDICTION(nb_sh_clas_sample USING *) prediction, PREDICTION_PROBABILITY(nb_sh_clas_sample USING *) probability FROM mining_data_test_v;
スコアリング基準として確率を使用する場合は、次のようにコンフュージョン・マトリックスを計算できます。
DECLARE v_accuracy NUMBER; BEGIN DBMS_DATA_MINING.COMPUTE_CONFUSION_MATRIX_PART ( accuracy => v_accuracy, apply_result_table_name => 'nb_apply_results', target_table_name => 'mining_data_test_v', case_id_column_name => 'cust_id', target_column_name => 'affinity_card', confusion_matrix_table_name => 'nb_confusion_matrix', score_column_name => 'PREDICTION', score_criterion_column_name => 'PROBABILITY' score_partition_column_name => 'PARTITION_NAME' cost_matrix_table_name => null, apply_result_schema_name => null, target_schema_name => null, cost_matrix_schema_name => null, score_criterion_type => 'PROBABILITY'); DBMS_OUTPUT.PUT_LINE('**** MODEL ACCURACY ****: ' || ROUND(v_accuracy,4)); END; /
コンフュージョン・マトリックスとモデルの精度は、次のとおりです。
**** MODEL ACCURACY ****: .7847 SELECT * FROM NB_CONFUSION_MATRIX; ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE VALUE ------------------- ---------------------- ---------- 1 0 60 0 0 891 1 1 286 0 1 263
コスト・マトリックス表に基づくコンフュージョン・マトリックスの計算
前述の例のコンフュージョン・マトリックスは、高い偽陽性率を示しています。263のケースで、実際の値が0(ゼロ)であるにもかかわらず、モデルでは1と予測されました。コスト・マトリックスを使用すると、このようなエラーを最小限に抑えることができます。
コスト・マトリックス表nb_cost_matrix
から、偽陽性は偽陰性の3倍以上のコストがかかることがわかります。
SELECT * from NB_COST_MATRIX; ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE COST ------------------- ---------------------- ---------- 0 0 0 0 1 .75 1 0 .25 1 1 0
次の文は、APPLY
を使用して予測を生成する方法を示しています。
BEGIN DBMS_DATA_MINING.APPLY( model_name => 'nb_sh_clas_sample', data_table_name => 'mining_data_test_v', case_id_column_name => 'cust_id', result_table_name => 'nb_apply_results'); END; /
この文では、コスト・マトリックス表を使用してコンフュージョン・マトリックスが計算されます。スコア基準列の名前は'PROBABILITY
'で、この列名は、APPLY
で生成される名前です。
DECLARE v_accuracy NUMBER; BEGIN DBMS_DATA_MINING.COMPUTE_CONFUSION_MATRIX_PART ( accuracy => v_accuracy, apply_result_table_name => 'nb_apply_results', target_table_name => 'mining_data_test_v', case_id_column_name => 'cust_id', target_column_name => 'affinity_card', confusion_matrix_table_name => 'nb_confusion_matrix', score_column_name => 'PREDICTION', score_criterion_column_name => 'PROBABILITY', score_partition_column_name => 'PARTITION_NAME' cost_matrix_table_name => 'nb_cost_matrix', apply_result_schema_name => null, target_schema_name => null, cost_matrix_schema_name => null, score_criterion_type => 'COST'); DBMS_OUTPUT.PUT_LINE('**** MODEL ACCURACY ****: ' || ROUND(v_accuracy,4)); END; /
生成されるコンフュージョン・マトリックスは、(263から212に)偽陽性が低下したことを示しています。
**** MODEL ACCURACY ****: .798 SELECT * FROM NB_CONFUSION_MATRIX; ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE VALUE ------------------- ---------------------- ---------- 1 0 91 0 0 942 1 1 255 0 1 212
埋め込まれたコストに基づくコンフュージョン・マトリックスの計算
ADD_COST_MATRIX
プロシージャを使用すると、モデルにコスト・マトリックスを埋め込むことができます。埋め込まれたコストは、確率のかわりにスコアリングに使用できます。次の文は、以前に定義済のコスト・マトリックスをモデルに追加します。
BEGIN DBMS_DATA_MINING.ADD_COST_MATRIX ('nb_sh_clas_sample', 'nb_cost_matrix'); END;/
次の文は、埋め込まれたコストを使用してテスト・データにモデルを適用し、結果を表に格納します。
CREATE TABLE nb_apply_results AS SELECT cust_id, PREDICTION(nb_sh_clas_sample COST MODEL USING *) prediction, PREDICTION_COST(nb_sh_clas_sample COST MODEL USING *) cost FROM mining_data_test_v;
埋め込まれたコストを使用してコンフュージョン・マトリックスを計算できます。
DECLARE v_accuracy NUMBER; BEGIN DBMS_DATA_MINING.COMPUTE_CONFUSION_MATRIX_PART ( accuracy => v_accuracy, apply_result_table_name => 'nb_apply_results', target_table_name => 'mining_data_test_v', case_id_column_name => 'cust_id', target_column_name => 'affinity_card', confusion_matrix_table_name => 'nb_confusion_matrix', score_column_name => 'PREDICTION', score_criterion_column_name => 'COST', score_partition_column_name => 'PARTITION_NAME' cost_matrix_table_name => null, apply_result_schema_name => null, target_schema_name => null, cost_matrix_schema_name => null, score_criterion_type => 'COST'); END; /
結果は次のとおりです。
**** MODEL ACCURACY ****: .798 SELECT * FROM NB_CONFUSION_MATRIX; ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE VALUE ------------------- ---------------------- ---------- 1 0 91 0 0 942 1 1 255 0 1 212
42.1.8.7 COMPUTE_LIFTプロシージャ
このプロシージャは、リフトを計算し、ユーザーのスキーマにある表に結果を格納します。
リフトは、バイナリ分類モデルに対するテスト指標値です。リフトを計算するには、ターゲット値のいずれかをポジティブ・クラスに指定する必要があります。COMPUTE_LIFT
では、一連のテスト・データにおいて、モデルによって生成された予測結果が実際のターゲット値と比較されます。リフトでは、モデルによるポジティブ・クラスの予測結果が、ランダムに選択した場合と比較してどの程度向上しているかが測定されます。
リフトは、確率(またはコスト)によってランク付けされてクオンタイルに分割されたスコアリング結果に対して計算されます。各クオンタイルには、同じ数のケースのスコアが含まれます。
COMPUTE_LIFT
では、クオンタイルに基づく累積統計情報が計算されます。クオンタイルの数およびポジティブ・クラスはユーザーが指定します。また、COMPUTE_LIFT
は、次の3つの入力ストリームを受け入れます。
-
テスト・データに対して生成された予測結果。この情報は、次の3つの列で渡されます。
-
ケースID列
-
予測列
-
予測に関連付けられた確率とコストのいずれかが格納されているスコアリング基準列
-
-
テスト・データの既知のターゲット値。この情報は、次の2つの列で渡されます。
-
ケースID列
-
既知のターゲット値が格納されているターゲット列
-
-
(オプション)事前定義された列を持つコスト・マトリックス表。列の要件については、「使用上のノート」を参照してください。
参照:
分類に対応するリフトとテスト・メトリックの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
構文
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 score_criterion_type IN VARCHAR2 DEFAULT 'PROBABILITY');
パラメータ
表42-60 COMPUTE_LIFTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
予測結果が含まれる表。 |
|
テスト・データの既知のターゲット値が含まれる表。 |
|
適用結果表のケースID列。ターゲット表のケースIDと一致する必要があります。 |
|
ターゲット表のターゲット列。テスト・データの既知のターゲット値が格納されます。 |
|
リフト統計情報が含まれる表。この表は、このプロシージャによってユーザーのスキーマ内に作成されます。 リフト表の列については、「使用上のノート」を参照してください。 |
|
ポジティブ・クラス。リフトの計算対象となるクラスです。 ターゲット列が |
|
適用結果表の予測結果が格納される列。 デフォルトの列名は' |
|
適用結果表のスコアリング基準値が格納される列。予測を決定する確率またはコストが格納されます。 デフォルトでは、スコアリングは確率に基づくため、各ケースに対して最も確率の高いクラスが予測されます。スコアリングがコストに基づく場合は、最もコストの低いクラスが予測されます。
デフォルトの列名は' 詳細は、「使用上のノート」を参照してください。 |
|
リフト計算に使用するクオンタイル数。デフォルトは10です。 |
|
(オプション)分類ミスに関連付けられたコストを定義する表。コスト・マトリックス表があり、 コスト・マトリックス表の列については、「使用上のノート」を参照してください。 |
|
適用結果表のスキーマ。 NULLの場合、ユーザーのスキーマと想定されます。 |
|
既知のターゲットが含まれている表のスキーマ。 NULLの場合、ユーザーのスキーマと想定されます。 |
|
コスト・マトリックス表のスキーマ(指定されている場合)。 NULLの場合、ユーザーのスキーマと想定されます。 |
|
スコアリング基準として確率またはコストのいずれを使用するか。確率またはコストは、
「使用上のノート」および「例」を参照してください。 |
使用上のノート
-
COMPUTE_LIFT
に渡す予測情報は、SQLファンクションPREDICTION
、DBMS_DATA_MINING.APPLY
プロシージャまたはその他のメカニズムを使用して生成できます。プロシージャは、渡すデータが適切な場合にかぎり、リフトを計算できます。 -
COMPUTE_LIFT
にコスト・マトリックスを渡すかわりに、モデルに関連付けられているスコアリング・コスト・マトリックスを使用できます。スコアリング・コスト・マトリックスは、モデルに埋め込むか、またはモデルの適用時に動的に定義できます。スコアリング・コスト・マトリックスを使用するには、SQLファンクションPREDICTION_COST
を起動して、スコア基準列を移入します。 -
COMPUTE_LIFT
に渡す予測情報は、apply_results_table_name
で指定した表またはビューに格納されます。CREATE TABLE
apply_result_table_name
AS (case_id_column_name
VARCHAR2, score_column_name VARCHAR2,score_criterion_column_name
VARCHAR2); -
コスト・マトリックスには、表42-61に示す列が必要です。
表42-61 コスト・マトリックスの列
列名 データ型 actual_target_value
作成データのターゲット列のタイプ
predicted_target_value
テスト・データの予測ターゲットのタイプ。予測されるターゲットのタイプは、予測されるターゲットに関連した逆変換が存在しない限り、実際のターゲットのタイプと同じであることが必要です。
cost
NUMBER
参照:
コスト・マトリックスの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
-
COMPUTE_LIFT
で作成される表には、表42-62に示す列があります。表42-62 リフト表の列
列名 データ型 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
参照:
リフト表の詳細は、『Oracle Machine Learning for SQL概要』を参照してください
-
COMPUTE_LIFT
にコスト・マトリックスが渡されると、リフト表のprobability_threshold
列にコストしきい値が戻されます。
例
この例は、Naive Bayesモデルnb_sh_clas_sample
を使用します。
この例は、確率に基づくリフトを示しています。コストに基づく計算を示す例については、「COMPUTE_CONFUSION_MATRIXプロシージャ」を参照してください。
次の文は、テスト・データにモデルを適用し、予測結果と確率を表に格納します。
CREATE TABLE nb_apply_results AS SELECT cust_id, t.prediction, t.probability FROM mining_data_test_v, TABLE(PREDICTION_SET(nb_sh_clas_sample USING *)) t;
スコアリング基準として確率を使用する場合は、次のようにリフトを計算できます。
BEGIN DBMS_DATA_MINING.COMPUTE_LIFT ( apply_result_table_name => 'nb_apply_results', target_table_name => 'mining_data_test_v', case_id_column_name => 'cust_id', target_column_name => 'affinity_card', lift_table_name => 'nb_lift', positive_target_value => to_char(1), score_column_name => 'PREDICTION', score_criterion_column_name => 'PROBABILITY', num_quantiles => 10, cost_matrix_table_name => null, apply_result_schema_name => null, target_schema_name => null, cost_matrix_schema_name => null, score_criterion_type => 'PROBABILITY'); END; /
この問合せにより、生成されるリフト表の統計情報の一部が表示されます。
SQL>SELECT quantile_number, probability_threshold, gain_cumulative, quantile_total_count FROM nb_lift; QUANTILE_NUMBER PROBABILITY_THRESHOLD GAIN_CUMULATIVE QUANTILE_TOTAL_COUNT --------------- --------------------- --------------- -------------------- 1 .989335775 .15034965 55 2 .980534911 .26048951 55 3 .968506098 .374125874 55 4 .958975196 .493006993 55 5 .946705997 .587412587 55 6 .927454174 .66958042 55 7 .904403627 .748251748 55 8 .836482525 .839160839 55 10 .500184953 1 54
42.1.8.8 COMPUTE_LIFT_PARTプロシージャ
COMPUTE_LIFT_PART
プロシージャは、リフトを計算して、ユーザーのスキーマ内の表に結果を格納します。このプロシージャは、パーティション化されたモデルのパーティションごとの評価メトリックの計算をサポートします。
リフトは、2項分類モデルに対応するテスト・メトリックです。リフトを計算するには、ターゲット値のいずれかをポジティブ・クラスに指定する必要があります。COMPUTE_LIFT_PART
では、一連のテスト・データにおいて、モデルによって生成された予測結果が実際のターゲット値と比較されます。リフトでは、モデルによるポジティブ・クラスの予測結果が、ランダムに選択した場合と比較してどの程度向上しているかが測定されます。
リフトは、確率(またはコスト)によってランク付けされてクオンタイルに分割されたスコアリング結果に対して計算されます。各クオンタイルには、同じ数のケースのスコアが含まれます。
COMPUTE_LIFT_PART
では、クオンタイルに基づく累積統計情報が計算されます。クオンタイルの数およびポジティブ・クラスはユーザーが指定します。また、COMPUTE_LIFT_PART
は、次の3つの入力ストリームを受け入れます。
-
テスト・データに対して生成された予測結果。この情報は、次の3つの列で渡されます。
-
ケースID列
-
予測列
-
予測に関連付けられた確率とコストのいずれかが格納されているスコアリング基準列
-
-
テスト・データの既知のターゲット値。この情報は、次の2つの列で渡されます。
-
ケースID列
-
既知のターゲット値が格納されているターゲット列
-
-
(オプション)事前定義された列を持つコスト・マトリックス表。列の要件については、「使用上のノート」を参照してください。
参照:
分類に対応するリフトとテスト・メトリックの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
COMPUTE_CONFUSION_MATRIXプロシージャ
構文
DBMS_DATA_MINING.COMPUTE_LIFT_PART ( 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', score_partition_column_name IN VARCHAR2 DEFAULT 'PARTITION_NAME', 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, score_criterion_type IN VARCHAR2 DEFAULT NULL);
パラメータ
表42-63 COMPUTE_LIFT_PARTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
予測結果が含まれる表 |
|
テスト・データの既知のターゲット値が含まれる表 |
|
適用結果表のケースID列。ターゲット表のケースIDと一致する必要があります。 |
|
ターゲット表のターゲット列。テスト・データの既知のターゲット値が格納されます。 |
|
リフト統計情報が含まれる表。この表は、このプロシージャによってユーザーのスキーマ内に作成されます。 リフト表の列については、「使用上のノート」を参照してください。 |
|
ポジティブ・クラス。リフトの計算対象となるクラスです。 ターゲット列が |
|
適用結果表の予測結果が格納される列。 デフォルトの列名は |
|
適用結果表のスコアリング基準値が格納される列。予測を決定する確率またはコストが格納されます。 デフォルトでは、スコアリングは確率に基づくため、各ケースに対して最も確率の高いクラスが予測されます。スコアリングがコストに基づく場合は、最もコストの低いクラスが予測されます。
デフォルトの列名は 詳細は、「使用上のノート」を参照してください。 |
|
パーティションの名前を含む列を示すオプション・パラメータ。この列により、各パーティションで独立した評価マトリックスが計算されるように、入力テスト結果がスライスされます。 |
|
リフト計算に使用するクオンタイル数。デフォルトは10です。 |
|
(オプション)分類ミスに関連付けられたコストを定義する表。コスト・マトリックス表があり、 コスト・マトリックス表の列については、「使用上のノート」を参照してください。 |
|
適用結果表のスキーマ NULLの場合、ユーザーのスキーマと想定されます。 |
|
既知のターゲットが含まれている表のスキーマ NULLの場合、ユーザーのスキーマと想定されます。 |
|
コスト・マトリックス表のスキーマ(指定されている場合) NULLの場合、ユーザーのスキーマと想定されます。 |
|
スコアリング基準として確率またはコストのいずれを使用するか。確率またはコストは、
「使用上のノート」および「例」を参照してください。 |
使用上のノート
-
COMPUTE_LIFT_PART
に渡す予測情報は、SQLファンクションPREDICTION
、DBMS_DATA_MINING.APPLY
プロシージャまたはその他のメカニズムを使用して生成できます。プロシージャは、渡すデータが適切な場合にかぎり、リフトを計算できます。 -
COMPUTE_LIFT_PART
にコスト・マトリックスを渡すかわりに、モデルに関連付けられているスコアリング・コスト・マトリックスを使用できます。スコアリング・コスト・マトリックスは、モデルに埋め込むか、またはモデルの適用時に動的に定義できます。スコアリング・コスト・マトリックスを使用するには、SQLファンクションPREDICTION_COST
を起動して、スコア基準列を移入します。 -
COMPUTE_LIFT_PART
に渡す予測情報は、apply_results_table_name
で指定した表またはビューに格納されます。CREATE TABLE
apply_result_table_name
AS (case_id_column_name
VARCHAR2, score_column_name VARCHAR2,score_criterion_column_name
VARCHAR2); -
コスト・マトリックスには、表42-61に示す列が必要です。
表42-64 コスト・マトリックスの列
列名 データ型 actual_target_value
テスト・データのターゲット列のタイプ
predicted_target_value
テスト・データの予測ターゲットのタイプ。予測されるターゲットのタイプは、予測されるターゲットに関連した逆変換が存在しない限り、実際のターゲットのタイプと同じであることが必要です。
cost
NUMBER
参照:
コスト・マトリックスの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
-
COMPUTE_LIFT_PART
で作成される表には、表42-62に示す列があります。表42-65 COMPUTE_LIFT_PART表の列
列名 データ型 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
参照:
リフト表の詳細は、『Oracle Machine Learning for SQL概要』を参照してください
-
COMPUTE_LIFT_PART
にコスト・マトリックスが渡されると、リフト表のprobability_threshold
列にコストしきい値が戻されます。
例
この例は、Naive Bayesモデルnb_sh_clas_sample
を使用します。
この例は、確率に基づくリフトを示しています。コストに基づく計算を示す例については、「COMPUTE_CONFUSION_MATRIXプロシージャ」を参照してください。
パーティション化されたモデルの例については、「COMPUTE_CONFUSION_MATRIX_PARTプロシージャ」を参照してください。
次の文は、テスト・データにモデルを適用し、予測結果と確率を表に格納します。
CREATE TABLE nb_apply_results AS SELECT cust_id, t.prediction, t.probability FROM mining_data_test_v, TABLE(PREDICTION_SET(nb_sh_clas_sample USING *)) t;
スコアリング基準として確率を使用する場合は、次のようにリフトを計算できます。
BEGIN
DBMS_DATA_MINING.COMPUTE_LIFT_PART (
apply_result_table_name => 'nb_apply_results',
target_table_name => 'mining_data_test_v',
case_id_column_name => 'cust_id',
target_column_name => 'affinity_card',
lift_table_name => 'nb_lift',
positive_target_value => to_char(1),
score_column_name => 'PREDICTION',
score_criterion_column_name => 'PROBABILITY',
score_partition_column_name => 'PARTITITON_NAME',
num_quantiles => 10,
cost_matrix_table_name => null,
apply_result_schema_name => null,
target_schema_name => null,
cost_matrix_schema_name => null,
score_criterion_type => 'PROBABILITY');
END;
/
この問合せにより、生成されるリフト表の統計情報の一部が表示されます。
SELECT quantile_number, probability_threshold, gain_cumulative, quantile_total_count FROM nb_lift; QUANTILE_NUMBER PROBABILITY_THRESHOLD GAIN_CUMULATIVE QUANTILE_TOTAL_COUNT --------------- --------------------- --------------- -------------------- 1 .989335775 .15034965 55 2 .980534911 .26048951 55 3 .968506098 .374125874 55 4 .958975196 .493006993 55 5 .946705997 .587412587 55 6 .927454174 .66958042 55 7 .904403627 .748251748 55 8 .836482525 .839160839 55 10 .500184953 1 54
42.1.8.9 COMPUTE_ROCプロシージャ
このプロシージャは、受信者操作特性(ROC)を計算してユーザーのスキーマにある表に結果を格納し、モデルの精度を戻します。
ROCは、バイナリ分類モデルに対するテスト指標値です。ROCを計算するには、ターゲット値のいずれかをポジティブ・クラスに指定する必要があります。COMPUTE_ROC
では、一連のテスト・データにおいて、モデルによって生成された予測結果が実際のターゲット値と比較されます。
ROCは、確率しきい値における変化の影響を測定します。確率しきい値は、モデルが予測に使用する決定ポイントです。バイナリ分類では、デフォルトの確率しきい値は0.5です。それぞれのケースに対して、確率が50%を超える値が予測されます。
ROCは、X-Y軸上の曲線として描くことができます。X軸を偽陽性率にします。Y軸を真陽性率にします。偽陽性とは、陰性であるものがテスト・データで陽性と予測されることです。真陽性とは、陽性であるものがテスト・データで陽性と予測されることです。
COMPUTE_ROC
は、次の2つの入力ストリームを受け入れます。
-
テスト・データに対して生成された予測結果。この情報は、次の3つの列で渡されます。
-
ケースID列
-
予測列
-
確率が格納されているスコアリング基準列
-
-
テスト・データの既知のターゲット値。この情報は、次の2つの列で渡されます。
-
ケースID列
-
既知のターゲット値が格納されているターゲット列
-
参照:
分類に対応するROCおよびテスト・メトリックの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
構文
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);
パラメータ
表42-66 COMPUTE_ROCプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ROC曲線(AUC)の下部の面積が含まれる出力パラメータ。AUCによって、実際の陽性が陽性として予測される可能性が測定されます。 AUCが大きいほど、ポジティブ・クラスの予測とネガティブ・クラスの予測の間のトレードオフに対応するモデルの柔軟性が高くなります。AUCは、あるターゲット・クラスが別のターゲット・クラスと比較して、特定されるのが稀な場合または特定することがより重要な場合に、特に重要となります。 |
|
予測結果が含まれる表。 |
|
テスト・データの既知のターゲット値が含まれる表。 |
|
適用結果表のケースID列。ターゲット表のケースIDと一致する必要があります。 |
|
ターゲット表のターゲット列。テスト・データの既知のターゲット値が格納されます。 |
|
ROC出力が含まれる表。この表は、このプロシージャによってユーザーのスキーマ内に作成されます。 ROC表の列については、「使用上のノート」を参照してください。 |
|
ポジティブ・クラス。ROCの計算対象となるクラスです。 ターゲット列が |
|
適用結果表の予測結果が格納される列。 デフォルトの列名は' |
|
適用結果表のスコアリング基準値が格納される列。予測を決定する確率が格納されます。 デフォルトの列名は' |
|
適用結果表のスキーマ。 NULLの場合、ユーザーのスキーマと想定されます。 |
|
既知のターゲットが含まれている表のスキーマ。 NULLの場合、ユーザーのスキーマと想定されます。 |
使用上のノート
-
COMPUTE_ROC
に渡す予測情報は、SQLファンクションPREDICTION
、DBMS_DATA_MINING.APPLY
プロシージャまたはその他のメカニズムを使用して生成できます。プロシージャは、渡すデータが適切な場合にかぎり、受信者操作特性を計算できます。 -
COMPUTE_ROC
に渡す予測情報は、apply_results_table_name
で指定した表またはビューに格納されます。CREATE TABLE
apply_result_table_name
AS (case_id_column_name
VARCHAR2, score_column_name VARCHAR2,score_criterion_column_name
VARCHAR2); -
COMPUTE_ROC
で作成される表には、表42-67に示す列があります。表42-67 COMPUTE_ROCの出力
列 データ・タイプ probability
BINARY_DOUBLE
true_positives
NUMBER
false_negatives
NUMBER
false_positives
NUMBER
true_negatives
NUMBER
true_positive_fraction
NUMBER
false_positive_fraction
NUMBER
参照:
COMPUTE_ROC
の出力の詳細は、『Oracle Machine Learning for SQL概要』を参照してください -
ROCは、通常、最適な確率しきい値を決定するために使用されます。最適な確立しきい値を決定するには、真陽性率と偽陽性率を調べます。真陽性率とは、陽性であるものが、テスト・データで正しく陽性と予測される割合のことです。偽陽性率とは、陰性であるものが、テスト・データで誤って陽性と予測される割合のことです。
確率しきい値を指定すると、次の文では、適用結果表内の陽性の予測が確率順に戻されます。
SELECT case_id_column_name FROM apply_result_table_name WHERE
probability
>probability_threshold
ORDER BYprobability
DESC; -
最適な確率しきい値を特定するには、2つの方法があります。どちらの方法を採用するかは、ポジティブ・クラスとネガティブ・クラスを誤って予測した場合の相対コストがわかっているかどうかで決まります。
コストがわかっている場合は、相対コストをROC表に適用して、コストが最小になる確率しきい値を計算します。相対コスト比率が20 (ポジティブ・クラスの誤りコスト÷ネガティブ・クラスの誤りコスト= 20)であるとします。次のような問合せを実行します。
WITH
cost
AS ( SELECTprobability_threshold
, 20 *false_negatives
+false_positives
cost
FROMROC_table
GROUP BYprobability_threshold
),minCost
AS ( SELECT min(cost
)minCost
FROMcost
) SELECT max(probability_threshold
)probability_threshold FROMcost
,minCost
WHEREcost
=minCost
;相対コストが明確にわかっていない場合は、ROC表の値を確率しきい値の昇順に並べ替えて表示し、表示されたトレードオフ(誤って分類されたポジティブ・クラスとネガティブ・クラスの比率)のうち、どのトレードオフ値が最適であるのかを判断できます。
SELECT * FROM
ROC_table
ORDER BYprobability_threshold
;
例
この例は、Naive Bayesモデルnb_sh_clas_sample
を使用します。
次の文は、テスト・データにモデルを適用し、予測結果と確率を表に格納します。
CREATE TABLE nb_apply_results AS SELECT cust_id, t.prediction, t.probability FROM mining_data_test_v, TABLE(PREDICTION_SET(nb_sh_clas_sample USING *)) t;
テスト・データの予測値とターゲット値を使用して、次のようにROCを計算できます。
DECLARE
v_area_under_curve NUMBER;
BEGIN
DBMS_DATA_MINING.COMPUTE_ROC (
roc_area_under_curve => v_area_under_curve,
apply_result_table_name => 'nb_apply_results',
target_table_name => 'mining_data_test_v',
case_id_column_name => 'cust_id',
target_column_name => 'mining_data_test_v',
roc_table_name => 'nb_roc',
positive_target_value => '1',
score_column_name => 'PREDICTION',
score_criterion_column_name => 'PROBABILITY');
DBMS_OUTPUT.PUT_LINE('**** AREA UNDER ROC CURVE ****: ' ||
ROUND(v_area_under_curve,4));
END;
/
生成されるAUCおよび選択されたROC表の列は、次のように表示されます。
**** AREA UNDER ROC CURVE ****: .8212 SELECT PROBABILITY, TRUE_POSITIVE_FRACTION, FALSE_POSITIVE_FRACTION FROM NB_ROC; PROBABILITY TRUE_POSITIVE_FRACTION FALSE_POSITIVE_FRACTION ----------- ---------------------- ----------------------- .00000 1 1 .50018 .826589595 .227902946 .53851 .823699422 .221837088 .54991 .820809249 .217504333 .55628 .815028902 .215771231 .55628 .817919075 .215771231 .57563 .800578035 .214904679 .57563 .812138728 .214904679 . . . . . . . . .
42.1.8.10 COMPUTE_ROC_PARTプロシージャ
COMPUTE_ROC_PART
プロシージャは、受信者操作特性(ROC)を計算してユーザーのスキーマにある表に結果を格納し、モデルの精度を戻します。このプロシージャは、パーティション化されたモデルのパーティションごとの評価メトリックの計算をサポートします。
ROCは、バイナリ分類モデルに対するテスト指標値です。ROCを計算するには、ターゲット値のいずれかをポジティブ・クラスに指定する必要があります。COMPUTE_ROC_PART
では、一連のテスト・データにおいて、モデルによって生成された予測結果が実際のターゲット値と比較されます。
ROCは、確率しきい値における変化の影響を測定します。確率しきい値は、モデルが予測に使用する決定ポイントです。バイナリ分類では、デフォルトの確率しきい値は0.5
です。それぞれのケースに対して、確率が50%を超える値が予測されます。
ROCは、x-y軸上の曲線として描くことができます。x軸を偽陽性率にします。y軸を真陽性率にします。偽陽性とは、陰性であるものがテスト・データで陽性と予測されることです。真陽性とは、陽性であるものがテスト・データで陽性と予測されることです。
COMPUTE_ROC_PART
は、次の2つの入力ストリームを受け入れます。
-
テスト・データに対して生成された予測結果。この情報は、次の3つの列で渡されます。
-
ケースID列
-
予測列
-
確率が格納されているスコアリング基準列
-
-
テスト・データの既知のターゲット値。この情報は、次の2つの列で渡されます。
-
ケースID列
-
既知のターゲット値が格納されているターゲット列
-
参照:
分類に対応するROCおよびテスト・メトリックの詳細は、『Oracle Machine Learning for SQL概要』を参照してください
構文
DBMS_DATA_MINING.compute_roc_part( roc_area_under_curve OUT DM_NESTED_NUMERICALS, 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', score_partition_column_name IN VARCHAR2 DEFAULT 'PARTITION_NAME', apply_result_schema_name IN VARCHAR2 DEFAULT NULL, target_schema_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表42-68 COMPUTE_ROC_PARTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ROC曲線(AUC)の下部の面積が含まれる出力パラメータ。AUCによって、実際の陽性が陽性として予測される可能性が測定されます。 AUCが大きいほど、ポジティブ・クラスの予測とネガティブ・クラスの予測の間のトレードオフに対応するモデルの柔軟性が高くなります。AUCは、あるターゲット・クラスが別のターゲット・クラスと比較して、特定されるのが稀な場合または特定することがより重要な場合に、特に重要となります。 出力引数は、 |
|
予測結果が含まれる表。 |
|
テスト・データの既知のターゲット値が含まれる表。 |
|
適用結果表のケースID列。ターゲット表のケースIDと一致する必要があります。 |
|
ターゲット表のターゲット列。テスト・データの既知のターゲット値が格納されます。 |
|
ROC出力が含まれる表。この表は、このプロシージャによってユーザーのスキーマ内に作成されます。 ROC表の列については、「使用上のノート」を参照してください。 |
|
ポジティブ・クラス。ROCの計算対象となるクラスです。 ターゲット列が |
|
適用結果表の予測結果が格納される列。 デフォルトの列名は |
|
適用結果表のスコアリング基準値が格納される列。予測を決定する確率が格納されます。 デフォルトの列名は |
|
パーティションの名前を含む列を示すオプション・パラメータ。この列により、各パーティションで独立した評価マトリックスが計算されるように、入力テスト結果がスライスされます。 |
|
適用結果表のスキーマ。 NULLの場合、ユーザーのスキーマと想定されます。 |
|
既知のターゲットが含まれている表のスキーマ。 NULLの場合、ユーザーのスキーマと想定されます。 |
使用上のノート
-
COMPUTE_ROC_PART
に渡す予測情報は、SQLファンクションPREDICTION
、DBMS_DATA_MINING.APPLY
プロシージャまたはその他のメカニズムを使用して生成できます。プロシージャは、渡すデータが適切な場合にかぎり、受信者操作特性を計算できます。 -
COMPUTE_ROC_PART
に渡す予測情報は、apply_results_table_name
で指定した表またはビューに格納されます。CREATE TABLE
apply_result_table_name
AS (case_id_column_name
VARCHAR2, score_column_name VARCHAR2,score_criterion_column_name
VARCHAR2); -
COMPUTE_ROC_PART
表には次の列があります。表42-69 COMPUTE_ROC_PARTの出力
列 データ型 probability
BINARY_DOUBLE
true_positives
NUMBER
false_negatives
NUMBER
false_positives
NUMBER
true_negatives
NUMBER
true_positive_fraction
NUMBER
false_positive_fraction
NUMBER
参照:
COMPUTE_ROC_PART
の出力の詳細は、『Oracle Machine Learning for SQL概要』を参照してください -
ROCは、通常、最適な確率しきい値を決定するために使用されます。最適な確立しきい値を決定するには、真陽性率と偽陽性率を調べます。真陽性率とは、陽性であるものが、テスト・データで正しく陽性と予測される割合のことです。偽陽性率とは、陰性であるものが、テスト・データで誤って陽性と予測される割合のことです。
確率しきい値を指定すると、次の文では、適用結果表内の陽性の予測が確率順に戻されます。
SELECT case_id_column_name FROM apply_result_table_name WHERE
probability
>probability_threshold
ORDER BYprobability
DESC; -
最適な確率しきい値を特定するには、2つの方法があります。使用する方法は、ポジティブ・クラスとネガティブ・クラスを誤って予測した場合の相対コストがわかっているかどうかで決まります。
コストがわかっている場合は、相対コストをROC表に適用して、コストが最小になる確率しきい値を計算します。相対コスト比率が20 (ポジティブ・クラスの誤りコスト÷ネガティブ・クラスの誤りコスト= 20)であるとします。次のような問合せを実行します。
WITH
cost
AS ( SELECTprobability_threshold
, 20 *false_negatives
+false_positives
cost
FROMROC_table
GROUP BYprobability_threshold
),minCost
AS ( SELECT min(cost
)minCost
FROMcost
) SELECT max(probability_threshold
)probability_threshold FROMcost
,minCost
WHEREcost
=minCost
;相対コストが明確にわかっていない場合は、ROC表の値を確率しきい値の昇順に並べ替えて表示し、表示されたトレードオフ(誤って分類されたポジティブ・クラスとネガティブ・クラスの比率)のうち、どのトレードオフ値が最適であるのかを判断できます。
SELECT * FROM
ROC_table
ORDER BYprobability_threshold
;
例
この例は、Naive Bayesモデルnb_sh_clas_sample
を使用します。
次の文は、テスト・データにモデルを適用し、予測結果と確率を表に格納します。
CREATE TABLE nb_apply_results AS SELECT cust_id, t.prediction, t.probability FROM mining_data_test_v, TABLE(PREDICTION_SET(nb_sh_clas_sample USING *)) t;
テスト・データの予測値とターゲット値を使用して、次のようにROCを計算できます。
DECLARE
v_area_under_curve NUMBER;
BEGIN
DBMS_DATA_MINING.COMPUTE_ROC_PART (
roc_area_under_curve => v_area_under_curve,
apply_result_table_name => 'nb_apply_results',
target_table_name => 'mining_data_test_v',
case_id_column_name => 'cust_id',
target_column_name => 'affinity_card',
roc_table_name => 'nb_roc',
positive_target_value => '1',
score_column_name => 'PREDICTION',
score_criterion_column_name => 'PROBABILITY');
score_partition_column_name => 'PARTITION_NAME'
DBMS_OUTPUT.PUT_LINE('**** AREA UNDER ROC CURVE ****: ' ||
ROUND(v_area_under_curve,4));
END;
/
生成されるAUCおよび選択されたROC表の列は、次のように表示されます。
**** AREA UNDER ROC CURVE ****: .8212 SELECT PROBABILITY, TRUE_POSITIVE_FRACTION, FALSE_POSITIVE_FRACTION FROM NB_ROC; PROBABILITY TRUE_POSITIVE_FRACTION FALSE_POSITIVE_FRACTION ----------- ---------------------- ----------------------- .00000 1 1 .50018 .826589595 .227902946 .53851 .823699422 .221837088 .54991 .820809249 .217504333 .55628 .815028902 .215771231 .55628 .817919075 .215771231 .57563 .800578035 .214904679 .57563 .812138728 .214904679 . . . . . . . . .
42.1.8.11 CREATE_MODELプロシージャ
このプロシージャでは、特定の機械学習ファンクションによってOracle Machine Learning for SQLのモデルを作成します。
構文
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, xform_list IN TRANSFORM_LIST DEFAULT NULL);
パラメータ
表42-70 CREATE_MODELプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 モデルのネーミングにおける制限については、「使用上のノート」を参照してください。 |
|
機械学習ファンクション。値を表42-3に示します。 |
|
作成データが含まれる表またはビュー |
|
作成データのケースID列。 |
|
教師ありモデルの場合は、作成データのターゲット列。教師なしモデルの場合は、 |
|
モデルの作成設定が含まれる表。設定表がない(デフォルトの設定のみが使用されている)場合は、 |
|
作成データに適用されるスキーマ。 |
|
設定表に適用されるスキーマ。 |
|
自動変換に加えて、または自動変換のかわりに使用される変換のリストで、
TYPE TRANFORM_REC IS RECORD ( attribute_name VARCHAR2(4000), attribute_subname VARCHAR2(4000), expression EXPRESSION_REC, reverse_expression EXPRESSION_REC, attribute_spec VARCHAR2(4000));
|
使用上のノート
-
xform_list
引数のattribute_spec
フィールドを使用すると、属性を非構造化テキストとして識別したり、属性に対する自動データ準備を無効にすることができます。attribute_spec
には、次の値を設定できます。-
TEXT
: 属性に非構造化テキストが含まれていることを示します。オプションで、TEXT
値の後に、POLICY_NAME
、TOKEN_TYPE
、MAX_FEATURES
およびMIN_DOCUMENTS
のパラメータを追加できます。TOKEN_TYPE
の有効な値は、NORMAL
、STEM
、THEME
、SYNONYM
、BIGRAM
およびSTEM_BIGRAM
です。オプションで、SYNONYM
の後に、大カッコで囲まれたシソーラス名を追加できます。MAX_FEATURES
では、テキストから抽出されるトークンの最大数を指定します。MIN_DOCUMENTS
では、すべての選択したトークンが出現するドキュメントの最小数を指定します。(テキスト・ポリシーの作成の詳細は、『Oracle Textリファレンス』のCTX_DDL.CREATE_POLICYに関する項
を参照)。Oracle Machine Learning for SQLは、
VARCHAR2
/CHAR
、CLOB
、BLOB
およびBFILE
の列をテキストとして処理できます。列がVARCHAR2
またはCHAR
のときにTEXT
を指定していないと、OML4SQLは、その列を質的データとして処理します。列がCLOB
の場合、OML4SQLは、その列をデフォルトでテキストとして処理します(その列をTEXT
として指定する必要はありません。ただし、設定にOracle Textポリシーを指定する必要があります)。列がBLOB
またはBFILE
の場合は、その列をTEXT
として指定する必要があります。それ以外の場合、CREATE_MODEL
はエラーを返します。ネストした列またはネストした列の属性に
TEXT
を指定すると、CREATE_MODEL
はエラーを返します。 -
NOPREP
: 属性のADPを無効にします。ADPがOFF
の場合、値NOPREP
は無視されます。NOPREP
はネストした列に対して指定できますが、ネストした列の属性に対しては指定できません。ADPが有効なときに、ネストした列の属性にNOPREP
を指定すると、CREATE_MODEL
はエラーを返します。
-
-
データ・ディクショナリ・ビューを問い合せると、モデルに関する情報を取得できます。
ALL/USER/DBA_MINING_MODELS ALL/USER/DBA_MINING_MODEL_ATTRIBUTES ALL/USER/DBA_MINING_MODEL_SETTINGS ALL/USER/DBA_MINING_MODEL_VIEWS ALL/USER/DBA_MINING_MODEL_PARTITIONS ALL/USER/DBA_MINING_MODEL_XFORMS
モデル・ビューを介してモデルのディテールを問い合せると、モデルの属性に関する情報を取得できます。『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください。
-
モデルのネーミング規則には、大部分のデータベース・スキーマ・オブジェクトのネーミング規則よりも多くの制限があります。モデル名は、次の要件も満たす必要があります。
-
名前の長さは、123文字までにする必要があります。
-
名前は、引用符で囲まれていない識別子である必要があります。引用符で囲まれていない識別子は、英数字、アンダースコア(_)、ドル記号($)、およびポンド記号(#)のみで構成され、最初の文字はアルファベットである必要があります。引用符で囲まれていないリテラルに、ドル記号およびポンド記号は使用しないことを強くお薦めします。
スキーマ・オブジェクトのネーミング要件の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
-
-
パーティション化されたモデルを作成するには、追加設定を指定する必要があります。
パーティション列の設定は、次のとおりです。
INSERT INTO settings_table VALUES (‘ODMS_PARTITION_COLUMNS’, ‘GENDER, AGE’);
モデルにユーザー定義のパーティション数を設定する場合、設定は次のようになります。
INSERT INTO settings_table VALUES ('ODMS_MAX_PARTITIONS’, '10’);
パーティションの最大数のデフォルト値は
1000
です。 xform_list
をCREATE_MODEL
に渡すと、入力データで実行される変換のリストを指定できます。PREP_AUTO
設定をON
にすると、自動変換に加えてその変換が使用されます。PREP_AUTO
設定をOFF
にすると、指定した変換のみがモデルで実装されます。いずれの場合も、変換定義はモデルに埋め込まれ、モデルが適用されるたびに自動的に実行されます。「自動データ準備」を参照してください。xform_list
で指定できる他の変換には、FORCE_IN
などがあります。『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください。
例
最初の例では、サポート・ベクター・マシン・アルゴリズムを使用する分類モデルを作成します。
-- Create the settings table CREATE TABLE svm_model_settings ( setting_name VARCHAR2(30), setting_value VARCHAR2(30)); -- Populate the settings table -- Specify SVM. By default, Naive Bayes is used for classification. -- Specify ADP. By default, ADP is not used. BEGIN INSERT INTO svm_model_settings (setting_name, setting_value) VALUES (dbms_data_mining.algo_name, dbms_data_mining.algo_support_vector_machines); INSERT INTO svm_model_settings (setting_name, setting_value) VALUES (dbms_data_mining.prep_auto,dbms_data_mining.prep_auto_on); 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 => 'svm_model_settings'); END; /
モデル設定は、次の問合せで表示できます。
SELECT * FROM user_mining_model_settings WHERE model_name IN 'SVM_MODEL'; MODEL_NAME SETTING_NAME SETTING_VALUE SETTING ------------- ---------------------- ----------------------------- ------- SVM_MODEL ALGO_NAME ALGO_SUPPORT_VECTOR_MACHINES INPUT SVM_MODEL SVMS_STD_DEV 3.004524 DEFAULT SVM_MODEL PREP_AUTO ON INPUT SVM_MODEL SVMS_COMPLEXITY_FACTOR 1.887389 DEFAULT SVM_MODEL SVMS_KERNEL_FUNCTION SVMS_LINEAR DEFAULT SVM_MODEL SVMS_CONV_TOLERANCE .001 DEFAULT
次に、古いGEL_MODEL_DETAILS_SVM
ルーチンのかわりに、モデル・ビューを問い合せる例を示します。
SELECT target_value, attribute_name, attribute_value, coefficient FROM DM$VLSVM_MODEL;
その次の例では、異常検出モデルを作成します。異常検出には、ターゲットなしのSVM分類が使用されます。この例では、最初の例でSVM分類モデル用に作成したものと同じ設定表を使用します。
BEGIN DBMS_DATA_MINING.CREATE_MODEL( model_name => 'anomaly_detect_model', mining_function => dbms_data_mining.classification, data_table_name => 'mining_data_build_v', case_id_column_name => 'cust_id', target_column_name => null, settings_table_name => 'svm_model_settings'); END; /
この問合せは、これらの例で作成されたモデルが、スキーマで唯一のモデルであることを示しています。
SELECT model_name, mining_function, algorithm FROM user_mining_models; MODEL_NAME MINING_FUNCTION ALGORITHM ---------------------- -------------------- ------------------------------ SVM_MODEL CLASSIFICATION SUPPORT_VECTOR_MACHINES ANOMALY_DETECT_MODEL CLASSIFICATION SUPPORT_VECTOR_MACHINES
この問合せは、このSVM分類モデルにのみターゲットがあることを示しています。
SELECT model_name, attribute_name, attribute_type, target FROM user_mining_model_attributes WHERE target = 'YES'; MODEL_NAME ATTRIBUTE_NAME ATTRIBUTE_TYPE TARGET ------------------ --------------- ----------------- ------ SVM_MODEL AFFINITY_CARD CATEGORICAL YES
42.1.8.12 CREATE_MODEL2プロシージャ
CREATE_MODEL2
プロシージャはCREATE_MODEL
プロシージャの代替プロシージャであり、これによって永続性ステージを追加することなくモデルを作成できます。CREATE_MODEL
プロシージャでは、入力は表またはビューであり、そのようなオブジェクトがまだ存在しない場合はユーザーが作成する必要があります。CREATE_MODEL2
プロシージャを使用することにより、ユーザーはそのような一時データベース・オブジェクトを作成する必要がありません。
構文
DBMS_DATA_MINING.CREATE_MODEL2 ( model_name IN VARCHAR2, mining_function IN VARCHAR2, data_query IN CLOB, set_list IN SETTING_LIST, case_id_column_name IN VARCHAR2 DEFAULT NULL, target_column_name IN VARCHAR2 DEFAULT NULL, xform_list IN TRANSFORM_LIST DEFAULT NULL);
パラメータ
表42-71 CREATE_MODEL2プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
[ モデルのネーミングにおける制限の詳細は、「CREATE_MODELプロシージャ」の「使用上のノート」を参照してください。 |
|
機械学習ファンクション。値の一覧は「DBMS_DATA_MINING — 機械学習ファンクションの設定」を参照。 |
|
モデルを作成するためのトレーニング・データを提供する問合せ。 |
|
SETTING_LIST はVARCHAR2(30) によるCLOB索引の表で、ここで索引は設定名でCLOBはその名前の設定値です。
|
|
作成データのケースID列。 |
|
教師ありモデルの場合は、作成データのターゲット列。教師なしモデルの場合は、 |
|
「CREATE_MODELプロシージャ」を参照してください。 |
使用上のノート
使用上のノートは、「CREATE_MODELプロシージャ」を参照してください。
例
次の例では、サポート・ベクター・マシン・アルゴリズムを使用しています。
declare
v_setlst DBMS_DATA_MINING.SETTING_LIST;
BEGIN
v_setlst(dbms_data_mining.algo_name) := dbms_data_mining.algo_support_vector_machines;
v_setlst(dbms_data_mining.prep_auto) := dbms_data_mining.prep_auto_on;
DBMS_DATA_MINING.CREATE_MODEL2(
model_name => 'svm_model',
mining_function => dbms_data_mining.classification,
data_query => 'select * from mining_data_build_v',
data_table_name => 'mining_data_build_v',
case_id_column_name=> 'cust_id',
target_column_name => 'affinity_card',
set_list => v_setlst,
case_id_column_name=> 'cust_id',
target_column_name => 'affinity_card');
END;
/
42.1.8.13 登録情報を使用したモデルの作成
モデルの作成機能は、JSONオブジェクトから設定情報をフェッチします。
使用上のノート
アルゴリズムが登録されていると、ユーザーは登録されたアルゴリズム名を使用してモデルを作成できます。すべてのRスクリプトとデフォルト設定値はすでに登録されているため、設定表で値を指定する必要はありません。これにより、このアルゴリズムの使用が簡単になります。
例
最初の例では、GLMアルゴリズムを使用して分類モデルを作成します。
CREATE TABLE GLM_RDEMO_SETTINGS_CL ( setting_name VARCHAR2(30), setting_value VARCHAR2(4000)); BEGIN INSERT INTO GLM_RDEMO_SETTINGS_CL VALUES ('ALGO_EXTENSIBLE_LANG', 'R'); INSERT INTO GLM_RDEMO_SETTINGS_CL VALUES (dbms_data_mining.ralg_registration_algo_name, 't1'); INSERT INTO GLM_RDEMO_SETTINGS_CL VALUES (dbms_data_mining.odms_formula, 'AGE + EDUCATION + HOUSEHOLD_SIZE + OCCUPATION'); INSERT INTO GLM_RDEMO_SETTINGS_CL VALUES ('RALG_PARAMETER_FAMILY', 'binomial(logit)' ); END; / BEGIN DBMS_DATA_MINING.CREATE_MODEL( model_name => 'GLM_RDEMO_CLASSIFICATION', 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 => 'GLM_RDEMO_SETTINGS_CL'); END; /
42.1.8.14 DROP_ALGORITHMプロシージャ
この機能は、登録されているアルゴリズム情報の削除に使用します。
構文
DBMS_DATA_MINING.DROP_ALGORITHM (algorithm_name IN VARCHAR2(30), cascade IN BOOLEAN default FALSE)
パラメータ
表42-72 DROP_ALGORITHMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
アルゴリズムの名前。 |
|
カスケード・オプションが |
使用上のノート
-
機械学習モデルを削除するには、そのモデルの所有者であるか、
RQADMIN
権限が必要です。機械学習の権限の詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください。 -
システム表からアルゴリズムを削除する前に、モデルがそのアルゴリズムに基づいて構築されていないことを確認してください。
-
モデル構築の基になっているアルゴリズムを削除しようとすると、エラーが表示されます。
42.1.8.15 DROP_PARTITIONプロシージャ
構文
DBMS_DATA_MINING.DROP_PARTITION (
model_name IN VARCHAR2,
partition_name IN VARCHAR2);
パラメータ
表42-73 DROP_PARTITIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
機械学習モデルの名前(名前の形式は、[schema_name.]model_nameです)。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
削除する必要があるパーティションの名前。 |
42.1.8.16 DROP_MODELプロシージャ
このプロシージャは、指定した機械学習モデルを削除します。
構文
DBMS_DATA_MINING.DROP_MODEL (model_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE);
パラメータ
表42-74 DROP_MODELプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
機械学習モデルの名前(名前の形式は、[schema_name.]model_nameです)。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
機械学習モデルが無効な場合でも、強制的に削除されます。機械学習モデルは、重大なシステム・エラーでモデルの作成プロセスが中断された場合は無効になることがあります。 |
使用上のノート
機械学習モデルを削除するには、そのモデルの所有者であるか、DROP ANY MINING MODEL
権限が必要です。Oracle Machine Learning for SQLの権限の詳細は、『Oracle Data Miningユーザーズ・ガイド』を参照してください。
例
次のコマンドを使用すると、自分のスキーマ内のnb_sh_clas_sample
という有効な機械学習モデルを削除できます。
BEGIN DBMS_DATA_MINING.DROP_MODEL(model_name => 'nb_sh_clas_sample'); END; /
42.1.8.17 EXPORT_MODELプロシージャ
このプロシージャは、指定した機械学習のモデルをダンプ・ファイル・セットにエクスポートします。
ダンプ・ファイル・セットからモデルをインポートするには、IMPORT_MODELプロシージャを使用します。EXPORT_MODEL
およびIMPORT_MODEL
では、Oracle Data Pumpテクノロジが使用されています。
Oracle Data Pumpを使用してスキーマ全体またはデータベース全体をエクスポートまたはインポートすると、そのスキーマまたはデータベースの機械学習のモデルが含められます。ただし、EXPORT_MODEL
およびIMPORT_MODEL
は、個々のモデルのエクスポートとインポートをサポートする唯一のユーティリティです。
参照:
Oracle Data Pumpの詳細は、『Oracle Databaseユーティリティ』を参照してください。
機械学習のモデルのインポートおよびエクスポートの詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください
構文
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);
パラメータ
表42-75 EXPORT_MODELプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
モデルのエクスポート先のダンプ・ファイル・セットの名前。この名前は、スキーマ内で一意である必要があります。 ダンプ・ファイル・セットには1つ以上のファイルを保存できます。ダンプ・ファイル・セットのファイルの個数は、エクスポートするモデルのサイズ(メタデータとデータの両方)および指定または推定された最大ファイル・サイズによって決まります。ファイル・サイズは、 エクスポート操作が正常に終了すると、ダンプ・ファイル・セット内にファイルが1つしか存在しない場合でも、ダンプ・ファイル・セットの名前が自動的に |
|
ダンプ・ファイル・セットの作成場所を指定する、事前定義済のディレクトリ・オブジェクトの名前。 エクスポートするユーザーには、このディレクトリ・オブジェクト、およびこのディレクトリ・オブジェクトによって指定されるファイル・システム・ディレクトリに対する読取り/書込み権限が必要です。 ディレクトリ・オブジェクトの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
|
エクスポートするモデルを指定するパラメータ(オプション)。 機械学習のファンクションまたはアルゴリズムに基づいて、モデルの名前およびグループごとに個々のモデルをエクスポートできます。たとえば、すべての回帰モデルまたはすべてのNaive Bayesモデルをエクスポートできます。例は、表42-76を参照してください。 |
|
ダンプ・ファイル・セット内のファイルの最大サイズを指定するパラメータ(オプション)。サイズは、バイト単位、キロバイト単位(KB)、メガバイト単位(MB)、ギガバイト単位(GB)で指定可能です。デフォルトのサイズは50MBです。 エクスポートするモデルのサイズが |
|
ダンプ・ファイル・セット内のファイルのサイズを推定するかどうかを指定するパラメータ(オプション)。デフォルトでは、ファイルのサイズは推定されず、
|
|
リモート・システムへのデータベース・リンクの名前を指定するオプション・パラメータ。デフォルト値は |
|
エクスポート・ジョブの名前を指定するパラメータ(オプション)。デフォルトでは、 ジョブ名を指定する場合は、スキーマ内で一意の名前を指定する必要があります。ジョブ名の最大長は30文字です。 エクスポート・ジョブのログ・ファイルが、 |
使用上のノート
model_filter
パラメータは、エクスポートするモデルを指定します。名前ごとにモデルをリストすることも、同じ機械学習のファンクションまたはアルゴリズムを持つモデルをすべて指定することもできます。USER_MINING_MODELS
ビューを問い合せると、スキーマ内のモデルを表示できます。
SQL> describe user_mining_models Name Null? Type ----------------------------------------- -------- ---------------------------- MODEL_NAME NOT NULL VARCHAR2(30) MINING_FUNCTION VARCHAR2(30) ALGORITHM VARCHAR2(30) CREATION_DATE NOT NULL DATE BUILD_DURATION NUMBER MODEL_SIZE NUMBER COMMENTS VARCHAR2(4000)
表42-76に、モデル・フィルタの例を示します。
表42-76 モデル・フィルタ・パラメータのサンプル値
サンプル値 | 意味 |
---|---|
|
|
|
|
|
|
|
すべてのNaive Bayesモデルをエクスポートします。アルゴリズム名のリストについては、表42-5を参照してください。 |
|
すべての分類モデルをエクスポートします。機械学習のファンクションのリストについては、表42-3を参照してください。 |
例
-
次の文では、
oml_user3
スキーマ内のすべてのモデルが、$ORACLE_HOME/rdbms/log
ディレクトリのmodels_out
というダンプ・ファイル・セットにエクスポートされます。このディレクトリは、DATA_PUMP_DIR
というディレクトリ・オブジェクトにマップされています。oml_user3
ユーザーには、このディレクトリとディレクトリ・オブジェクトへの読取り/書込みアクセス権があります。SQL>execute dbms_data_mining.export_model ('models_out', 'DATA_PUMP_DIR');
SQL*Plusを終了し、作成されたダンプ・ファイルおよびログ・ファイルを表示できます。
SQL>EXIT >cd $ORACLE_HOME/rdbms/log >ls >oml_user3_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 >oml_user3_exp_1027.log models_out01.dmp oml_user3_exp_924.log models2_out01.dmp
-
次の例は、特定のアルゴリズムと機械学習ファンクションの名前を指定してモデルをエクスポートする方法を示しています。
SQL>EXECUTE DBMS_DATA_MINING.EXPORT_MODEL('algo.dmp','DM_DUMP', 'ALGORITHM_NAME IN (''O_CLUSTER'',''GENERALIZED_LINEAR_MODEL'', ''SUPPORT_VECTOR_MACHINES'',''NAIVE_BAYES'')'); SQL>EXECUTE DBMS_DATA_MINING.EXPORT_MODEL('func.dmp', 'DM_DUMP', 'FUNCTION_NAME IN (CLASSIFICATION,CLUSTERING,FEATURE_EXTRACTION)');
42.1.8.18 EXPORT_SERMODELプロシージャ
このプロシージャは、スコアリングのために別のプラットフォームに移動できるように、シリアライズされた形式でモデルをエクスポートします。
シリアライズされた形式でモデルをエクスポートするときには、ユーザーは空のBLOB
ロケータを渡して、エクスポートするモデル名を指定する必要があります。モデルがパーティション化されている場合、ユーザーは必要に応じてエクスポートする個別のパーティションを選択できます。それ以外の場合は、すべてのパーティションがエクスポートされます。返されたBLOB
には、デプロイ可能なコンテンツが含まれています。
構文
DBMS_DATA_MINING.EXPORT_SERMODEL ( model_data IN OUT NOCOPY BLOB, model_name IN VARCHAR2, partition_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表42-77 EXPORT_SERMODELプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
シリアル化されたモデル・データを指定します。 |
|
機械学習モデルの名前(名前の形式は、[schema_name.]model_nameです)。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
エクスポートする必要があるパーティションの名前。 |
例
次の文では、シリアライズされた形式ですべてのモデルをエクスポートします。
DECLARE
v_blob blob;
BEGIN
dbms_lob.createtemporary(v_blob, FALSE);
dbms_data_mining.export_sermodel(v_blob, 'MY_MODEL');
-- save v_blob somewhere (e.g., bfile, etc.)
dbms_lob.freetemporary(v_blob);
END;
/
参照:
機械学習のモデルのインポートおよびエクスポートの詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください
42.1.8.19 FETCH_JSON_SCHEMAプロシージャ
ユーザーは、ALL_MINING_ALGORITHMS
ビューからJSONスキーマをフェッチして読取りできます。この関数は、R拡張アルゴリズムの事前登録済JSONスキーマを返します。
構文
DBMS_DATA_MINING.FETCH_JSON_SCHEMA RETURN CLOB;
パラメータ
表42-78 FETCH_JSON_SCHEMAプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
このファンクションは、R拡張性に関する事前登録済のJSONスキーマを返します。 デフォルト値は |
使用上のノート
アルゴリズムの登録関数を使用して新しいアルゴリズムを登録する場合、ユーザーは必要とされるJSONオブジェクト・メタデータを作成するときに、この関数を使用して事前登録済のJSONスキーマをフェッチしてそのスキーマに従い、それを登録関数に渡します。
42.1.8.20 GET_ASSOCIATION_RULESファンクション
GET_ASSOCIATION_RULES
ファンクションは、相関モデルによって作成されたルールを返します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。かわりに、モデル・ディテール・ビューを使用してください。
『Oracle Machine Learning for SQLユーザーズ・ガイド』のモデル・ディテール・ビューに関する項を参照してください。
フィルタ条件を指定して、ルールのサブセットを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 ORA_MINING_VARCHAR2_NT DEFAULT NULL, antecedent_items IN DM_ITEMS DEFAULT NULL, consequent_items IN DM_ITEMS DEFAULT NULL, min_lift IN NUMBER DEFAULT NULL, partition_name IN VARCHAR2 DEFAULT NULL) RETURN DM_Rules PIPELINED;
パラメータ
表42-79 GET_ASSOCIATION_RULESファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 これは、 |
|
まず信頼度、次に支持度に基づいて降順でルールを並べ、上位n個のルールを戻します。ソート順序を指定すると、そのソートの実行後に上位n個のルールが導出されます。
|
|
戻すルールの識別子。 |
|
この数値以上の信頼度を持つルールを戻します。 |
|
この数値以上の支持値を持つルールを戻します。 |
|
この数値以下の長さを持つルールを戻します。 ルールの長さとは、ルール内の項目数のことです(
|
|
この数値以上の長さを持つルールを戻します。ルールの長さについては、「
|
|
戻される1つ以上の列の値に基づいてルールをソートします。列名の後に たとえば、結果セットを、まず
デフォルトでは、結果は、まず信頼度に基づいて降順でソートされ、次に支持度に基づいて降順でソートされます。 |
|
これらの項目が前件にあるルールを戻します。 |
|
この項目が後件にあるルールを戻します。 |
|
この数値以上のリフトを持つルールを戻します。 |
|
パーティション化されたモデルのパーティションを指定します。 |
戻り値
GET_ASSOCIATION_RULES
によって戻されるオブジェクト・タイプが、表42-80で説明されています。各フィールドの説明については、「使用上のノート」を参照してください。
表42-80 GET_ASSOCIATION RULESファンクションの戻り値
戻り値 | 説明 |
---|---|
|
(rule_id INTEGER, antecedent DM_PREDICATES, consequent DM_PREDICATES, rule_support NUMBER, rule_confidence NUMBER, rule_lift NUMBER, antecedent_support NUMBER, consequent_support NUMBER, number_of_items INTEGER ) |
|
(attribute_name VARCHAR2(4000), attribute_subname VARCHAR2(4000), conditional_operator CHAR(2)/*=,<>,<,>,<=,>=*/, attribute_num_value NUMBER, attribute_str_value VARCHAR2(4000), attribute_support NUMBER, attribute_confidence NUMBER) |
使用上のノート
-
このテーブル・ファンクションは、
DM_RULES
タイプの行をパイプライン出力します。機械学習のデータ型とテーブル・ファンクションからのパイプ出力については、「データ型」を参照してください。 -
GET_ASSOCIATION_RULES
によって戻される列は、次のとおりです。DM_RULESの列 説明 rule_id
ルールの一意の識別子
antecedent
ルール内の独立の条件。この条件が存在する場合は、後件に依存条件も存在します。
条件は、述語(
DM_PREDICATE
)と呼ばれる属性値の組み合わせです。述語は、属性ごとの条件を指定します。条件としては、指定の値に等しい(=)、等しくない(<>)、より大(>)、より小(<)、以上(>=)、または以下(<=)を指定できます。前件の属性条件ごとに、
Support
とConfidence
が述語に戻されます。支持度は、前件を満たすトランザクションの数です。信頼度は、トランザクションが前件を満たす確度です。ノート:
DM_PREDICATE
属性があることは、トランザクションに項目が存在することを示しています。attribute_num_value
またはattribute_str_value
の実際の値に意味はありません。たとえば、次の述語は、属性値がNULL
でもトランザクションにMouse Padが存在していることを示しています。DM_PREDICATE('PROD_NAME', 'Mouse Pad', '= ', NULL, NULL, NULL, NULL))
consequent
ルール内の依存条件。後件が存在する場合に、この条件が存在します。
後件は、前件と同様に述語(
DM_PREDICATE
)です。後件の属性条件ごとに、支持度と信頼度が述語に戻されます。支持度は、後件を満たすトランザクションの数です。信頼度は、トランザクションが後件を満たす確度です。
rule_support
ルールを満たすトランザクションの数。
rule_confidence
トランザクションがルールを満たす確度。
rule_lift
ルールが満たされた場合に、ランダムな可能性を上回る予測の改善の程度。
antecedent_support
トランザクションの合計数に対する、前件を満たすトランザクションの数の割合。
consequent_support
トランザクションの合計数に対する、後件を満たすトランザクションの数の割合。
number_of_items
ルールの前件と後件で参照される属性の合計数。
例
次の例では、相関モデルの作成後に、テーブル・ファンクション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 market_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 => 'market_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));
次の問合せでは、相関モデルAR_SH_SAMPLE
を使用しています。
SELECT * FROM TABLE ( DBMS_DATA_MINING.GET_ASSOCIATION_RULES ( 'AR_SH_SAMPLE', 10, NULL, 0.5, 0.01, 2, 1, ORA_MINING_VARCHAR2_NT ( 'NUMBER_OF_ITEMS DESC', 'RULE_CONFIDENCE DESC', 'RULE_SUPPORT DESC'), DM_ITEMS(DM_ITEM('CUSTPRODS', 'Mouse Pad', 1, NULL), DM_ITEM('CUSTPRODS', 'Standard Mouse', 1, NULL)), DM_ITEMS(DM_ITEM('CUSTPRODS', 'Extension Cable', 1, NULL))));
この問合せは、次のように3つのルールを戻します。
13 DM_PREDICATES( DM_PREDICATE('CUSTPRODS', 'Mouse Pad', '= ', 1, NULL, NULL, NULL), DM_PREDICATE('CUSTPRODS', 'Standard Mouse', '= ', 1, NULL, NULL, NULL)) DM_PREDICATES( DM_PREDICATE('CUSTPRODS', 'Extension Cable', '= ', 1, NULL, NULL, NULL)) .15532 .84393 2.7075 .18404 .3117 2 11 DM_PREDICATES( DM_PREDICATE('CUSTPRODS', 'Standard Mouse', '= ', 1, NULL, NULL, NULL)) DM_PREDICATES( DM_PREDICATE('CUSTPRODS', 'Extension Cable', '= ', 1, NULL, NULL, NULL)) .18085 .56291 1.8059 .32128 .3117 1 9 DM_PREDICATES( DM_PREDICATE('CUSTPRODS', 'Mouse Pad', '= ', 1, NULL, NULL, NULL)) DM_PREDICATES( DM_PREDICATE('CUSTPRODS', 'Extension Cable', '= ', 1, NULL, NULL, NULL)) .17766 .55116 1.7682 .32234 .3117 1
参照:
DM_RULE
列のデータ・タイプについては、表42-80を参照してください。
42.1.8.21 GET_FREQUENT_ITEMSETSファンクション
GET_FREQUENT_ITEMSETS
ファンクションは、相関モデルから高頻度項目セットを示す行のセットを返します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。かわりに、モデル・ディテール・ビューを使用してください。
『Oracle Machine Learning for SQLユーザーズ・ガイド』のモデル・ディテール・ビューに関する項を参照してください。
高頻度項目セットの詳細は、『Oracle Machine Learning for SQL概要』を参照してください。
構文
DBMS_DATA_MINING.get_frequent_itemsets( model_name IN VARCHAR2, topn IN NUMBER DEFAULT NULL, max_itemset_length IN NUMBER DEFAULT NULL, partition_name IN VARCHAR2 DEFAULT NULL) RETURN DM_ItemSets PIPELINED;
パラメータ
表42-81 GET_FREQUENT_ITEMSETSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
|
|
項目セットの最大長。 |
|
パーティション化されたモデルのパーティションを指定します。 ノート: partition_name 列は、モデルがパーティション化されている場合にのみ適用されます。
|
戻り値
表42-82 GET_FREQUENT_ITEMSETSファンクションの戻り値
戻り値 | 説明 |
---|---|
|
(partition_name VARCHAR2(128) itemsets_id NUMBER, items DM_ITEMS, support NUMBER, number_of_items NUMBER) ノート: partition_name 列は、モデルがパーティション化されている場合にのみ適用されます。
(attribute_name VARCHAR2(4000), attribute_subname VARCHAR2(4000), attribute_num_value NUMBER, attribute_str_value VARCHAR2(4000)) |
使用上のノート
このテーブル・ファンクションは、DM_ITEMSETS
タイプの行をパイプライン出力します。機械学習のデータ型とテーブル・ファンクションからのパイプ出力については、「データ型」を参照してください。
例
この例では、相関モデルの作成後に、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 => 'market_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));
42.1.8.22 GET_MODEL_COST_MATRIXファンクション
GET_*
インタフェースはモデル・ビューに置き換えられるため、かわりにこのビューを利用することをお薦めします。
GET_MODEL_COST_MATRIXファンクションは、スコアリング・コスト・マトリックスであるDM$VC
の接頭辞付きビューに置き換えられます。デシジョン・ツリーの作成時に使用したコスト・マトリックスは、デシジョン・ツリーの作成コスト・マトリックスであるDM$VM
の接頭辞付きビューで使用できるようになります。
分類アルゴリズムのモデル・ディテール・ビューに関する項を参照してください。
GET_MODEL_COST_MATRIX
ファンクションは、指定したモデルに関連付けられたコスト・マトリックスの行を戻します。
デフォルトでは、このファンクションは、ADD_COST_MATRIX
プロシージャを使用してモデルに追加されたスコアリング・コスト・マトリックスを戻します。モデルの作成に使用されるコスト・マトリックスを取得する場合は、matrix_type
にcost_matrix_type_create
を指定します。表42-83を参照してください。
「ADD_COST_MATRIXプロシージャ」も参照してください。
構文
DBMS_DATA_MINING.GET_MODEL_COST_MATRIX ( model_name IN VARCHAR2, matrix_type IN VARCHAR2 DEFAULT cost_matrix_type_score) partition_name IN VARCHAR2 DEFAULT NULL); RETURN DM_COST_MATRIX PIPELINED;
パラメータ
表42-83 GET_MODEL_COST_MATRIXファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
コスト・マトリックスのタイプ。
|
|
パーティション化されたモデルのパーティション名 |
戻り値
表42-84 GET_MODEL_COST_MATRIXファンクションの戻り値
戻り値 | 説明 |
---|---|
|
actual VARCHAR2(4000), NUMBER, predicted VARCHAR2(4000), cost NUMBER) |
使用上のノート
コスト・マトリックスを使用して作成できるのは、デシジョン・ツリー・モデルのみです。コスト・マトリックスを使用してデシジョン・ツリー・モデルを作成する場合、モデルの設定表のCLAS_COST_TABLE_NAME
設定にコスト・マトリックス表の名前を指定します。表42-7を参照してください。
デシジョン・ツリー・モデルを作成する場合に使用するコスト・マトリックスは、そのモデルに対するデフォルトのスコアリング・マトリックスになります。スコアリング用に異なるコストを指定する場合は、REMOVE_COST_MATRIX
プロシージャを使用してコスト・マトリックスを削除し、ADD_COST_MATRIX
プロシージャを使用して新規コスト・マトリックスを追加できます。
GET_MODEL_COST_MATRIX
では、モデルまたはモデルのパーティションに定義された作成コスト・マトリックスまたはスコアリング・コスト・マトリックスが戻されます。
パーティション化されたモデルの名前を指定しない場合は、エラーが表示されます。
例
この例では、Naive BayesモデルNB_SH_CLAS_SAMPLE
に関連付けられたスコアリング・コスト・マトリックスを戻します。
column actual format a10 column predicted format a10 SELECT * FROM TABLE(dbms_data_mining.get_model_cost_matrix('nb_sh_clas_sample')) ORDER BY predicted, actual; ACTUAL PREDICTED COST ---------- ---------- ----- 0 0 .00 1 0 .75 0 1 .25 1 1 .00
42.1.8.23 GET_MODEL_DETAILS_AIファンクション
GET_MODEL_DETAILS_AI
ファンクションは、属性重要度モデルの詳細を示す行のセットを返します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。かわりに、モデル・ディテール・ビューを使用してください。
『Oracle Machine Learning for SQLユーザーズ・ガイド』のモデル・ディテール・ビューに関する項を参照してください。
構文
DBMS_DATA_MINING.get_model_details_ai( model_name IN VARCHAR2, partition_name IN VARCHAR2 DEFAULT NULL) RETURN dm_ranked_attributes pipelined;
パラメータ
表42-85 GET_MODEL_DETAILS_AIファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
パーティション化されたモデルのパーティションを指定します。 |
戻り値
表42-86 GET_MODEL_DETAILS_AIファンクションの戻り値
戻り値 | 説明 |
---|---|
|
(attribute_name VARCHAR2(4000, attribute_subname VARCHAR2(4000), importance_value NUMBER, rank NUMBER(38)) |
例
次の例では、サンプル・プログラムdmaidemo.sql
で作成された属性評価モデルAI_SH_sample
に関するモデルのディテールが戻されます。
SELECT attribute_name, importance_value, rank FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_AI('AI_SH_sample')) ORDER BY RANK; ATTRIBUTE_NAME IMPORTANCE_VALUE RANK ---------------------------------------- ---------------- ---------- HOUSEHOLD_SIZE .151685183 1 CUST_MARITAL_STATUS .145294546 2 YRS_RESIDENCE .07838928 3 AGE .075027496 4 Y_BOX_GAMES .063039952 5 EDUCATION .059605314 6 HOME_THEATER_PACKAGE .056458722 7 OCCUPATION .054652937 8 CUST_GENDER .035264741 9 BOOKKEEPING_APPLICATION .019204751 10 PRINTER_SUPPLIES 0 11 OS_DOC_SET_KANJI -.00050013 12 FLAT_PANEL_MONITOR -.00509564 13 BULK_PACK_DISKETTES -.00540822 14 COUNTRY_NAME -.01201116 15 CUST_INCOME_LEVEL -.03951311 16
42.1.8.24 GET_MODEL_DETAILS_EMファンクション
GET_MODEL_DETAILS_EM
ファンクションは、期待値最大化モデルによって生成されたクラスタに関する統計を示す行のセットを返します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。かわりに、モデル・ディテール・ビューを使用してください。
『Oracle Machine Learning for SQLユーザーズ・ガイド』のモデル・ディテール・ビューに関する項を参照してください。
デフォルトでは、EMアルゴリズムによってコンポーネントが上位レベルのクラスタへとグループ化されるため、GET_MODEL_DETAILS_EM
は上位レベルのクラスタのみを、その階層とともに戻します。または、EMモデルを構成して、コンポーネントの上位レベルのクラスタへのグループ化を無効にできます。この場合、GET_MODEL_DETAILS_EM
は、これらのコンポーネント自体をクラスタとして、階層とともに戻します。表42-12を参照してください。
構文
DBMS_DATA_MINING.get_model_details_em( model_name VARCHAR2, cluster_id NUMBER DEFAULT NULL, attribute VARCHAR2 DEFAULT NULL, centroid NUMBER DEFAULT 1, histogram NUMBER DEFAULT 1, rules NUMBER DEFAULT 2, attribute_subname VARCHAR2 DEFAULT NULL, topn_attributes NUMBER DEFAULT NULL, partition_name IN VARCHAR2 DEFAULT NULL) RETURN dm_clusters PIPELINED;
パラメータ
表42-87 GET_MODEL_DETAILS_EMファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
モデル内のクラスタのID。指定したクラスタIDが有効な場合、そのクラスタのディテールのみが戻されます。そうでない場合は、すべてのクラスタのディテールが戻されます。 |
|
属性の名前。指定した属性名が有効な場合、その属性のディテールのみが戻されます。そうでない場合は、すべての属性のディテールが戻されます。 |
|
このパラメータには次の値を使用できます。
|
|
このパラメータには次の値を使用できます。
|
|
このパラメータには次の値を使用できます。
|
|
ネストした属性の名前。ネストした属性のフルネームの形式は、次のとおりです。
ここで、 |
|
セントロイド、ヒストグラムおよびルール・オブジェクトで戻される属性数を制限します。ルール内で最も高い信頼度の値を持つ ルールに含まれる属性の数が
|
|
パーティション化されたモデルのパーティションを指定します。 |
使用上のノート
-
Oracle Machine Learning for SQLのデータ型とテーブル・ファンクションからのクラスタリング・アルゴリズムの戻り値のパイプ出力については、「データ型」を参照してください。
-
GET_MODEL_DETAILS
ファンクションは、作成プロセス中に適用された変換を自動的に元に戻すことによって、モデル透過性を保持します。このため、モデルのディテールに戻される属性は、モデル作成に使用された元の属性(または元の属性の近似値)となります。 -
クラスタ統計を無効にすると(
EMCS_CLUSTER_STATISTICS
をEMCS_CLUS_STATS_DISABLE
に設定)、GET_MODEL_DETAILS_EM
はセントロイド、ヒストグラムまたはルールを戻しません。分類(階層)とクラスタ数のみが戻されます。 -
パーティション化されたモデルで
partition_name
がNULL
の場合、例外がスローされます。値がNULLでない場合、目的のパーティション名が含まれる必要があります。
42.1.8.25 GET_MODEL_DETAILS_EM_COMPファンクション
GET_MODEL_DETAILS_EM_COMP
テーブル・ファンクションは、期待値最大化モデルのパラメータに関する詳細を示す行のセットを返します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。かわりに、モデル・ディテール・ビューを使用してください。
『Oracle Machine Learning for SQLユーザーズ・ガイド』のモデル・ディテール・ビューに関する項を参照してください。
構文
DBMS_DATA_MINING.get_model_details_em_comp( model_name IN VARCHAR2, partition_name IN VARCHAR2 DEFAULT NULL) RETURN DM_EM_COMPONENT_SET PIPELINED;
パラメータ
表42-88 GET_MODEL_DETAILS_EM_COMPファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
ディテールを取得するパーティション化されたモデルのパーティションを指定します。 |
戻り値
表42-89 GET_MODEL_DETAILS_EM_COMPファンクションの戻り値
戻り値 | 説明 |
---|---|
|
(info_type VARCHAR2(30), component_id NUMBER, cluster_id NUMBER, attribute_name VARCHAR2(4000), covariate_name VARCHAR2(4000), attribute_value VARCHAR2(4000), value NUMBER ) |
使用上のノート
-
このテーブル・ファンクションは、
DM_EM_COMPONENT
タイプの行をパイプライン出力します。Oracle Machine Learning for SQLのデータ型とテーブル・ファンクションからのパイプ出力については、「データ型」を参照してください。GET_MODEL_DETAILS_EM_COMP
によって戻された各行の列は次のとおりです。DM_EM_COMPONENTの列 説明 info_type
行の情報タイプ。次の情報タイプがサポートされています。
-
cluster
-
prior
-
mean
-
covariance
-
frequency
component_id
コンポーネントの一意の識別子
cluster_id
各コンポーネントの上位レベルのリーフ・クラスタの一意の識別子
attribute_name
元の属性の名前または導出された機能識別子。導出された機能識別子は、ネストした列を持つデータで作成されたモデルで使用されます。導出された機能の定義は、GET_MODEL_DETAILS_EM_PROJファンクションで取得できます。
covariate_name
分散定義または共分散定義で使用される、元の属性の名前または導出された機能識別子。
attribute_value
ビニングされた量的属性の質的値またはビン間隔。
value
次のように、
info_type
の値に従って異なる情報がエンコーディングされます。-
cluster
— 値フィールドはNULL
です -
prior
— 値フィールドは直前のコンポーネントを戻します -
mean
— 値フィールドは、attribute_name
で指定されている属性の平均を戻します -
covariance
— 値フィールドは、attribute_name
およびcovariate_name
で指定されている属性の共分散を戻します。attribute_name
およびcovariate_name
の同じ属性を使用して、分散を戻せます。 -
frequency
— 値フィールドは、attribute_name
およびattribute_value
で指定されている属性と値の組合せに対応する複数値のベルヌーイ頻度パラメータを戻します。
詳細は、「使用上のノート」の2を参照してください。
-
-
次の表に、それぞれの
info_type
でどのフィールドを使用するかを示します。空白のセルはNULL
を表します。info_type component_id cluster_id attribute_name covariate_name attribute_value value cluster
X
X
prior
X
X
X
mean
X
X
X
X
covariance
X
X
X
X
X
frequency
X
X
X
X
X
-
GET_MODEL_DETAILS
ファンクションは、作成プロセス中に適用された変換を自動的に元に戻すことによって、モデル透過性を保持します。このため、モデルのディテールに戻される属性は、モデル作成に使用された元の属性(または元の属性の近似値)となります。 -
パーティション化されたモデルで値が
NULL
の場合、例外がスローされます。値がNULLでない場合、目的のパーティション名が含まれる必要があります。
42.1.8.26 GET_MODEL_DETAILS_EM_PROJファンクション
GET_MODEL_DETAILS_EM_PROJ
ファンクションは、期待値最大化モデルによって生成された予測に関する統計を示す行のセットを返します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。かわりに、モデル・ディテール・ビューを使用してください。
『Oracle Machine Learning for SQLユーザーズ・ガイド』のモデル・ディテール・ビューに関する項を参照してください。
構文
DBMS_DATA_MINING.get_model_details_em_proj( model_name IN VARCHAR2, partition_name IN VARCHAR2 DEFAULT NULL) RETURN DM_EM_PROJECTION_SET PIPELINED;
パラメータ
表42-90 GET_MODEL_DETAILS_EM_PROJファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
パーティション化されたモデルのパーティションを指定します。 |
戻り値
表42-91 GET_MODEL_DETAILS_EM_PROJファンクションの戻り値
戻り値 | 説明 |
---|---|
|
(feature_name VARCHAR2(4000), attribute_name VARCHAR2(4000), attribute_subname VARCHAR2(4000), attribute_value VARCHAR2(4000), coefficient NUMBER ) 詳細は、「使用上のノート」を参照してください。 |
使用上のノート
-
このテーブル・ファンクションは、
DM_EM_PROJECTION
タイプの行をパイプライン出力します。機械学習のデータ型とテーブル・ファンクションからのパイプ出力については、「データ型」を参照してください。GET_MODEL_DETAILS_EM_PROJ
によって戻された各行の列は次のとおりです。DM_EM_PROJECTIONの列 説明 feature_name
導出された機能の名前。この機能は、GET_MODEL_DETAILS_EMファンクションによって戻されたattribute_nameにマッピングされます。
attribute_name
作成データ内の列の名前
attribute_subname
ネストした列のサブ名
attribute_value
質的値
coefficient
予測係数。データ表現はまばらなため、ゼロ以外の係数のみが戻されます。
-
GET_MODEL_DETAILS
ファンクションは、作成プロセス中に適用された変換を自動的に元に戻すことによって、モデル透過性を保持します。このため、モデルのディテールに戻される属性は、モデル作成に使用された元の属性(または元の属性の近似値)となります。係数は元の属性ではなく、変換された属性に関連します。係数は、モデルのディテールに直接戻された場合、意味のある情報を表しません。
-
パーティション化されたモデルで値が
NULL
の場合、例外がスローされます。値がNULLでない場合、目的のパーティション名が含まれる必要があります。
42.1.8.27 GET_MODEL_DETAILS_GLMファンクション
GET_MODEL_DETAILS_GLM
ファンクションは、一般化線形モデルの係数統計情報を返します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。かわりに、モデル・ディテール・ビューを使用してください。
『Oracle Machine Learning for SQLユーザーズ・ガイド』のモデル・ディテール・ビューに関する項を参照してください。
線形とロジスティックの両方の回帰に対して同じ統計情報のセットが返されますが、機械学習ファンクションに適用されない統計情報はNULL
として返されます。詳細は、「使用上のノート」を参照してください。
構文
DBMS_DATA_MINING.get_model_details_glm( model_name IN VARCHAR2, partition_name IN VARCHAR2 DEFAULT NULL) RETURN DM_GLM_Coeff_Set PIPELINED;
パラメータ
表42-92 GET_MODEL_DETAILS_GLMファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
パーティション化されたモデルのパーティションを指定します。 |
戻り値
表42-93 GET_MODEL_DETAILS_GLMの戻り値
戻り値 | 説明 |
---|---|
|
(class VARCHAR2(4000), attribute_name VARCHAR2(4000), attribute_subname VARCHAR2(4000), attribute_value VARCHAR2(4000), feature_expression VARCHAR2(4000), coefficient NUMBER, std_error NUMBER, test_statistic NUMBER, p_value NUMBER, VIF NUMBER, std_coefficient NUMBER, lower_coeff_limit NUMBER, upper_coeff_limit NUMBER, exp_coefficient BINARY_DOUBLE, exp_lower_coeff_limit BINARY_DOUBLE, exp_upper_coeff_limit BINARY_DOUBLE) |
GET_MODEL_DETAILS_GLM
は、属性ごとの統計の行および切片用の追加の1行(属性名のNULL値で識別されます)を戻します。各行のデータ・タイプは、DM_GLM_COEFF
です。統計については、表42-94で説明します。
表42-94 DM_GLM_COEFFデータ・タイプの説明
列 | 説明 |
---|---|
|
ロジスティック回帰の非参照ターゲット・クラス。このモデルは、このクラスの確率を予測するために作成されます。 その他のクラス(参照クラス)は、モデル設定 線形回帰の場合、 |
|
サブ名がない場合は属性名、サブ名がある場合は属性名の最初の部分。 切片の場合、 |
|
ネストした表の属性の名前。ネストした属性のフルネームの形式は、次のとおりです。
ここで、 属性がネストしていない場合、 |
|
属性の値(質的属性のみ)。 量的属性の場合、 |
|
特徴生成が有効で上位の特徴が検出された場合に、アルゴリズムによって作成される特徴名。特徴選択が有効でない場合、この特徴名は、単に完全修飾された属性名になります(属性がネストした列内にあるときは 質的属性では、次のような形式の特徴名が作成されます。
量的属性では、結果の値の積を計算することで、上位の特徴の名前がアルゴリズムによって作成されます。 ( ここで、 |
|
線形係数推定値。 |
|
係数推定値の標準誤差。 |
|
線形回帰の場合は、係数推定値のt値。 ロジスティック回帰の場合は、係数推定値のWaldカイ二乗値。 |
|
|
|
分散拡大要因。切片の場合、この値はゼロです。ロジスティック回帰の場合、 |
|
係数の標準化推定値。 |
|
係数の信頼限界値の下限。 |
|
係数の信頼限界値の上限。 |
|
ロジスティック回帰の指数係数。線形回帰の場合、 |
|
ロジスティック回帰の場合は、係数の信頼限界値の下限の指数係数。線形回帰の場合、 |
|
ロジスティック回帰の場合は、係数の信頼限界値の上限の指数係数。線形回帰の場合、 |
使用上のノート
各係数に対して、必ずしもすべての統計が戻されるわけではありません。次の場合、統計はNULLになります。
-
機械学習ファンクションには適用されません。たとえば、
exp_coefficient
は線形回帰に適用されません。 -
理論上、計算できない場合。リッジ回帰の詳細は、表42-19を参照してください。
-
システム・リソースの制限が原因で計算できない場合。
-
値が無限大になる可能性がある場合。
-
パーティション化されたモデルで値がNULLの場合、例外がスローされます。値がNULLでない場合、目的のパーティション名が含まれる必要があります。
例
次の例では、GLM回帰モデルGLMR_SH_Regr_sample
のモデル詳細の一部が返されます。
SET line 120 SET pages 99 column attribute_name format a30 column attribute_subname format a20 column attribute_value format a20 col coefficient format 990.9999 col std_error format 990.9999 SQL> SELECT * FROM (SELECT attribute_name, attribute_value, coefficient, std_error FROM DM$VDGLMR_SH_REGR_SAMPLE order by 1,2) WHERE rownum < 11; ATTRIBUTE_NAME ATTRIBUTE_VALUE COEFFICIENT STD_ERROR ------------------------------ -------------------- ----------- --------- AFFINITY_CARD -0.5797 0.5283 BOOKKEEPING_APPLICATION -0.4689 3.8872 BULK_PACK_DISKETTES -0.9819 2.5430 COUNTRY_NAME Argentina -1.2020 1.1876 COUNTRY_NAME Australia -0.0071 5.1146 COUNTRY_NAME Brazil 5.2931 1.9233 COUNTRY_NAME Canada 4.0191 2.4108 COUNTRY_NAME China 0.8706 3.5889 COUNTRY_NAME Denmark -2.9822 3.1803 COUNTRY_NAME France -1.1044 7.1811
42.1.8.28 GET_MODEL_DETAILS_GLOBALファンクション
GET_MODEL_DETAILS_GLOBAL
ファンクションは、モデル全体に関する統計を戻します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。かわりに、モデル・ディテール・ビューを使用してください。
『Oracle Machine Learning for SQLユーザーズ・ガイド』のモデル・ディテール・ビューに関する項を参照してください。
グローバルな詳細は、一般化線形モデル、相関ルール、特異値分解および期待値の最大化で使用できます。すべてのアルゴリズムのグローバル情報を表示する新しいグローバル・モデル・ビューがあります。かわりにビューを利用することをお薦めします。グローバル・モデル・ディテール・ビューに関する項を参照してください。
構文
DBMS_DATA_MINING.get_model_details_global( model_name IN VARCHAR2, partition_name IN VARCHAR2 DEFAULT NULL) RETURN DM_model_global_details PIPELINED;
パラメータ
表42-95 GET_MODEL_DETAILS_GLOBALファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
パーティション化されたモデルのパーティションを指定します。 |
戻り値
表42-96 GET_MODEL_DETAILS_GLOBALファンクションの戻り値
戻り値 | 説明 |
---|---|
|
(global_detail_name VARCHAR2(30), global_detail_value NUMBER) |
例
次の例では、GLM回帰モデルGLMR_SH_Regr_sample
のグローバルなモデル詳細が返されます。
SELECT * FROM TABLE(dbms_data_mining.get_model_details_global( 'GLMR_SH_Regr_sample')) ORDER BY global_detail_name; GLOBAL_DETAIL_NAME GLOBAL_DETAIL_VALUE ------------------------------ ------------------- ADJUSTED_R_SQUARE .731412557 AIC 5931.814 COEFF_VAR 18.1711243 CORRECTED_TOTAL_DF 1499 CORRECTED_TOT_SS 278740.504 DEPENDENT_MEAN 38.892 ERROR_DF 1433 ERROR_MEAN_SQUARE 49.9440956 ERROR_SUM_SQUARES 71569.8891 F_VALUE 62.8492452 GMSEP 52.280819 HOCKING_SP .034877162 J_P 52.1749319 MODEL_CONVERGED 1 MODEL_DF 66 MODEL_F_P_VALUE 0 MODEL_MEAN_SQUARE 3138.94871 MODEL_SUM_SQUARES 207170.615 NUM_PARAMS 67 NUM_ROWS 1500 ROOT_MEAN_SQ 7.06711367 R_SQ .743238288 SBIC 6287.79977 VALID_COVARIANCE_MATRIX 1
42.1.8.29 GET_MODEL_DETAILS_KMファンクション
GET_MODEL_DETAILS_KM
ファンクションは、k-meansクラスタリング・モデルの詳細を示す行のセットを返します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。かわりに、モデル・ディテール・ビューを使用してください。
『Oracle Machine Learning for SQLユーザーズ・ガイド』のモデル・ディテール・ビューに関する項を参照してください。
モデルに関する特定の情報を要求するように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, attribute_subname VARCHAR2 DEFAULT NULL, topn_attributes NUMBER DEFAULT NULL, partition_name VARCHAR2 DEFAULT NULL) RETURN dm_clusters PIPELINED;
パラメータ
表42-97 GET_MODEL_DETAILS_KMファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
モデル内のクラスタのID。指定したクラスタIDが有効な場合、そのクラスタのディテールのみが戻されます。そうでない場合は、すべてのクラスタのディテールが戻されます。 |
|
属性の名前。指定した属性名が有効な場合、その属性のディテールのみが戻されます。そうでない場合は、すべての属性のディテールが戻されます。 |
|
このパラメータには次の値を使用できます。
|
|
このパラメータには次の値を使用できます。
|
|
このパラメータには次の値を使用できます。
|
|
ネストした属性の名前。ネストした属性のフルネームの形式は、次のとおりです。
ここで、 属性がネストしていない場合、 |
|
セントロイド、ヒストグラムおよびルール・オブジェクトで戻される属性数を制限します。ルール内で最も高い信頼度の値を持つ ルールに含まれる属性の数が
|
|
パーティション化されたモデルのパーティションを指定します。 |
使用上のノート
-
このテーブル・ファンクションは、
DM_CLUSTERS
タイプの行をパイプライン出力します。機械学習のデータ型とテーブル・ファンクションからのクラスタリング・アルゴリズムの戻り値のパイプ出力については、「データ型」を参照してください。 -
パーティション化されたモデルで値がNULLの場合、例外がスローされます。値がNULLでない場合、目的のパーティション名が含まれる必要があります。
例
次の例では、k-meansクラスタリグ・モデルKM_SH_Clus_sample
のモデル詳細が返されます。
SELECT T.id clu_id, T.record_count rec_cnt, T.parent parent, T.tree_level tree_level, T.dispersion dispersion FROM (SELECT * FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_KM( 'KM_SH_Clus_sample')) ORDER BY id) T WHERE ROWNUM < 6; CLU_ID REC_CNT PARENT TREE_LEVEL DISPERSION ---------- ---------- ---------- ---------- ---------- 1 1500 1 5.9152211 2 638 1 2 3.98458982 3 862 1 2 5.83732097 4 376 3 3 5.05192137 5 486 3 3 5.42901522
42.1.8.30 GET_MODEL_DETAILS_NBファンクション
GET_MODEL_DETAILS_NB
ファンクションは、Naive Bayesモデルの詳細を示す行のセットを返します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。かわりに、モデル・ディテール・ビューを使用してください。
『Oracle Machine Learning for SQLユーザーズ・ガイド』のモデル・ディテール・ビューに関する項を参照してください。
構文
DBMS_DATA_MINING.get_model_details_nb( model_name IN VARCHAR2, partition_name IN VARCHAR2 DEFAULT NULL) RETURN DM_NB_Details PIPELINED;
パラメータ
表42-98 GET_MODEL_DETAILS_NBファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
パーティション化されたモデルのパーティションを指定します。 |
戻り値
表42-99 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(4000), attribute_subname VARCHAR2(4000), attribute_str_value VARCHAR2(4000), attribute_num_value NUMBER, conditional_probability NUMBER) |
使用上のノート
-
このテーブル・ファンクションは、
DM_NB_DETAILS
タイプの行をパイプライン出力します。機械学習のデータ型とテーブル・ファンクションからのパイプ出力については、「データ型」を参照してください。 -
パーティション化されたモデルで値が
NULL
の場合、例外がスローされます。値がNULLでない場合、目的のパーティション名が含まれる必要があります。
例
次の問合せは、サンプル・プログラムdmnbdemo.sql
からのものです。モデルNB_SH_Clas_sample
に関するモデルのディテールを戻します。サンプル・プログラムの詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください。
この問合せは、トレーニング・データをビンに区分するために使用されたビン境界表からラベルを作成します。属性値をラベルに置き換えます。量的ビンの場合、ラベルは(
lower_boundary
,upper_boundary
]
で、質的ビンの場合、ラベルはそのラベルが表す値に一致します。(この質的ラベル表現の方法は、1つの値が1つのビンに対応する場合にのみ有効です。)ターゲットはビンに区分されませんでした。
WITH bin_label_view AS ( SELECT col, bin, (DECODE(bin,'1','[','(') || lv || ',' || val || ']') label FROM (SELECT col, bin, LAST_VALUE(val) OVER ( PARTITION BY col ORDER BY val ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) lv, val FROM nb_sh_sample_num) UNION ALL SELECT col, bin, val label FROM nb_sh_sample_cat ), model_details AS ( SELECT T.target_attribute_name tname, NVL(TO_CHAR(T.target_attribute_num_value,T.target_attribute_str_value)) tval, C.attribute_name pname, NVL(L.label, NVL(C.attribute_str_value, C.attribute_num_value)) pval, T.prior_probability priorp, C.conditional_probability condp FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_NB('NB_SH_Clas_sample')) T, TABLE(T.conditionals) C, bin_label_view L WHERE C.attribute_name = L.col (+) AND (NVL(C.attribute_str_value,C.attribute_num_value) = L.bin(+)) ORDER BY 1,2,3,4,5,6 ) SELECT tname, tval, pname, pval, priorp, condp FROM model_details WHERE ROWNUM < 11; TNAME TVAL PNAME PVAL PRIORP CONDP -------------- ---- ------------------------- ------------- ------- ------- AFFINITY_CARD 0 AGE (24,30] .6500 .1714 AFFINITY_CARD 0 AGE (30,35] .6500 .1509 AFFINITY_CARD 0 AGE (35,40] .6500 .1125 AFFINITY_CARD 0 AGE (40,46] .6500 .1134 AFFINITY_CARD 0 AGE (46,53] .6500 .1071 AFFINITY_CARD 0 AGE (53,90] .6500 .1312 AFFINITY_CARD 0 AGE [17,24] .6500 .2134 AFFINITY_CARD 0 BOOKKEEPING_APPLICATION 0 .6500 .1500 AFFINITY_CARD 0 BOOKKEEPING_APPLICATION 1 .6500 .8500 AFFINITY_CARD 0 BULK_PACK_DISKETTES 0 .6500 .3670
42.1.8.31 GET_MODEL_DETAILS_NMFファンクション
GET_MODEL_DETAILS_NMF
ファンクションは、Non-Negative Matrix Factorizationモデルの詳細を示す行のセットを返します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。かわりに、モデル・ディテール・ビューを使用してください。
『Oracle Machine Learning for SQLユーザーズ・ガイド』のモデル・ディテール・ビューに関する項を参照してください。
構文
DBMS_DATA_MINING.get_model_details_nmf( model_name IN VARCHAR2, partition_name VARCHAR2 DEFAULT NULL) RETURN DM_NMF_Feature_Set PIPELINED;
パラメータ
表42-100 GET_MODEL_DETAILS_NMFファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
パーティション化されたモデルのパーティションを指定します。 |
戻り値
表42-101 GET_MODEL_DETAILS_NMFファンクションの戻り値
戻り値 | 説明 |
---|---|
|
(feature_id NUMBER, mapped_feature_id VARCHAR2(4000), attribute_set DM_NMF_ATTRIBUTE_SET)
(attribute_name VARCHAR2(4000), attribute_subname VARCHAR2(4000), attribute_value VARCHAR2(4000), coefficient NUMBER) |
使用上のノート
-
このテーブル・ファンクションは、
DM_NMF_FEATURE_SET
タイプの行をパイプライン出力します。機械学習のデータ型とテーブル・ファンクションからのパイプ出力については、「データ型」を参照してください。 -
パーティション化されたモデルで値がNULLの場合、例外がスローされます。値がNULLでない場合、目的のパーティション名が含まれる必要があります。
例
次の例では、特徴抽出モデルNMF_SH_Sample
のモデル詳細が返されます。
SELECT * FROM ( SELECT F.feature_id, A.attribute_name, A.attribute_value, A.coefficient FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_NMF('NMF_SH_Sample')) F, TABLE(F.attribute_set) A ORDER BY feature_id,attribute_name,attribute_value ) WHERE ROWNUM < 11; FEATURE_ID ATTRIBUTE_NAME ATTRIBUTE_VALUE COEFFICIENT --------- ----------------------- ---------------- ------------------- 1 AFFINITY_CARD .051208078859308 1 AGE .0390513260041573 1 BOOKKEEPING_APPLICATION .0512734004239326 1 BULK_PACK_DISKETTES .232471260895683 1 COUNTRY_NAME Argentina .00766817464479959 1 COUNTRY_NAME Australia .000157637881096675 1 COUNTRY_NAME Brazil .0031409632415604 1 COUNTRY_NAME Canada .00144213099311427 1 COUNTRY_NAME China .000102279310968754 1 COUNTRY_NAME Denmark .000242424084307513
42.1.8.32 GET_MODEL_DETAILS_OCファンクション
GET_MODEL_DETAILS_OC
ファンクションは、O-clusterクラスタリング・モデルの詳細を示す行のセットを返します。これらの行は、モデルの作成時に生成されたクラスタリングのパターンを列挙したものです。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。かわりに、モデル・ディテール・ビューを使用してください。
『Oracle Machine Learning for SQLユーザーズ・ガイド』のモデル・ディテール・ビューに関する項を参照してください。
モデルに関する特定の情報を要求するように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, topn_attributes NUMBER DEFAULT NULL, partition_name VARCHAR2 DEFAULT NULL) RETURN dm_clusters PIPELINED;
パラメータ
表42-102 GET_MODEL_DETAILS_OCファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
モデル内のクラスタのID。指定したクラスタIDが有効な場合、そのクラスタのディテールのみが戻されます。そうでない場合は、すべてのクラスタのディテールが戻されます。 |
|
属性の名前。指定した属性名が有効な場合、その属性のディテールのみが戻されます。そうでない場合は、すべての属性のディテールが戻されます。 |
|
このパラメータには次の値を使用できます。
|
|
このパラメータには次の値を使用できます。
|
|
このパラメータには次の値を使用できます。
|
|
セントロイド、ヒストグラムおよびルール・オブジェクトで戻される属性数を制限します。ルール内で最も高い信頼度の値を持つ ルールに含まれる属性の数が
|
|
パーティション化されたモデルのパーティションを指定します。 |
使用上のノート
-
機械学習のデータ型とテーブル・ファンクションからのクラスタリング・アルゴリズムのパイプ出力については、「データ型」を参照してください。
-
パーティション化されたモデルで値がNULLの場合、例外がスローされます。値がNULLでない場合、目的のパーティション名が含まれる必要があります。
例
次の例では、クラスタリグ・モデルOC_SH_Clus_sample
のモデル詳細が返されます。
この例の各クラスタの分割述語は、モデル作成時にクラスタの子にレコードを割り当てるために使用される属性および条件を示します。クラスタ内に移入されたデータをより小さい2つのクラスタに分割する方法に関する重要な情報を提供します。
SELECT clu_id, attribute_name, op, s_value FROM (SELECT a.id clu_id, sp.attribute_name, sp.conditional_operator op, sp.attribute_str_value s_value FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_OC( 'OC_SH_Clus_sample')) a, TABLE(a.split_predicate) sp ORDER BY a.id, op, s_value) WHERE ROWNUM < 11; CLU_ID ATTRIBUTE_NAME OP S_VALUE ----------- -------------------- --------------------------------- 1 OCCUPATION IN ? 1 OCCUPATION IN Armed-F 1 OCCUPATION IN Cleric. 1 OCCUPATION IN Crafts 2 OCCUPATION IN ? 2 OCCUPATION IN Armed-F 2 OCCUPATION IN Cleric. 3 OCCUPATION IN Exec. 3 OCCUPATION IN Farming 3 OCCUPATION IN Handler
42.1.8.33 GET_MODEL_SETTINGSファンクション
GET_MODEL_SETTINGS
ファンクションは、指定のモデルの作成に使用された設定を戻します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。『Oracle Databaseリファレンス』の静的データ・ディクショナリ・ビュー: ALL_ALL_TABLES
からALL_OUTLINES
に関する項を参照してください。
構文
FUNCTION get_model_settings(model_name IN VARCHAR2) RETURN DM_Model_Settings PIPELINED;
パラメータ
表42-103 GET_MODEL_SETTINGSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
戻り値
表42-104 GET_MODEL_SETTINGSファンクションの戻り値
戻り値 | 説明 |
---|---|
|
DM_MODEL_SETTINGS TABLE OF SYS.DM_MODEL_SETTING Name Type ---------------------- -------------------- SETTING_NAME VARCHAR2(30) SETTING_VALUE VARCHAR2(4000) |
使用上のノート
-
このテーブル・ファンクションは、
DM_MODEL_SETTINGS
タイプの行をパイプライン出力します。機械学習のデータ型とテーブル・ファンクションからのパイプ出力については、「DBMS_DATA_MININGデータ型」を参照してください。 -
設定名と設定値には、ユーザーが指定したものと作成プロセスで割り当てられたデフォルトの両方が含まれます。
例
次の例では、Naive Bayesモデルの例のモデル設定が返されます。
SETTING_NAME SETTING_VALUE ------------------------------ ------------------------------ ALGO_NAME ALGO_NAIVE_BAYES PREP_AUTO ON ODMS_MAX_PARTITIONS 1000 NABS_SINGLETON_THRESHOLD 0 CLAS_WEIGHTS_BALANCED OFF NABS_PAIRWISE_THRESHOLD 0 ODMS_PARTITION_COLUMNS GENDER,Y_BOX_GAMES ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO ODMS_SAMPLING ODMS_SAMPLING_DISABLE 9 rows selected.
42.1.8.34 GET_MODEL_SIGNATUREファンクション
GET_MODEL_SIGNATURE
ファンクションは、モデルのトレーニングのために作成プロセスで使用された作成用の入力表の列のリストを戻します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。『Oracle Databaseリファレンス』の静的データ・ディクショナリ・ビュー: ALL_ALL_TABLES
からALL_OUTLINES
に関する項を参照してください。
構文
FUNCTION get_model_signature (model_name IN VARCHAR2) RETURN DM_Model_Signature PIPELINED;
パラメータ
表42-105 GET_MODEL_SIGNATUREファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
戻り値
表42-106 GET_MODEL_SIGNATUREファンクションの戻り値
戻り値 | 説明 |
---|---|
|
DM_MODEL_SIGNATURE TABLE OF SYS.DM_MODEL_SIGNATURE_ATTRIBUTE Name Type ------------------ ------------------- ATTRIBUTE_NAME VARCHAR2(130) ATTRIBUTE_TYPE VARCHAR2(106) |
使用上のノート
-
このテーブル・ファンクションは、
DM_MODEL_SIGNATURE
タイプの行をパイプライン出力します。機械学習のデータ型とテーブル・ファンクションからのパイプ出力については、「DBMS_DATA_MININGデータ型」を参照してください。 -
署名の名前またはタイプには、作成プロセスで使用されたその属性のみが含まれます。
例
次の例では、Naive Bayesモデルの例のモデル設定が返されます。
ATTRIBUTE_NAME ATTRIBUTE_TYPE ------------------------------ ------------------ AGE NUMBER ANNUAL_INCOME NUMBER AVERAGE___ITEMS_PURCHASED NUMBER BOOKKEEPING_APPLICATION NUMBER BULK_PACK_DISKETTES NUMBER BULK_PURCH_AVE_AMT NUMBER DISABLE_COOKIES NUMBER EDUCATION VARCHAR2 FLAT_PANEL_MONITOR NUMBER GENDER VARCHAR2 HOME_THEATER_PACKAGE NUMBER HOUSEHOLD_SIZE VARCHAR2 MAILING_LIST NUMBER MARITAL_STATUS VARCHAR2 NO_DIFFERENT_KIND_ITEMS NUMBER OCCUPATION VARCHAR2 OS_DOC_SET_KANJI NUMBER PETS NUMBER PRINTER_SUPPLIES NUMBER PROMO_RESPOND NUMBER SHIPPING_ADDRESS_COUNTRY VARCHAR2 SR_CITIZEN NUMBER TOP_REASON_FOR_SHOPPING VARCHAR2 WKS_SINCE_LAST_PURCH NUMBER WORKCLASS VARCHAR2 YRS_RESIDENCE NUMBER Y_BOX_GAMES NUMBER 27 rows selected.
関連トピック
42.1.8.35 GET_MODEL_DETAILS_SVDファンクション
GET_MODEL_DETAILS_SVD
ファンクションは、特異値分解モデルの詳細を示す行のセットを返します。モデル・ディテール・ビュー設定を使用することをお薦めします。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。かわりに、モデル・ディテール・ビューを使用してください。
特異値分解のモデル・ディテール・ビューに関する項を参照してください。
構文
DBMS_DATA_MINING.get_model_details_svd( model_name IN VARCHAR2, matrix_type IN VARCHAR2 DEFAULT NULL, partition_name VARCHAR2 DEFAULT NULL) RETURN DM_SVD_MATRIX_Set PIPELINED;
パラメータ
表42-107 GET_MODEL_DETAILS_SVDファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
3つのSVDマトリックス・タイプのどれを戻すかを指定します。値は、 Uマトリックスは、 |
|
パーティション化されたモデルのパーティション。 |
戻り値
表42-108 GET_MODEL_DETAILS_SVDファンクションの戻り値
戻り値 | 説明 |
---|---|
|
(matrix_type CHAR(1), feature_id NUMBER, mapped_feature_id VARCHAR2(4000), attribute_name VARCHAR2(4000), attribute_subname VARCHAR2(4000), case_id VARCHAR2(4000), value NUMBER, variance NUMBER, pct_cum_variance NUMBER) 詳細は、「使用上のノート」を参照してください。 |
使用上のノート
-
このテーブル・ファンクションは、
DM_SVD_MATRIX
タイプの行をパイプライン出力します。機械学習のデータ型とテーブル・ファンクションからのパイプ出力については、「データ型」を参照してください。GET_MODEL_DETAILS_SVD
によって戻された各行の列は次のとおりです。DM_SVD_MATRIX_SETの列 説明 matrix_type
マトリックスのタイプ。指定可能な値は、S、VおよびUです。このフィールドはNULLにはなりません。
feature_id
マトリックスが参照する機能。
mapped_feature_id
機能の説明的な名前。
attribute_name
Vマトリックスのコンポーネント・ベースにおける列名。このフィールドは、SマトリックスとUマトリックスではNULLになります。
attribute_subname
Vマトリックスのコンポーネント・ベースにおけるサブ名。ネストした列にのみ適用されます。このフィールドは、SマトリックスとUマトリックスではNULLになります。
case_id
Uマトリックス予測によって記述される作成データ内にある、一意の行識別子。このフィールドは、SマトリックスとVマトリックスではNULLになります。
value
マトリックスの入力値。
variance
コンポーネントに記述された分散値。Sマトリックスの入力値でのみNULLではありません。この列は、Sマトリックスの入力値と、設定
dbms_data_mining.svds_scoring_mode
がdbms_data_mining.svds_scoring_pca
に設定されたSVDモデルでのみNULLではなく、手動で、または設定dbms_data_mining.prep_auto
がdbms_data_mining.prep_auto_on
に設定されるため、作成データがセンタリングされます。pct_cum_variance
コンポーネントに記述された分散の累積率。コンポーネントは、記述した分散値に従って降順でランク付けされます。
この列は、Sマトリックスの入力値と、設定
dbms_data_mining.svds_scoring_mode
がdbms_data_mining.svds_scoring_pca
に設定されたSVDモデルでのみNULLではなく、手動で、または設定dbms_data_mining.prep_auto
がdbms_data_mining.prep_auto_on
に設定されるため、作成データがセンタリングされます。 -
GET_MODEL_DETAILS
では、離散した値が出力されます。ゼロの値は戻されません。Sマトリックスの対角要素、Vマトリックス・ベースのゼロ以外の係数、およびゼロ以外のUマトリックス予測のみが戻されます。例外は、データ行によってゼロ以外のUマトリックス予測が生成されなかった場合です。この場合、その行のケースIDが戻されますが、
feature_id
とvalue
はNULL
になります。これは、元のデータのレコードが失われないようにするためです。 -
GET_MODEL_DETAILS
ファンクションは、作成プロセス中に適用された変換を自動的に元に戻すことによって、モデル透過性を保持します。このため、モデルのディテールに戻される属性は、モデル作成に使用された元の属性(または元の属性の近似値)となります。 -
パーティション化されたモデルで値が
NULL
の場合、例外がスローされます。値がNULLでない場合、適切なパーティション名が含まれる必要があります。
42.1.8.36 GET_MODEL_DETAILS_SVMファンクション
GET_MODEL_DETAILS_SVM
ファンクションは、線形サポート・ベクター・マシン(SVM)モデルの詳細を示す行のセットを返します。非線形SVMに対して起動された場合は、ORA-40215
を戻します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。かわりに、モデル・ディテール・ビューを使用してください。
『Oracle Machine Learning for SQLユーザーズ・ガイド』のモデル・ディテール・ビューに関する項を参照してください。
線形SVMモデルでは、ゼロ以外の係数のみが格納されます。これにより記憶域が削減され、モデルをロードする速度が上がります。その結果、GET_MODEL_DETAILS_SVM
で戻される係数のリストに属性がない場合、この属性の係数はゼロとして解釈されます。
構文
DBMS_DATA_MINING.get_model_details_svm( model_name VARCHAR2, reverse_coef NUMBER DEFAULT 0, partition_name VARCHAR2 DEFAULT NULL) RETURN DM_SVM_Linear_Coeff_Set PIPELINED;
パラメータ
表42-109 GET_MODEL_DETAILS_SVMファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
詳細は、「使用上のノート」の4を参照してください。 |
|
パーティション化されたモデルのパーティションを指定します。 |
戻り値
表42-110 GET_MODEL_DETAILS_SVMファンクションの戻り値
戻り値 | 説明 |
---|---|
|
(class VARCHAR2(4000), attribute_set DM_SVM_ATTRIBUTE_SET)
(attribute_name VARCHAR2(4000), attribute_subname VARCHAR2(4000), attribute_value VARCHAR2(4000), coefficient NUMBER) 「使用上のノート」を参照してください。 |
使用上のノート
-
このテーブル・ファンクションは、
DM_SVM_LINEAR_COEFF
タイプの行をパイプライン出力します。機械学習のデータ型とテーブル・ファンクションからのパイプ出力については、「データ型」を参照してください。 -
DM_SVM_LINEAR_COEFF
のclass
列には、分類ターゲット値が格納されています。SVM回帰モデルの場合、class
はNULLです。分類ターゲット値ごとに、係数のセットが返されます。2項分類モデル、1クラス分類モデルおよび回帰モデルの場合は、係数の単一のセットのみが返されます。 -
DM_SVM_ATTRIBUTE_SET
のattribute_value
列は、質的属性で使用されます。 -
GET_MODEL_DETAILS
ファンクションは、作成プロセス中に適用された変換を自動的に元に戻すことによって、モデル透過性を保持します。このため、モデルのディテールに戻される属性は、モデル作成に使用された元の属性(または元の属性の近似値)となります。係数は元の属性ではなく、変換された属性に関連します。係数は、モデルのディテールに直接戻された場合、意味のある情報を表しません。係数が元の属性に関連するように
GET_MODEL_DETAILS_SVM
で変換する場合は、reverse_coef
パラメータを1に設定します。 -
パーティション化されたモデルで値が
NULL
の場合、例外がスローされます。値がNULLでない場合、目的のパーティション名が含まれる必要があります。
例
次の例では、サンプル・プログラムdmsvcdem.sql
で作成されたSVM分類モデルSVMC_SH_Clas_sample
に関するモデルのディテールが戻されます。サンプル・プログラムの詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください。
WITH mod_dtls AS ( SELECT * FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_SVM('SVMC_SH_Clas_sample')) ), model_details AS ( SELECT D.class, A.attribute_name, A.attribute_value, A.coefficient FROM mod_dtls D, TABLE(D.attribute_set) A ORDER BY D.class, ABS(A.coefficient) DESC ) SELECT class, attribute_name aname, attribute_value aval, coefficient coeff FROM model_details WHERE ROWNUM < 11; CLASS ANAME AVAL COEFF ---------- ------------------------- ------------------------- ----- 1 -2.85 1 BOOKKEEPING_APPLICATION 1.11 1 OCCUPATION Other -.94 1 HOUSEHOLD_SIZE 4-5 .88 1 CUST_MARITAL_STATUS Married .82 1 YRS_RESIDENCE .76 1 HOUSEHOLD_SIZE 6-8 -.74 1 OCCUPATION Exec. .71 1 EDUCATION 11th -.71 1 EDUCATION Masters .63
42.1.8.37 GET_MODEL_DETAILS_XMLファンクション
このファンクションは、デシジョン・ツリー・モデルのディテールを示すXMLオブジェクトを返します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。かわりに、モデル・ディテール・ビューを使用してください。
『Oracle Machine Learning for SQLユーザーズ・ガイド』のデシジョン・ツリーのモデル・ディテール・ビューに関する項を参照してください。
構文
DBMS_DATA_MINING.get_model_details_xml( model_name IN VARCHAR2, partition_name IN VARCHAR2 DEFAULT NULL) RETURN XMLType;
パラメータ
表42-111 GET_MODEL_DETAILS_XMLファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
パーティション化されたモデルのパーティションを指定します。 |
戻り値
表42-112 GET_MODEL_DETAILS_XMLファンクションの戻り値
戻り値 | 説明 |
---|---|
|
デシジョン・ツリー・モデルのXML定義。詳細は、「XMLTYPE」を参照してください。 XML定義は、Data Mining Group Predictive Model Markup Language (PMML)バージョン2.1の仕様に準拠しています。この仕様については、 field="<column_name>"としてドキュメントに表示されるネストしていない属性とは対照的に、ネストした属性が分岐として使用される場合、属性がfield="'<column_name>'.<subname>"としてXMLドキュメントに表示されます。
ノート: 列名は一重引用符で囲まれて、ピリオドでcolumn_nameとsubnameが区切られます。 |
使用上のノート
Oracle XMLで表示できない特殊文字は「#」に変換されます。
例
次のSQL*Plusの文は、デシジョン・ツリー・モデルdt_sh_clas_sample
の詳細を返します。
ノート: XML出力に表示される「"」文字は、SQL*Plusの動作の結果です。適切な形式でXMLを表示するには、ファイルに切り取って貼り付け、ファイルをブラウザで開きます。
column dt_details format a320 SELECT dbms_data_mining.get_model_details_xml('dt_sh_clas_sample') AS DT_DETAILS FROM dual; DT_DETAILS -------------------------------------------------------------------------------- <PMML version="2.1"> <Header copyright="Copyright (c) 2004, Oracle Corporation. All rights reserved."/> <DataDictionary numberOfFields="9"> <DataField name="AFFINITY_CARD" optype="categorical"/> <DataField name="AGE" optype="continuous"/> <DataField name="BOOKKEEPING_APPLICATION" optype="continuous"/> <DataField name="CUST_MARITAL_STATUS" optype="categorical"/> <DataField name="EDUCATION" optype="categorical"/> <DataField name="HOUSEHOLD_SIZE" optype="categorical"/> <DataField name="OCCUPATION" optype="categorical"/> <DataField name="YRS_RESIDENCE" optype="continuous"/> <DataField name="Y_BOX_GAMES" optype="continuous"/> </DataDictionary> <TreeModel modelName="DT_SH_CLAS_SAMPLE" functionName="classification" splitCharacteristic="binarySplit"> <Extension name="buildSettings"> <Setting name="TREE_IMPURITY_METRIC" value="TREE_IMPURITY_GINI"/> <Setting name="TREE_TERM_MAX_DEPTH" value="7"/> <Setting name="TREE_TERM_MINPCT_NODE" value=".05"/> <Setting name="TREE_TERM_MINPCT_SPLIT" value=".1"/> <Setting name="TREE_TERM_MINREC_NODE" value="10"/> <Setting name="TREE_TERM_MINREC_SPLIT" value="20"/> <costMatrix> <costElement> <actualValue>0</actualValue> <predictedValue>0</predictedValue> <cost>0</cost> </costElement> <costElement> <actualValue>0</actualValue> <predictedValue>1</predictedValue> <cost>1</cost> </costElement> <costElement> <actualValue>1</actualValue> <predictedValue>0</predictedValue> <cost>8</cost> </costElement> <costElement> <actualValue>1</actualValue> <predictedValue>1</predictedValue> <cost>0</cost> </costElement> </costMatrix> </Extension> <MiningSchema> . . . . . . </Node> </Node> </TreeModel> </PMML>
42.1.8.38 GET_MODEL_TRANSFORMATIONSファンクション
このファンクションは、指定したモデルに埋め込まれた変換式を戻します。Oracle Database 12cリリース2以降、このファンクションは非推奨になりました。『Oracle Databaseリファレンス』の静的データ・ディクショナリ・ビュー: ALL_ALL_TABLES
からALL_OUTLINES
に関する項を参照してください。
GET_*
インタフェースはモデル・ビューに置き換えられるため、モデル・ビューを参照して関連する情報を取得することをお薦めします。GET_MODEL_TRANSFORMATIONS
ファンクションは次のものに置き換えられます。
-
USER(/DBA/ALL)_MINING_MODEL_XFORMS: ユーザーが埋め込んだ変換を提供します。
-
DM$VXの接頭辞付きモデル・ビュー: テキストの特徴抽出情報を提供します。
-
D$VNの接頭辞付きモデル・ビュー: 正規化および欠損値の情報を提供します。
-
DM$VB: ビニングの情報を提供します。
参照:
「DBMS_DATA_MINING_TRANSFORMの操作上のノート」の「変換リストについて」
『Oracle Databaseリファレンス』のALL_MINING_MODEL_XFORMSに関する項
『Oracle Databaseリファレンス』のDBA_MINING_MODEL_XFORMSに関する項
『Oracle Databaseリファレンス』のUSER_MINING_MODEL_XFORMSに関する項
構文
DBMS_DATA_MINING.get_model_transformations( model_name IN VARCHAR2, partition_name IN VARCHAR2 DEFAULT NULL) RETURN DM_Transforms PIPELINED;
パラメータ
表42-113 GET_MODEL_TRANSFORMATIONSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名を示します。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
|
パーティション化されたモデルのパーティションを指定します。 |
戻り値
表42-114 GET_MODEL_TRANSFORMATIONSファンクションの戻り値
戻り値 | 説明 |
---|---|
|
attribute_name VARCHAR2(4000) attribute_subname VARCHAR2(4000) expression CLOB reverse_expression CLOB |
使用上のノート
自動データ準備(ADP)が有効になっている場合、自動変換とユーザー定義の変換の両方を属性に関連付けることができます。この場合、ユーザー定義の変換は自動変換の前に評価されます。
パーティション化されたモデルに対して起動される場合は、partition_name
パラメータが指定される必要があります。
例
この例では、SH.CUSTOMERS
表の複数の列を使用して、Naive Bayesモデルを作成します。それらの列のいずれかに変換式が指定されています。このモデルではADPは使用されません。
CREATE OR REPLACE VIEW mining_data AS SELECT cust_id, cust_year_of_birth, cust_income_level,cust_credit_limit FROM sh.customers; describe mining_data Name Null? Type -------------------------------------- -------- -------------------------- CUST_ID NOT NULL NUMBER CUST_YEAR_OF_BIRTH NOT NULL NUMBER(4) CUST_INCOME_LEVEL VARCHAR2(30) CUST_CREDIT_LIMIT NUMBER CREATE TABLE settings_nb( setting_name VARCHAR2(30), setting_value VARCHAR2(30)); BEGIN INSERT INTO settings_nb (setting_name, setting_value) VALUES (dbms_data_mining.algo_name, dbms_data_mining.algo_naive_bayes); INSERT INTO settings_nb (setting_name, setting_value) VALUES (dbms_data_mining.prep_auto, dbms_data_mining.prep_auto_off); COMMIT; END; / DECLARE mining_data_xforms dbms_data_mining_transform.TRANSFORM_LIST; BEGIN dbms_data_mining_transform.SET_TRANSFORM ( xform_list => mining_data_xforms, attribute_name => 'cust_year_of_birth', attribute_subname => null, expression => 'cust_year_of_birth + 10', reverse_expression => 'cust_year_of_birth - 10'); dbms_data_mining.CREATE_MODEL ( model_name => 'new_model', mining_function => dbms_data_mining.classification, data_table_name => 'mining_data', case_id_column_name => 'cust_id', target_column_name => 'cust_income_level', settings_table_name => 'settings_nb', data_schema_name => nulL, settings_schema_name => null, xform_list => mining_data_xforms ); END; / SELECT attribute_name, TO_CHAR(expression), TO_CHAR(reverse_expression) FROM TABLE (dbms_data_mining.GET_MODEL_TRANSFORMATIONS('new_model')); ATTRIBUTE_NAME TO_CHAR(EXPRESSION) TO_CHAR(REVERSE_EXPRESSION) ------------------ ------------------------ ----------------------------- CUST_YEAR_OF_BIRTH cust_year_of_birth + 10 cust_year_of_birth - 10
42.1.8.39 GET_TRANSFORM_LISTプロシージャ
このプロシージャは、DM_TRANSFORMS
と指定された変換式を、モデルの作成時に使用できる変換リスト(TRANSFORM_LIST
)に変換します。DM_TRANSFORMS
はGET_MODEL_TRANSFORMATIONS
ファンクションによって戻されます。
DBMS_DATA_MINING_TRANSFORM
パッケージのルーチンを使用して変換リストを作成することもできます。
構文
DBMS_DATA_MINING.GET_TRANSFORM_LIST ( xform_list OUT NOCOPY TRANSFORM_LIST, model_xforms IN DM_TRANSFORMS);
パラメータ
表42-115 GET_TRANSFORM_LISTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
モデルに埋め込むことができる変換の仕様のリスト。CREATE_MODELプロシージャでパラメータとして使用されます。
attribute_name VARCHAR2(30) attribute_subname VARCHAR2(4000) expression EXPRESSION_REC reverse_expression EXPRESSION_REC attribute_spec VARCHAR2(4000)
|
|
特定のモデルに対してGET_MODEL_TRANSFORMATIONSファンクションで戻される埋め込まれた変換式のリスト。
attribute_name VARCHAR2(4000) attribute_subname VARCHAR2(4000) expression CLOB reverse_expression CLOB |
例
この例では、SH.CUSTOMERS
テーブルのいくつかの列を使用してモデルmod1
を調整します。このモデルでは、いずれかの列を自動的にビンに区分するADPが使用されます。
2つ目のモデルmod2
では、ADPを使用せずに同じデータを調整しますが、mod1
から取得した変換リストは使用します。結果として、mod1
とmod2
の両方に同じ変換式が埋め込まれます。
CREATE OR REPLACE VIEW mining_data AS SELECT cust_id, cust_year_of_birth, cust_income_level, cust_credit_limit FROM sh.customers; describe mining_data Name Null? Type ----------------------------------------- -------- ---------------------------- CUST_ID NOT NULL NUMBER CUST_YEAR_OF_BIRTH NOT NULL NUMBER(4) CUST_INCOME_LEVEL VARCHAR2(30) CUST_CREDIT_LIMIT NUMBER CREATE TABLE setmod1(setting_name VARCHAR2(30),setting_value VARCHAR2(30)); BEGIN INSERT INTO setmod1 VALUES (dbms_data_mining.algo_name, dbms_data_mining.algo_naive_bayes); INSERT INTO setmod1 VALUES (dbms_data_mining.prep_auto,dbms_data_mining.prep_auto_on); dbms_data_mining.CREATE_MODEL ( model_name => 'mod1', mining_function => dbms_data_mining.classification, data_table_name => 'mining_data', case_id_column_name => 'cust_id', target_column_name => 'cust_income_level', settings_table_name => 'setmod1'); COMMIT; END; / CREATE TABLE setmod2(setting_name VARCHAR2(30),setting_value VARCHAR2(30)); BEGIN INSERT INTO setmod2 VALUES (dbms_data_mining.algo_name, dbms_data_mining.algo_naive_bayes); COMMIT; END; / DECLARE v_xform_list dbms_data_mining_transform.TRANSFORM_LIST; dmxf DM_TRANSFORMS; BEGIN EXECUTE IMMEDIATE 'SELECT dm_transform(attribute_name, attribute_subname,expression, reverse_expression) FROM TABLE(dbms_data_mining.GET_MODEL_TRANSFORMATIONS (''mod1''))' BULK COLLECT INTO dmxf; dbms_data_mining.GET_TRANSFORM_LIST ( xform_list => v_xform_list, model_xforms => dmxf); dbms_data_mining.CREATE_MODEL( model_name => 'mod2', mining_function => dbms_data_mining.classification, data_table_name => 'mining_data', case_id_column_name => 'cust_id', target_column_name => 'cust_income_level', settings_table_name => 'setmod2', xform_list => v_xform_list); END; / -- Transformation expression embedded in mod1 SELECT TO_CHAR(expression) FROM TABLE (dbms_data_mining.GET_MODEL_TRANSFORMATIONS('mod1')); TO_CHAR(EXPRESSION) -------------------------------------------------------------------------------- CASE WHEN "CUST_YEAR_OF_BIRTH"<1915 THEN 0 WHEN "CUST_YEAR_OF_BIRTH"<=1915 THEN 0 WHEN "CUST_YEAR_OF_BIRTH"<=1920.5 THEN 1 WHEN "CUST_YEAR_OF_BIRTH"<=1924.5 THEN 2 . . . .5 THEN 29 WHEN "CUST_YEAR_OF_BIRTH" IS NOT NULL THEN 30 END -- Transformation expression embedded in mod2 SELECT TO_CHAR(expression) FROM TABLE (dbms_data_mining.GET_MODEL_TRANSFORMATIONS('mod2')); TO_CHAR(EXPRESSION) -------------------------------------------------------------------------------- CASE WHEN "CUST_YEAR_OF_BIRTH"<1915 THEN 0 WHEN "CUST_YEAR_OF_BIRTH"<=1915 THEN 0 WHEN "CUST_YEAR_OF_BIRTH"<=1920.5 THEN 1 WHEN "CUST_YEAR_OF_BIRTH"<=1924.5 THEN 2 . . . .5 THEN 29 WHEN "CUST_YEAR_OF_BIRTH" IS NOT NULL THEN 30 END -- Reverse transformation expression embedded in mod1 SELECT TO_CHAR(reverse_expression)FROM TABLE (dbms_data_mining.GET_MODEL_TRANSFORMATIONS('mod1')); TO_CHAR(REVERSE_EXPRESSION) -------------------------------------------------------------------------------- DECODE("CUST_YEAR_OF_BIRTH",0,'( ; 1915), [1915; 1915]',1,'(1915; 1920.5]',2,'(1 920.5; 1924.5]',3,'(1924.5; 1928.5]',4,'(1928.5; 1932.5]',5,'(1932.5; 1936.5]',6 . . . 8,'(1987.5; 1988.5]',29,'(1988.5; 1989.5]',30,'(1989.5; )',NULL,'NULL') -- Reverse transformation expression embedded in mod2 SELECT TO_CHAR(reverse_expression) FROM TABLE (dbms_data_mining.GET_MODEL_TRANSFORMATIONS('mod2')); TO_CHAR(REVERSE_EXPRESSION) -------------------------------------------------------------------------------- DECODE("CUST_YEAR_OF_BIRTH",0,'( ; 1915), [1915; 1915]',1,'(1915; 1920.5]',2,'(1 920.5; 1924.5]',3,'(1924.5; 1928.5]',4,'(1928.5; 1932.5]',5,'(1932.5; 1936.5]',6 . . . 8,'(1987.5; 1988.5]',29,'(1988.5; 1989.5]',30,'(1989.5; )',NULL,'NULL')
42.1.8.40 IMPORT_MODELプロシージャ
このプロシージャは、1つ以上の機械学習のモデルをインポートします。このプロシージャはオーバーロードされています。ダンプ・ファイル・セットから複数の機械学習モデルをインポートするために呼び出すことも、PMML文書から単一の機械学習モデルをインポートするために呼び出すこともできます。
ダンプ・ファイル・セットからのインポート
EXPORT_MODELプロシージャで作成したダンプ・ファイル・セットから機械学習モデルをインポートできます。IMPORT_MODEL
およびEXPORT_MODEL
では、ダンプ・ファイル・セットへのエクスポートとダンプ・ファイル・セットからのインポートにOracle Data Pumpテクノロジが使用されています。
Oracle Data Pumpを直接使用してスキーマ全体またはデータベース全体をエクスポートまたはインポートすると、そのスキーマまたはデータベースの機械学習モデルが含められます。EXPORT_MODEL
およびIMPORT_MODEL
では、機械学習モデルのみがエクスポートおよびインポートされます。
PMMLからのインポート
Predictive Model Markup Language(PMML)で表現された機械学習モデルをインポートできます。モデルのタイプは、RegressionModel
(線形回帰またはバイナリ・ロジスティック回帰)である必要があります。
PMMLは、Data Mining Group (https://dmg.org
)によって策定されたXMLベースの規格です。PMMLに準拠しているアプリケーションは、任意のベンダーによって作成されたPMML準拠のモデルを配置できます。Oracle Machine Learning for SQLは、回帰のモデルに対してPMML 3.1のコア機能をサポートしています。
参照:
機械学習のモデルのインポートおよびエクスポートの詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください
Oracle Data Pumpの詳細は、『Oracle Databaseユーティリティ』を参照してください。
PMMLの詳細は、https://dmg.org/dmg-faq.html
を参照してください。
構文
ダンプ・ファイル・セットからの機械学習モデルのインポート:
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, tablespace_remap IN VARCHAR2 DEFAULT NULL);
PMML文書からの機械学習モデルのインポート:
DBMS_DATA_MINING.IMPORT_MODEL ( model_name IN VARCHAR2, pmmldoc IN XMLTYPE strict_check IN BOOLEAN DEFAULT FALSE);
パラメータ
表42-116 IMPORT_MODELプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
モデルのインポート元のダンプ・ファイル・セットの名前。ダンプ・ファイル・セットは、 ダンプ・ファイル・セットには1つ以上のファイルを保存できます。(詳細は、「EXPORT_MODELプロシージャ」を参照)ダンプ・ファイル・セット内に複数のダンプ・ファイルが存在する場合は、ファイルを列挙するかわりに |
|
ダンプ・ファイル・セットの場所を指定する、事前定義済のディレクトリ・オブジェクトの名前。エクスポートするユーザーとインポートするユーザーには、このディレクトリ・オブジェクト、およびこのディレクトリ・オブジェクトによって指定されるファイル・システム・ディレクトリに対する読取り/書込みアクセス権が必要です。 ノート: ターゲット・データベースにも、このファイル・システム・ディレクトリに対する読取り/書込みアクセス権が必要です。 |
|
インポートする1つ以上のモデルを指定するパラメータ。
'mymodel1' 'name IN (''mymodel2'',''mymodel3'')' 1行目では、 |
|
モデルをインポートするか、モデルを作成するSQL文をインポートするかを指定するパラメータ(オプション)。デフォルトでは、モデルがインポートされます。
|
|
リモート・システムへのデータベース・リンクの名前を指定するオプション・パラメータ。デフォルト値は |
|
インポート・ジョブの名前を指定するパラメータ(オプション)。デフォルトでは、 ジョブ名を指定する場合は、スキーマ内で一意の名前を指定する必要があります。ジョブ名の最大長は30文字です。 インポート・ジョブのログ・ファイルが、 |
|
別のスキーマにインポートするためのパラメータ(オプション)。デフォルトでは、モデルのエクスポートとインポートは同じスキーマ内で行われます。 ダンプ・ファイル・セットが別のスキーマに属している場合は、 ノート: 別のスキーマからモデルをインポートする際に、 |
|
別の表領域にインポートするためのパラメータ(オプション)。デフォルトでは、モデルのエクスポートとインポートは同じ表領域内で行われます。 ダンプ・ファイル・セットが別の表領域に属している場合は、 ノート: 別の表領域からモデルをインポートする際に、 |
|
PMMLからのインポートの結果としてデータベースに作成される新規モデルの名前。この名前は、ユーザーのスキーマ内で一意である必要があります。 |
|
インポート対象のモデルを表現したPMML文書。PMML文書には、 |
|
PMML文書にコアPMMLの一部ではないセクション(たとえば、出力またはターゲット)が含まれる場合、エラーが発生するかどうか。OML4SQLは、コアPMMLのみをサポートしています。コア以外の機能は、スコアリング表現に影響する可能性があります。 PMMLがコアPMMLに厳密に準拠していないのに |
例
-
この例では、
oml_user2
スキーマ内でモデルのエクスポートとインポートを実行します。その後で、同じモデルをoml_user3
スキーマにインポートします。oml_user3
ユーザーには、IMP_FULL_DATABASE
権限があります。oml_user2
ユーザーにはUSER2
表領域が割り当てられていて、oml_user3
にはUSER3
表領域が割り当てられています。SQL> connect oml_user2 Enter password:
oml_user2_password
Connected. SQL> select model_name from user_mining_models; MODEL_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 ( filename =>'NMF_SH_SAMPLE_out', directory =>'DATA_PUMP_DIR', model_filter => 'name = ''NMF_SH_SAMPLE'''); -- import the model back into the same schema SQL>EXECUTE DBMS_DATA_MINING.IMPORT_MODEL ( filename => 'NMF_SH_SAMPLE_out01.dmp', directory => 'DATA_PUMP_DIR', model_filter => 'name = ''NMF_SH_SAMPLE'''); -- connect as different user -- import same model into that schema SQL> connect oml_user3 Enter password:oml_user3_password
Connected. SQL>EXECUTE DBMS_DATA_MINING.IMPORT_MODEL ( filename => 'NMF_SH_SAMPLE_out01.dmp', directory => 'DATA_PUMP_DIR', model_filter => 'name = ''NMF_SH_SAMPLE''', operation =>'IMPORT', remote_link => NULL, jobname => 'nmf_imp_job', schema_remap => 'oml_user2:oml_user3', tablespace_remap => 'USER2:USER3');この例では、ユーザー
SCOTT
が作成したダンプ・ファイルmodel_exp_001.dmp
から、ユーザーMARY
がすべてのモデルをインポートします。ユーザーMARY
にはUSER2
表領域が割り当てられており、ユーザーSCOTT
には、モデルがダンプ・ファイルmodel_exp_001.dmp
にエクスポートされたときに、USERS
表領域が割り当てられました。ダンプ・ファイルはディレクトリ・オブジェクトDM_DUMP
にマッピングされたファイル・システム・ディレクトリにあります。ユーザーMARY
がIMP_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', tablespace_remap=>'USERS:USER2'); DBMS_OUTPUT.PUT_LINE( 'DBMS_DATA_MINING.IMPORT_MODEL of all models from SCOTT done!'); END; /
-
この例は、ユーザー
xuser
が、リモート・データベースからモデルoml_user.r1mod
をインポートする方法を示しています。リモート・データベースのSQL*Net接続別名はR1DB
です。ユーザーxuser
にはSYSAUX
表領域が割り当てられ、ユーザーoml_user
にはTBS_1
表領域が割り当てられます。CONNECT / AS SYSDBA; GRANT CREATE DATABASE LINK TO xuser; GRANT imp_full_database TO xuser; CONNECT xuser/xuserpassword CREATE DATABASE LINK oml_user_link CONNECT TO oml_user IDENTIFIED BY oml_userpassword USING 'R1DB'; EXEC dbms_data_mining.import_model ( NULL, 'oml_user_DIR', 'R1MOD', remote_link => 'oml_user_LINK', schema_remap => 'oml_user:XUSER', tablespace_remap => 'TBS_1:SYSAUX' ); SELECT name FROM dm_user_models; NAME ----------------------------------------------------------------------------- R1MOD
-
この例では、ディレクトリ・オブジェクト
PMMLDIR
によって参照される場所から、現行ユーザーのスキーマにSamplePMML1.xml
というPMML文書をインポートする方法を示します。インポートされるモデルの名前は、PMMLMODEL1
になります。BEGIN dbms_data_mining.import_model ('PMMLMODEL1', XMLType (bfilename ('PMMLDIR', 'SamplePMML1.xml'), nls_charset_id ('AL32UTF8') )); END;
42.1.8.41 IMPORT_SERMODELプロシージャ
このプロシージャは、シリアライズされた形式のモデルをデータベースにインポートします。
インポート・ルーチンは、BLOB
でシリアライズされたコンテンツと、そのコンテンツで作成するモデルの名前を受け取ります。このインポートでは、モデル詳細の問合せに必要なモデルのビューや表は作成されません。インポート・プロシージャには、モデルをスコアリングする機能のみが用意されています。
構文
DBMS_DATA_MINING.IMPORT_SERMODEL (
model_data IN BLOB,
model_name IN VARCHAR2,);
パラメータ
表42-117 IMPORT_SERMODELプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
機械学習モデルの名前(名前の形式は、[schema_name.]model_nameです)。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。 |
例
次の文は、シリアライズされた形式のモデルをインポートします。
declare
v_blob blob;
BEGIN
dbms_lob.createtemporary(v_blob, FALSE);
-- fill in v_blob from somewhere (e.g., bfile, etc.)
dbms_data_mining.import_sermodel(v_blob, 'MY_MODEL');
dbms_lob.freetemporary(v_blob);
END;
/
参照:
機械学習のモデルのインポートおよびエクスポートの詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください
42.1.8.42 IMPORT_ONNX_MODELプロシージャ
この手順を使用すると、ONNXモデルをデータベースにインポートできます。
構文
DBMS_DATA_MINING.IMPORT_ONNX_MODEL( model_name IN VARCHAR2, model_data IN BLOB, metadata IN JSON);
パラメータ
表42-118 IMPORT_ONNX_MODELプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
これはモデルのONNX表現を保持する |
|
モデルを記述するメタデータのJSONによる記述。このメタデータには、モデルでサポートされている機械学習関数を少なくとも記述する必要があります。モデルのメタデータ・パラメータの詳細は、ONNXモデルのJSONメタデータ・パラメータを参照してください。 |
例
次の例は、DBMS_DATA_MINING.IMPORT_ONNX_MODEL
プロシージャを使用するコード・スニペットを示しています。ステップバイステップの完全な例は、「ONNXモデルのインポートおよび埋込みの生成」と「ONNXモデルをインポートするための代替方法」で示されています。
DBMS_DATA_MINING.IMPORT_ONNX_MODEL('my_embedding_model.onnx',
:blob_bind_variable,
JSON('{"function" : "embedding",
"embeddingOutput" : "embedding" ,
"input":{"input": ["DATA"]}}'));
BLOB
変数を定義しそれをIMPORT_ONNX_MODEL
プロシージャで使用する方法を示す完全な例を次に示します:
CREATE OR REPLACE MY_LOAD_EMBEDDING_MODEL(embedding_model_name VARCHAR2, onnx_blob BLOB) IS
BEGIN
DBMS_DATA_MINING.IMPORT_ONNX_MODEL(embedding_model_name,
onnx_blob,
JSON('{"function" : "embedding",
"embeddingOutput" : "embedding" ,
"input":{"input": ["DATA"]}}'));
END;
/
使用上のノート
モデルの名前は、次のような他の機械学習モデルで使用されるものと同じ制限に従います。
- スキーマ名を指定する場合は、128文字に制限されます。
- モデル名は123文字に制限されており、引用符なしの識別子のルールに従う必要があります。名前に使用できるのは、英数字、アンダースコア(_)、ドル記号($)およびシャープ記号(#)のみです。最初の文字は、英字にする必要があります。
- モデルのサイズは1GBに制限されます。
- モデルは外部イニシャライザに依存しないようにします。イニシャライザおよびその他のONNXの概念の詳細は、https://onnx.ai/onnx/intro/concepts.htmlを参照してください。
42.1.8.43 R拡張アルゴリズムのJSONスキーマ
JSONスキーマに従った新しいJSONオブジェクトの作成時に柔軟性を提供します。
使用上のノート
新しいJSONオブジェクトの作成時には、次のような柔軟性があります。
-
部分登録が可能です。たとえば、ディテール・ファンクションが欠落していてもかまいません。
-
様々な順序が可能です。たとえば、ビルド・ファンクションの前後にディテール・ファンクションを記述できます。
例42-1 JSONスキーマ
R拡張アルゴリズムのJSONスキーマ1.1は次のとおりです。
{
"type": "object",
"properties": {
"algo_name_display": { "type" : "object",
"properties" : {
"language" : { "type" : "string",
"enum" : ["English", "Spanish", "French"],
"default" : "English"},
"name" : { "type" : "string"}}
},
"function_language": {"type": "string" },
"mining_function": {
"type" : "array",
"items" : [
{ "type" : "object",
"properties" : {
"mining_function_name" : { "type" : "string"},
"build_function": {
"type": "object",
"properties": {
"function_body": { "type": "CLOB" }
}
},
"detail_function": {
"type" : "array",
"items" : [
{"type": "object",
"properties": {
"function_body": { "type": "CLOB" },
"view_columns": { "type" : "array",
"items" : {
"type" : "object",
"properties" : {
"name" : { "type" : "string"},
"type" : { "type" : "string",
"enum" : ["VARCHAR2",
"NUMBER",
"DATE",
"BOOLEAN"]
}
}
}
}
}
]
},
"score_function": {
"type": "object",
"properties": {
"function_body": { "type": "CLOB" }
}
},
"weight_function": {
"type": "object",
"properties": {
"function_body": { "type": "CLOB" },
}
}
}
}]
},
"algo_setting": {
"type" : "array",
"items" : [
{ "type" : "object",
"properties" : {
"name" : { "type" : "string"},
"name_display": { "type" : "object",
"properties" : {
"language" : { "type" : "string",
"enum" : ["English", "Spanish", "French"],
"default" : "English"},
"name" : { "type" : "string"}}
},
"type" : { "type" : "string",
"enum" : ["string", "integer", "number", "boolean"]},
"optional": {"type" : "BOOLEAN",
"default" : "FALSE"},
"value" : { "type" : "string"},
"min_value" : { "type": "object",
"properties": {
"min_value": {"type": "number"},
"inclusive": { "type": "boolean",
"default" : TRUE},
}
},
"max_value" : {"type": "object",
"properties": {
"max_value": {"type": "number"},
"inclusive": { "type": "boolean",
"default" : TRUE},
}
},
"categorical choices" : { "type": "array",
"items": {
"type": "string"
}
},
"description_display": { "type" : "object",
"properties" : {
"language" : { "type" : "string",
"enum" : ["English", "Spanish", "French"],
"default" : "English"},
"name" : { "type" : "string"}}
}
}
}
]
}
}
}
例42-2 JSONオブジェクトの例
次に、登録プロシージャに渡す必要があるJSONオブジェクトの例を示します。
{ "algo_name_display" : {"English", "t1"},
"function_language" : "R",
"mining_function" : {
"mining_function_name" : "CLASSIFICATION",
"build_function" : {"function_body": "function(dat, formula, family) { set.seed(1234);
mod <- glm(formula = formula, data=dat,
family= eval(parse(text=family))); mod}"},
"score_function" : { "function_body": "function(mod, dat) {
res <- predict(mod, newdata = dat, type=''response '');
res2=data.frame(1-res, res); res2}"}}
},
"algo_setting" : [{"name" : "dbms_data_mining.odms_m issing_value_treatment",
"name_display" : {"English", "dbms_data_mining.odms_missing_value _treatment"},
"type" : "string",
"optional" : "TRUE",
"value" : "dbms_data_mining.odms_missing_value_mean_mode",
"categorical choices" : [ "dbms_data_mining.odms_missing_value_mean_mode",
"dbms_data_mining.odms_missing_value_auto",
"dbms_data_mining.odms_missing_value_delete_row"],
"description" : {"English",
"how to treat missing values"}
},
{"name" : "RALG_PARAMETER_FAMILY",
"name_display" : {"English", "RALG_PARAMETER_FAMILY"},
"type" : "string",
"optional" : "TRUE",
"value" : "",
"description" : {"English", "R family parameter in build function"}
}
],
}
42.1.8.44 REGISTER_ALGORITHMプロシージャ
このファンクションは、アルゴリズム名や機械学習ファンクションなどアルゴリズムのすべてのメタデータを指定することで、新しいアルゴリズムを登録する場合に使用します。
構文
DBMS_DATA_MINING.REGISTER_ALGORITHM ( algorithm_name IN VARCHAR2, algorithm_metadata IN CLOB, algorithm_description IN VARCHAR2 DEFAULT NULL);
パラメータ
表42-119 REGISTER_ALGORITHMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
アルゴリズムの名前。 |
|
アルゴリズムのメタデータ。 |
|
アルゴリズムの説明 |
使用上のノート
登録プロシージャの実行内容は次のとおりです。
-
algorithm_metadata
が正しいJSON構文かどうかを確認します。 -
入力JSONオブジェクトが事前定義済のJSONスキーマに準拠しているかどうかを確認します。
-
現行ユーザーに
RQADMIN
権限があるかどうかを確認します。 -
同じアルゴリズムが2回登録されないように、アルゴリズムの重複を確認します。
-
欠落しているエントリがないか確認します。たとえば、アルゴリズム名、アルゴリズム・タイプ、メタデータおよびビルド・ファンクションなど。
JSONオブジェクト作成後のアルゴリズムの登録
SQLユーザーは、JSONスキーマに従ってJSONオブジェクトを作成して、そのオブジェクトをREGISTER_ALGORITHM
プロシージャに渡すことで新しいアルゴリズムを登録できます。
BEGIN
DBMS_DATA_MINING.register_algorithm(
algorithm_name => 't1',
algorithm_metadata =>
'{"function_language" : "R",
"mining_function" :
{ "mining_function_name" : "CLASSIFICATION",
"build_function" : {"function_body": "function(dat, formula, family) { set.seed(1234);
mod <- glm(formula = formula, data=dat,
family=eval(parse(text=family))); mod}"},
"score_function" : {"function_body": "function(mod, dat) {
res <- predict(mod, newdata = dat, type=''response'');
res2=data.frame(1-res, res); res2}"}}
}',
algorithm_description => 't1');
END;
/
42.1.8.45 RANK_APPLYプロシージャ
このプロシージャは、予測モデルまたは記述モデルをデータに適用した結果(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_table_name IN VARCHAR2, top_N IN NUMBER (38) 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);
パラメータ
表42-120 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列と同じ値になります。
分類モデル — NBおよびSVM
量的ターゲットの場合、ランク付けされた適用結果は次の定義を持つ表に保存されます。
(case_id VARCHAR2/NUMBER,
prediction NUMBER,
probability NUMBER,
cost NUMBER,
rank INTEGER)
質的ターゲットの場合、ランク付けされた適用結果は次の定義を持つ表に保存されます。
(case_id VARCHAR2/NUMBER,
prediction VARCHAR2,
probability NUMBER,
cost NUMBER,
rank INTEGER)
k-MeansまたはO-Clusterを使用するクラスタリング
クラスタリングは教師なしの機械学習ファンクションであるため、ターゲットは存在しません。APPLY
操作の結果は、単にケースに対応するクラスタ識別子と、ケースの確率のみです。コスト・マトリックスはここでは考慮されません。ランク付けされた適用結果は次の定義を持つ表に保存され、この表には、top-N
によってランク付けされたクラスタ識別子が含まれます。
(case_id VARCHAR2/NUMBER,
cluster_id NUMBER,
probability NUMBER,
rank INTEGER)
NMFを使用する特徴抽出
特徴抽出も教師なしの機械学習ファンクションです。そのため、ターゲットは存在しません。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 training 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;
42.1.8.46 REMOVE_COST_MATRIXプロシージャ
REMOVE_COST_MATRIX
は、分類モデルからデフォルトのスコアリング・マトリックスを削除します。
構文
DBMS_DATA_MINING.REMOVE_COST_MATRIX ( model_name IN VARCHAR2);
パラメータ
表42-121 Remove_Cost_Matrixプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。 |
使用上のノート
モデルが自分のスキーマ内にない場合、REMOVE_COST_MATRIX
には、ALTER ANY MINING MODEL
システム権限か、その機械学習モデルに対するALTER
オブジェクト権限が必要になります。
例
Naive BayesモデルのNB_SH_CLAS_SAMPLE
には、モデルのスコアリングに使用できるコスト・マトリックスが関連付けられています。
SQL>SELECT * FROM TABLE(dbms_data_mining.get_model_cost_matrix('nb_sh_clas_sample')) ORDER BY predicted, actual; ACTUAL PREDICTED COST ---------- ---------- ---------- 0 0 0 1 0 .75 0 1 .25 1 1 0
REMOVE_COST_MATRIX
を使用すると、コスト・マトリックスを削除できます。
SQL>EXECUTE dbms_data_mining.remove_cost_matrix('nb_sh_clas_sample'); SQL>SELECT * FROM TABLE(dbms_data_mining.get_model_cost_matrix('nb_sh_clas_sample')) ORDER BY predicted, actual; no rows selected
42.1.8.47 RENAME_MODELプロシージャ
このプロシージャは、model_nameで指定した機械学習モデルの名前をnew_model_nameで指定した名前に変更します。
new_model_nameという名前のモデルがすでに存在する場合、プロシージャは、オプションでnew_model_nameをversioned_model_nameに変更してから、model_nameをnew_model_nameに変更します。
モデル名は、[schema_name.]model_nameの形式です。スキーマを指定しない場合は、独自のスキーマが使用されます。機械学習モデルのネーミングの制限は、「CREATE_MODELプロシージャ」の「使用上のノート」を参照してください。
構文
DBMS_DATA_MINING.RENAME_MODEL ( model_name IN VARCHAR2, new_model_name IN VARCHAR2, versioned_model_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表42-122 RENAME_MODELプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
名前を変更するモデル |
|
モデル |
|
モデル |
使用上のノート
モデルの適用中にそのモデルの名前を変更しようとした場合、名前は変更されますが、適用操作からは不確定な結果が戻されます。
例
-
次の例では、
census_model
というモデルの名前がcensus_model_2012
に変更されます。BEGIN DBMS_DATA_MINING.RENAME_MODEL( model_name => 'census_model', new_model_name => 'census_model_2012'); END; /
-
次の例には、ユーザーのスキーマに作業モデル
clas_mod
とテスト・モデルclas_mod_tst
の2つの分類モデルがあります。RENAME_MODEL
プロシージャは、clas_mod
をclas_mod_old
として保持し、テスト・モデルを新しい作業モデルにします。SELECT model_name FROM user_mining_models; MODEL_NAME ------------------------------------------------------------------- CLAS_MOD CLAS_MOD_TST BEGIN DBMS_DATA_MINING.RENAME_MODEL( model_name => 'clas_mod_tst', new_model_name => 'clas_mod', versioned_model_name => 'clas_mod_old'); END; / SELECT model_name FROM user_mining_models; MODEL_NAME ------------------------------------------------------------------- CLAS_MOD CLAS_MOD_OLD