5.7 DBMS_DATA_MINING.APPLY
DBMS_DATA_MININGのAPPLYプロシージャは、スコアリングの結果を表に直接書き込むバッチでの適用操作です。
               
この表の列は、機械学習機能によって異なります。
APPLYによるスコアリングでは、SQLスコアリング関数によるスコアリングと同じ結果が生成されます。たとえば、分類では各ケースの予測と確率が生成され、クラスタリングでは各ケースのクラスタIDと確率が生成されます。異なっているのは、スコアリング結果の取得方法と、その取得に使用できるメカニズムです。
               
APPLYによって作成される出力表の列を次の表に示します。
               
表5-2 APPLY出力表
| 機械学習手法 | 出力列 | 
|---|---|
| 分類 | 
 
 
 | 
| 回帰 | 
 
 | 
| 異常検出 | 
 
 
 | 
| クラスタリング | 
 
 
 | 
| 特徴抽出 | 
 
 
 | 
APPLYの出力はスコアリング・データとは別に保存されるため、スコアリング結果の行を含めた問合せをサポートするには、出力とスコアリング・データを結合する必要があります。したがって、APPLYで使用されるモデルにはケースIDが必要となります。
               
ケースIDは、SQLスコアリング関数で適用されるモデルには不要です。同様に、スコアリング結果はSQL問合せ内でリアルタイムに生成および使用されるため、保存や結合も不要です。
次の例は、APPLYによる異常検出を示しています。このAPPLY出力表の問合せは、表の最初の10名の顧客を戻します。各顧客について、典型的(1)または異常(0)である確率が示されます。SVMO_SH_Clas_sampleモデルは、oml4sql-anomaly-detection-1class-svm.sqlの例によって作成されます。
               
例5-15 DBMS_DATA_MINING.APPLYを使用した異常検出
EXEC dbms_data_mining.apply
        ('SVMO_SH_Clas_sample','svmo_sh_sample_prepared', 
         'cust_id', 'one_class_output'); 
SELECT * from one_class_output where rownum < 11;
                  出力内容は次のようになります。
 
   CUST_ID PREDICTION PROBABILITY
---------- ---------- -----------
    101798          1  .567389309
    101798          0  .432610691
    102276          1  .564922469
    102276          0  .435077531
    102404          1   .51213544
    102404          0   .48786456
    101891          1  .563474346
    101891          0  .436525654
    102815          0  .500663683
    102815          1  .499336317