본문 바로가기

[오라클 레퍼런스 함수] PREDICTION - 예측 결과 반환

by ㅇㅍㅍ 2023. 8. 13.
[오라클 레퍼런스 함수] PREDICTION - 예측 결과 반환
728x90

 

PREDICTION

 

구문

PREDICTION ( [ grouping_hint ] [ schema . ] model
  [ cost_matrix_clause ] mining_attribute_clause )

 

분석 구문

PREDICTION ( ( OF ANOMALY | FOR expr ) [ cost_matrix_clause ] mining_attribute_clause )
           OVER ( mining_analytic_clause )

 

cost_matrix_clause::=

COST
  { MODEL [AUTO]
  | ( class_value [, class_value]... )
        VALUES ( ( cost_value [, cost_value]...) 
                 [ , (cost_value [, cost_value]... ) ]...
               )
  }

 

mining_attribute_clause::=

USING
{ * 
| { [ schema . ] table . * 
  | expr [ AS alias ]
  }
    [, { [ schema . ] table . * 
       | expr [ AS alias ]
       }
    ]...
}

 

mining_analytic_clause::=

[ query_partition_clause ] [ order_by_clause ]

 

참고:

mining_analytic_clause에 대한 구문, 의미, 그리고 제한 사항에 대한 정보는 Analytic Functions에 대한 내용을 참조하세요.

 

목적

PREDICTION 함수는 선택된 각 행에 대해 예측(prediction)을 반환합니다. 반환된 예측의 데이터 유형은 함수가 회귀(Regression), 분류(Classification) 또는 이상 탐지(Anomaly Detection)를 수행하는 방식에 따라 다릅니다.

 

  • 회귀(Regression): 각 행에 대한 예상 타깃 값이 반환됩니다. 반환 값의 데이터 유형은 타깃의 데이터 유형입니다.
  • 분류(Classification): 각 행에 대해 가장 가능성 있는 타깃 클래스(또는 비용이 지정된 경우 가장 낮은 비용의 타깃 클래스)가 반환됩니다. 반환 값의 데이터 유형은 타깃의 데이터 유형입니다.
  • 이상 탐지(Anomaly Detection): 각 행에 대해 1 또는 0이 반환됩니다. 일반적인 행은 1로 분류됩니다. 데이터의 나머지와 현저하게 다른 행은 0으로 분류됩니다.

 

cost_matrix_clause

비용은 가장 유해한 종류의 잘못된 분류를 최소화하는 데에 영향을 미치는 요인입니다. cost_matrix_clause를 분류(Classification) 또는 이상 탐지(Anomaly Detection)에 대해 지정할 수 있습니다. 비용은 회귀(Regression)에는 관련이 없습니다. cost_matrix_clause는 "PREDICTION_COST"에 설명된대로 동작합니다.

 

구문 선택(Syntax Choice)

PREDICTION은 데이터를 스코어링하는 두 가지 방법 중 하나를 적용할 수 있습니다: 데이터에 데이터 마이닝 모델 객체를 적용하거나, 분석 절을 실행하여 하나 이상의 일시적인 데이터 마이닝 모델을 구축하고 적용할 수 있습니다. 구문 또는 분석 구문 선택:

 

  • 구문: 사전 정의된 모델로 데이터를 스코어링하는 데에 이 구문을 사용합니다. 분류(Classification), 회귀(Regression), 또는 이상 탐지(Anomaly Detection)를 수행하는 모델의 이름을 제공합니다.
  • 분석 구문: 사전 정의된 모델 없이 데이터를 스코어링하는 데에 분석 구문을 사용합니다. 분석 구문은 mining_analytic_clause를 사용하며, 이는 데이터가 여러 모델 빌드를 위해 파티션화되어야 하는지를 지정합니다. mining_analytic_clausequery_partition_clauseorder_by_clause를 지원합니다. (참조: "analytic_clause::=")
    º 회귀(Regression)의 경우, expr은 숫자 데이터 유형을 가진 대상 열을 식별하는 표현식인 FOR expr을 지정합니다.
    º 분류(Classification)의 경우, expr은 문자 데이터 유형을 가진 대상 열을 식별하는 표현식인 FOR expr을 지정합니다.
    º 이상 탐지(Anomaly Detection)의 경우, OF ANOMALY 키워드를 지정합니다.

PREDICTION 함수의 구문은 파티션된 모델을 스코어링할 때 선택적인 GROUPING 힌트를 사용할 수 있습니다. GROUPING Hint를 참조하세요.

 

mining_attribute_clause

mining_attribute_clause는 스코어링에 사용할 열 속성을 식별합니다.

  • 만약 USING *을 지정하면, 입력 행에 있는 모든 관련 속성이 사용됩니다.
  • 함수를 분석 구문으로 호출하는 경우, mining_attribute_clause는 일시적인 모델을 구축하고 스코어링하는 데에 모두 사용됩니다.
  • 미리 정의된 모델로 함수를 호출하는 경우, mining_attribute_clause에는 모델 생성에 사용된 모든 속성 중 일부 또는 모든 속성을 포함해야 합니다. 다음 조건이 적용됩니다:
    º mining_attribute_clause가 모델 생성에 사용된 속성과 동일한 이름이지만 다른 데이터 유형의 속성을 포함하는 경우, 데이터 유형은 모델에서 기대하는 유형으로 변환됩니다.
    º 모델 생성에 사용된 것보다 스코어링에 더 많은 속성을 지정한 경우, 추가 속성은 조용히 무시됩니다.
    º 모델 생성에 사용된 것보다 스코어링에 더 적은 속성을 지정한 경우, 최선을 다해 스코어링이 수행됩니다.

 

참고:

 

노트: 다음 예제는 데이터 마이닝 샘플 프로그램에서 발췌되었습니다. 샘플 프로그램에 대한 자세한 정보는 Oracle Data Mining User's Guide의 별첨 A를 참조하십시오.

 

예제

이 예제에서는 모델 dt_sh_clas_sample이 제휴(affinity) 카드(target = 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

 

분석 예제

이 예시에서는 동적 회귀(dynamic regression)를 사용하여 친화 카드를 사용할 가능성이 있는 고객들의 나이를 예측합니다. 이 쿼리는 예측된 나이가 실제와 가장 다른 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>

 


출처: 오라클 레퍼런스

원문 링크: Oracle PREDICTION 함수 문서

 

반응형

댓글