38.12 PREDICTION
構文
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_clause
とorder_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
に含まれている属性がモデルの作成に使用した属性と同じ名前でデータ型が異なる場合、そのデータ型はモデルが期待するデータ型に変換されます。 -
モデルの作成に使用した属性よりも多くの属性をスコアリングに指定すると、余分な属性は無視されます(エラーや警告は表示されません)。
-
モデルの作成に使用した属性よりも少ない属性を指定すると、最善の方法でスコアリングが実行されます。
-
関連項目:
-
スコアリングの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。
-
予測データ・マイニングの詳細は、『Oracle Data Mining概要』を参照してください。
-
PREDICTION
の戻り値が文字値である場合に、それに割り当てる照合を定義する照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
ノート:
次に示す例は、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="< 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>