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_COSTPREDICTIONファンクションを組み合せて使用すると、予測とその予測のコストを取得できます。

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_clauseprediction_cost_ordered構文で使用することができません。

    order_by_clauseの詳細は、『Oracle Database SQL言語リファレンス』分析ファンクションに関する項を参照してください。

  • 分析構文: prediction_cost_analytic構文は、事前定義されたモデルなしでデータにスコアを付ける場合に使用します。分析構文では、mining_analytic_clauseを使用しますが、これは、複数のモデル構築のためにデータをパーティション化する必要があるかどうかを指定します。mining_analytic_clauseは、query_partition_clauseorder_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ユーザーズ・ガイド』付録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