38.12 PREDICTION

構文

分析構文

prediction_analytic::=

cost_matrix_clause::=

mining_attribute_clause::=

mining_analytic_clause::=

関連項目:

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

目的

PREDICTIONは、選択内に含まれる各行の予測を返します。戻される予測のデータ型は、ファンクションが回帰、分類、異常検出のいずれを実行するかによって異なります。

  • 回帰: 各行の予測されるターゲット値を戻します。戻り値のデータ型は、ターゲットのデータ型になります。

  • 分類: 各行の最も確率の高いターゲット・クラス(または、コストが指定された場合は最もコストの低いターゲット・クラス)を戻します。戻り値のデータ型は、ターゲットのデータ型になります。

  • 異常検出: 各行について1または0を戻します。通常の行は1に分類されます。残りのデータと著しく異なる行は0に分類されます。

cost_matrix_clause

コストは、最も悪影響を及ぼす誤分類を最小化するためのバイアス係数です。分類または異常検出には、cost_matrix_clauseを指定できます。コストは、回帰には適していません。cost_matrix_clauseは、PREDICTION COSTで説明されているように動作します。

構文の選択

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

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

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

    • 回帰の場合は、FOR exprを指定します。exprは、数値データ型のターゲット列を特定する式です。

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

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

PREDICTIONファンクションの構文では、パーティション化されたモデルをスコアリングするときに、オプションのGROUPINGヒントを使用できます。「GROUPINGヒント」を参照してください。

mining_attribute_clause

mining_attribute_clauseは、スコアの予測子として使用する列の属性を特定します。

  • USING *を指定すると、入力行に存在するすべての関連属性が使用されます。

  • このファンクションを解析構文で起動すると、一時モデルの作成とスコアリングの両方にmining_attribute_clauseが使用されます。

  • 事前に定義されたモデルを指定してこのファンクションを起動するときには、そのモデルの作成に使用したすべて(または一部)の属性をmining_attribute_clauseに含める必要があります。次の条件が適用されます。

    • mining_attribute_clauseに含まれている属性がモデルの作成に使用した属性と同じ名前でデータ型が異なる場合、そのデータ型はモデルが期待するデータ型に変換されます。

    • モデルの作成に使用した属性よりも多くの属性をスコアリングに指定すると、余分な属性は無視されます(エラーや警告は表示されません)。

    • モデルの作成に使用した属性よりも少ない属性を指定すると、最善の方法でスコアリングが実行されます。

関連項目:

ノート:

次に示す例は、Data Miningのサンプル・プログラムからの抜粋です。サンプル・プログラムの詳細は、Oracle Data Miningユーザーズ・ガイドの「付録A」を参照してください。

この例では、提携カードを使用することが最も多い顧客の性別と年齢を、モデルdt_sh_clas_sampleで予測します(ターゲット=1)。PREDICTIONファンクションは、コスト・マトリックスを考慮に入れ、婚姻区分、学歴、および世帯人数を予測子として使用します。

SELECT cust_gender, COUNT(*) AS cnt, ROUND(AVG(age)) AS avg_age
   FROM mining_data_apply_v
   WHERE PREDICTION(dt_sh_clas_sample COST MODEL
      USING cust_marital_status, education, household_size) = 1
   GROUP BY cust_gender
   ORDER BY cust_gender;
   
CUST_GENDER         CNT    AVG_AGE
------------ ---------- ----------
F                   170         38
M                   685         42

モデルdt_sh_clas_sampleに関連付けられたコスト・マトリックスは、表dt_sh_sample_costsに保存されます。次のコスト・マトリックス表では、1に誤分類すると0に誤分類するよりも8倍コストがかかることを示しています。

SQL> select * from dt_sh_sample_cost;
 
ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE         COST
------------------- ---------------------- ------------
                  0                      0   .000000000
                  0                      1  1.000000000
                  1                      0  8.000000000
                  1                      1   .000000000

分析の例

この例では、動的回帰を使用して、提携カードを使用する可能性がある顧客の年齢を予測します。この問合せは、予測された年齢が実際とは最も異なる3件の顧客を返します。この問合せには、予測に最も影響する予測子の情報が含まれています。

SELECT cust_id, age, pred_age, age-pred_age age_diff, pred_det FROM
   (SELECT cust_id, age, pred_age, pred_det,
          RANK() OVER (ORDER BY ABS(age-pred_age) desc) rnk FROM
   (SELECT cust_id, age,
           PREDICTION(FOR age USING *) OVER () pred_age,
           PREDICTION_DETAILS(FOR age ABS USING *) OVER () pred_det
    FROM mining_data_apply_v))
  WHERE rnk <= 3;
 
CUST_ID  AGE PRED_AGE AGE_DIFF PRED_DET
------- ---- -------- -------- -------- ----------------------------------------------------------
 100910   80    40.67    39.33 <Details algorithm="Support Vector Machines">
                               <Attribute name="HOME_THEATER_PACKAGE" actualValue="1" weight=".059"
                                rank="1"/>
                               <Attribute name="Y_BOX_GAMES" actualValue="0" weight=".059"
                                rank="2"/>
                               <Attribute name="AFFINITY_CARD" actualValue="0" weight=".059"
                                rank="3"/>
                               <Attribute name="FLAT_PANEL_MONITOR" actualValue="1" weight=".059"
                                rank="4"/>
                               <Attribute name="YRS_RESIDENCE" actualValue="4" weight=".059"
                                rank="5"/>
                               </Details>
 
 101285    79   42.18    36.82 <Details algorithm="Support Vector Machines">
                               <Attribute name="HOME_THEATER_PACKAGE" actualValue="1" weight=".059"
                                rank="1"/>
                               <Attribute name="HOUSEHOLD_SIZE" actualValue="2" weight=".059"
                                rank="2"/>
                               <Attribute name="CUST_MARITAL_STATUS" actualValue="Mabsent"
                                weight=".059" rank="3"/>
                               <Attribute name="Y_BOX_GAMES" actualValue="0" weight=".059"
                                rank="4"/>
                               <Attribute name="OCCUPATION" actualValue="Prof." weight=".059"
                                rank="5"/>
                               </Details>
 
 100694     77  41.04    35.96 <Details algorithm="Support Vector Machines">
                               <Attribute name="HOME_THEATER_PACKAGE" actualValue="1" weight=".059"
                                rank="1"/>
                               <Attribute name="EDUCATION" actualValue="&lt; Bach." weight=".059"
                                rank="2"/>
                               <Attribute name="Y_BOX_GAMES" actualValue="0" weight=".059"
                                rank="3"/>
                               <Attribute name="CUST_ID" actualValue="100694" weight=".059"
                                rank="4"/>
                               <Attribute name="COUNTRY_NAME" actualValue="United States of
                                America" weight=".059" rank="5"/>
                               </Details>