44.12 PREDICTION
構文
prediction::=
prediction_ordered::=
分析構文
prediction_analytic::=
cost_matrix_clause::=
mining_attribute_clause::=
mining_analytic_clause::=
関連項目:
query_partition_clause
およびorder_by_clause
の構文、セマンティクスおよび制限事項の詳細は、『Oracle Database SQL言語リファレンス』の分析ファンクションに関する項を参照してください。
目的
PREDICTION
は、選択内に含まれる各行の予測を返します。戻される予測のデータ型は、ファンクションが回帰、分類、異常検出のいずれを実行するかによって異なります。
-
回帰: 各行の予測されるターゲット値を戻します。戻り値のデータ型は、ターゲットのデータ型になります。
-
分類: 各行の最も確率の高いターゲット・クラス(または、コストが指定された場合は最もコストの低いターゲット・クラス)を戻します。戻り値のデータ型は、ターゲットのデータ型になります。
-
異常検出: 各行について
1
または0
を戻します。通常の行は1に分類されます。残りのデータと著しく異なる行は0に分類されます。
cost_matrix_clause
コストは、最も悪影響を及ぼす誤分類を最小化するためのバイアス係数です。分類または異常検出には、cost_matrix_clause
を指定できます。コストは、回帰には適していません。cost_matrix_clause
は、「PREDICTION_COST」で説明されているように動作します。
構文の選択
PREDICTION
では、データにマイニング・モデル・オブジェクトを適用してデータにスコアを付けるか、または1つ以上の一時マイニング・モデルを作成して適用する分析句を実行して動的にデータにスコアを付けることができます。構文または分析構文を選択します。
-
構文:
prediction
構文は、事前に定義されたモデルでデータにスコアを付ける場合に使用します。分類、回帰または異常検出を実行するモデルの名前を指定します。prediction_ordered
構文は、MSET-SPRTモデルなど、順序付けされたデータを必要とするモデルに使用します。prediction_ordered
構文には、order_by_clause
句が必要です。prediction_ordered
構文の制限事項は、問合せのWHERE
句で使用できないことです。また、query_partition_clause
またはwindowing_clause
をprediction_ordered
構文で使用することができません。order_by_clause
の詳細は、『Oracle Database SQL言語リファレンス』の分析ファンクションに関する項を参照してください。 -
分析構文:
prediction_analytic
構文は、事前定義されたモデルなしでデータにスコアを付ける場合に使用します。分析構文では、mining_analytic_clause
を使用しますが、これは、複数のモデル構築のためにデータをパーティション化する必要があるかどうかを指定します。mining_analytic_clause
は、query_partition_clause
とorder_by_clause
をサポートします。(『Oracle Database SQL言語リファレンス』の分析ファンクションに関する項の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
に含まれている属性がモデルの作成に使用した属性と同じ名前でデータ型が異なる場合、そのデータ型はモデルで想定されているデータ型に変換されます。 -
モデルの作成に使用した属性よりも多くの属性をスコアリングに指定すると、余分な属性は無視されます(エラーや警告は表示されません)。
-
モデルの作成に使用した属性よりも少ない属性を指定すると、最善の方法でスコアリングが実行されます。
-
関連項目:
-
スコアリングの詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』を参照してください。
-
Oracle Machine Learning for SQLの予測の詳細は、『Oracle Machine Learning for SQL概要』を参照してください。
-
PREDICTION
の戻り値が文字値の場合に、それに割り当てる照合を定義する照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
ノート:
次に示す各例は、Oracle Machine Learning for SQLの例からの抜粋です。この例の詳細は、『Oracle Machine Learning for SQLユーザーズ・ガイド』の付録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="< 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>