44.16 PREDICTION_PROBABILITY

構文

prediction_probability::=

prediction_probability_ordered::=

分析構文

prediction_prob_analytic::=

mining_attribute_clause::=

mining_analytic_clause::=

関連項目:

mining_analytic_clauseの構文、セマンティクスおよび制限事項の詳細は、「分析ファンクション」を参照してください。

目的

PREDICTION_PROBABILITYは、選択内に含まれる各行の確率を返します。確率は、最も高確率のクラスまたは指定されたclassを参照します。返される確率のデータ型は、BINARY_DOUBLEです。

PREDICTION_PROBABILITYでは、分類または異常検出を実行できます。分類の場合、返される確率は予測されたターゲット・クラスを参照します。異常検出の場合、返される確率は分類1(通常の行)または0(異常な行)を参照します。

PREDICTION_PROBABILITYPREDICTIONファンクションを組み合せて使用すると、予測とその予測の確率を取得できます。

構文の選択

PREDICTION_PROBABILITYでは、データにマイニング・モデル・オブジェクトを適用してデータにスコアを付けるか、または1つ以上の一時マイニング・モデルを作成して適用する分析句を実行して動的にデータをマイニングすることができます。構文または分析構文を選択します。

  • 構文: prediction_probability構文は、事前に定義されたモデルでデータにスコアを付ける場合に使用します。分類または異常検出を実行するモデルの名前を指定します。

    prediction_probability_ordered構文は、MSET-SPRTモデルなど、順序付けされたデータを必要とするモデルに使用します。prediction_probability_ordered構文には、order_by_clause句が必要です。

    prediction_probability_ordered構文の制限事項は、問合せのWHERE句で使用できないことです。また、query_partition_clauseまたはwindowing_clauseprediction_probability_ordered構文で使用することができません。

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

  • 分析構文: 事前定義されたモデルなしで、データにスコアを付ける場合は、分析構文を使用します。分析構文は、mining_analytic_clauseを使用します。これは、複数のモデル構築のためにデータをパーティション化する必要がある場合に指定します。mining_analytic_clauseは、query_partition_clauseorder_by_clauseをサポートします。(analytic_clause::=を参照)

    • 分類の場合は、FOR exprを指定します。exprは、文字データ型のターゲット列を特定する式です。

    • 異常検出の場合は、キーワードOF ANOMALYを指定します。

PREDICTION_PROBABILITYファンクションの構文では、パーティション化されたモデルをスコアリングするときに、オプションの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
   FROM mining_data_apply_v
   WHERE country_name = 'Italy'
   ORDER BY PREDICTION_PROBABILITY(DT_SH_Clas_sample, 1 USING *)
      DESC, cust_id)
   WHERE rownum < 11;
 
   CUST_ID
----------
    100081
    100179
    100185
    100324
    100344
    100554
    100662
    100733
    101250
    101306

分析の例

この例では、mining_data_one_class_v内のデータで最も標準的でない行を特定します。婚姻区分の各種別が個別に考慮されるため、婚姻区分グループごとに最も異常な行が返されるようになります。

この問合せは、異常な行の判断に最も影響を与える属性を返します。PARTITION BY句により、婚姻区分ごとに構築され適用される個別のモデルが生成されます。区分がMabsentのレコードは1つのみであるため、そのパーティションに作成されるモデルはありません(詳細も表示されません)。

SELECT cust_id, cust_marital_status, rank_anom, anom_det FROM
    (SELECT cust_id, cust_marital_status, anom_det,
            rank() OVER (PARTITION BY CUST_MARITAL_STATUS
                         ORDER BY ANOM_PROB DESC,cust_id) rank_anom FROM
     (SELECT cust_id, cust_marital_status,
            PREDICTION_PROBABILITY(OF ANOMALY, 0 USING *)
              OVER (PARTITION BY CUST_MARITAL_STATUS) anom_prob,
            PREDICTION_DETAILS(OF ANOMALY, 0, 3 USING *)
              OVER (PARTITION BY CUST_MARITAL_STATUS) anom_det
     FROM mining_data_one_class_v
    ))
   WHERE rank_anom < 3 order by 2, 3;

CUST_ID CUST_MARITAL_STATUS RANK_ANOM  ANOM_DET
------- ------------------- ---------- -----------------------------------------------------------
102366  Divorc.             1          <Details algorithm="Support Vector Machines" class="0">
                                       <Attribute name="COUNTRY_NAME" actualValue="United Kingdom"
                                        weight=".069" rank="1"/>
                                       <Attribute name="AGE" actualValue="28" weight=".013"
                                        rank="2"/>
                                       <Attribute name="YRS_RESIDENCE" actualValue="4"
                                        weight=".006" rank="3"/>
                                       </Details>

101817  Divorc.             2          <Details algorithm="Support Vector Machines" class="0">
                                       <Attribute name="YRS_RESIDENCE" actualValue="8"
                                        weight=".018" rank="1"/>
                                       <Attribute name="EDUCATION" actualValue="PhD" weight=".007"
                                        rank="2"/>
                                       <Attribute name="CUST_INCOME_LEVEL" actualValue="K:
                                        250\,000 - 299\,999" weight=".006" rank="3"/>
                                       </Details>
 
101713  Mabsent             1
 
101790  Married             1          <Details algorithm="Support Vector Machines" class="0">
                                       <Attribute name="COUNTRY_NAME" actualValue="Canada"
                                        weight=".063" rank="1"/>
                                       <Attribute name="EDUCATION" actualValue="7th-8th"
                                        weight=".011" rank="2"/>
                                       <Attribute name="HOUSEHOLD_SIZE" actualValue="4-5"
                                        weight=".011" rank="3"/>
                                       </Details>
. . .