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の指定内容は、次のとおりです。
-
COSTMODELは、モデルに関連付けられたコスト・マトリックスを考慮して、スコアリングする必要があることを示します。コスト・マトリックスが存在しない場合、このファンクションはエラーを返します。 -
COSTMODELAUTOは、コスト・マトリックスが存在するかどうか不明なことを示します。コスト・マトリックスが存在する場合、このファンクションはコスト・マトリックスを使用して、コストが最小の予測を返します。それ以外の場合、このファンクションは、最も高確率の予測を返します。 -
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構文を使用します。分類または異常検出を実行するモデルの名前を指定します。MSET-SPRTモデルなど、順序付けされたデータを必要とするモデルには、
prediction_cost_ordered構文を使用します。prediction_cost_ordered構文には、order_by_clause句が必要です。prediction_cost_ordered構文の制限事項は、問合せのWHERE句で使用できないことです。また、query_partition_clauseやwindowing_clauseをprediction_ordered構文とともに使用することはできません。 -
分析構文: 事前定義されたモデルなしで、データにスコアを付ける場合は、分析構文を使用します。分析構文は、
mining_analytic_clauseを使用します。これは、複数のモデル構築のためにデータをパーティション化する必要がある場合に指定します。mining_analytic_clauseは、query_partition_clauseとorder_by_clauseをサポートします。(「analytic_clause::=」を参照)-
分類の場合は、
FORexprを指定します。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




