44.14 PREDICTION_COST
構文
prediction_cost::=
prediction_cost_ordered::=
分析構文
prediction_cost_analytic::=
cost_matrix_clause::=
mining_attribute_clause::=
mining_analytic_clause::=
関連項目:
mining_analytic_clause
の構文、セマンティクスおよび制限事項の詳細は、分析ファンクションに関する項を参照してください。
目的
PREDICTION_COST
は、選択内に含まれる各行のコストを返します。コストは、最もコストが低いクラスまたは指定されたclass
を参照します。コストは、BINARY_DOUBLE
として返されます。
PREDICTION_COST
では、分類または異常検出を実行できます。分類の場合、返されるコストは予測されたターゲット・クラスを参照します。異常検出の場合、返されるコストは分類1
(通常の行)または0
(異常な行)を参照します。
PREDICTION_COST
とPREDICTION
ファンクションを組み合せて使用すると、予測とその予測のコストを取得できます。
cost_matrix_clause
コストは、最も悪影響を及ぼす誤分類を最小化するためのバイアス係数です。たとえば、偽陽性は、偽陰性よりもコストが高いとみなされることがあります。コストは、モデルに関連付けられるコスト・マトリックスで指定するか、VALUES
句にインラインで定義します。すべての分類アルゴリズムは、スコアリングに影響するようにコストを使用できます。
コストを使用してモデルの作成に影響を与えられるアルゴリズムは、デシジョン・ツリーのみです。デシジョン・ツリー・モデルの作成に使用したコスト・マトリックスは、そのモデルに対するデフォルトのスコアリング・マトリックスにもなります。
次のコスト・マトリックス表では、1
に誤分類すると、0
に誤分類するよりもコストが5倍かかることを示しています。
ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE COST ------------------- ---------------------- ---------- 0 0 0 0 1 1 1 0 5 1 1 0
cost_matrix_clause
の指定内容は、次のとおりです。
-
COST
MODEL
は、モデルに関連付けられたコスト・マトリックスを考慮して、スコアリングする必要があることを示します。コスト・マトリックスが存在しない場合、このファンクションはエラーを返します。 -
COST
MODEL
AUTO
は、コスト・マトリックスが存在するかどうか不明なことを示します。コスト・マトリックスが存在する場合、このファンクションはコスト・マトリックスを使用して、コストが最小の予測を返します。それ以外の場合、このファンクションは、最も高確率の予測を返します。 -
VALUES
句では、class_value
にインラインのコスト・マトリックスを指定します。たとえば、1
に誤分類すると、0
に誤分類するよりも5倍コストがかかることを、次のように指定できます。PREDICTION (nb_model COST (0,1) VALUES ((0, 1),(1, 5)) USING *)
スコアリングのコスト・マトリックスがあるモデルを起動するときに、インラインのコスト・マトリックスを指定すると、インラインのコスト・マトリックスが使用されます。
関連項目:
コスト考慮型予測の詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください。
構文の選択
PREDICTION_COST
では、データにマイニング・モデル・オブジェクトを適用してデータにスコアを付けるか、または1つ以上の一時マイニング・モデルを作成して適用する分析句を実行して動的にデータをマイニングすることができます。構文または分析構文を選択します。
-
構文:
prediction_cost
構文は、事前に定義されたモデルでデータにスコアを付ける場合に使用します。分類または異常検出を実行するモデルの名前を指定します。prediction_cost_ordered
構文は、MSET-SPRTモデルなど、順序付けされたデータを必要とするモデルに使用します。prediction_cost_ordered
構文には、order_by_clause
句が必要です。prediction_cost_ordered
構文の制限事項は、問合せのWHERE
句で使用できないことです。また、query_partition_clause
またはwindowing_clause
をprediction_cost_ordered
構文で使用することができません。order_by_clause
の詳細は、『Oracle Database SQL言語リファレンス』の分析ファンクションに関する項を参照してください。 -
分析構文:
prediction_cost_analytic
構文は、事前定義されたモデルなしでデータにスコアを付ける場合に使用します。分析構文では、mining_analytic_clause
を使用しますが、これは、複数のモデル構築のためにデータをパーティション化する必要があるかどうかを指定します。mining_analytic_clause
は、query_partition_clause
とorder_by_clause
をサポートします。(『Oracle Database SQL言語リファレンス』の分析ファンクションに関する項のanalytic_clause
を参照してください。)-
分類の場合は、
FOR
expr
を指定します。expr
は、文字データ型のターゲット列を特定する式です。 -
異常検出の場合は、キーワード
OF ANOMALY
を指定します。
-
PREDICTION_COST
ファンクションの構文では、パーティション化されたモデルをスコアリングするときに、オプションのGROUPING
ヒントを使用できます。「GROUPINGヒント」を参照してください。
mining_attribute_clause
mining_attribute_clause
は、スコアの予測子として使用する列の属性を特定します。このファンクションが分析構文で起動された場合は、これらの予測子が一時モデルの構築にも使用されます。mining_attribute_clause
は、PREDICTION
ファンクションと同様に動作します。(「mining_attribute_clause」を参照。)
関連項目:
-
スコアリングの詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください。
-
コストによる分類の詳細は、『Oracle Machine Learning for SQL概要』を参照してください
ノート:
次に示す例は、Oracle Machine Learning for SQLの例からの抜粋です。この例の詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』の付録Aを参照してください。
例
この例では、最もコストの低い販売キャンペーン(提携カードの売込み)に反応する可能性があるイタリア在住の顧客を10人予測します。
SELECT cust_id FROM (SELECT cust_id,rank() OVER (ORDER BY PREDICTION_COST(DT_SH_Clas_sample, 1 COST MODEL USING *) ASC, cust_id) rnk FROM mining_data_apply_v WHERE country_name = 'Italy') WHERE rnk <= 10 ORDER BY rnk; CUST_ID ---------- 100081 100179 100185 100324 100344 100554 100662 100733 101250 101306