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_clause는 query_partition_clause와 order_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가 모델 생성에 사용된 속성과 동일한 이름이지만 다른 데이터 유형의 속성을 포함하는 경우, 데이터 유형은 모델에서 기대하는 유형으로 변환됩니다.
º 모델 생성에 사용된 것보다 스코어링에 더 많은 속성을 지정한 경우, 추가 속성은 조용히 무시됩니다.
º 모델 생성에 사용된 것보다 스코어링에 더 적은 속성을 지정한 경우, 최선을 다해 스코어링이 수행됩니다.
참고:
- 스코어링(scoring)에 관한 정보는 Oracle Data Mining User's Guide에서 확인할 수 있습니다.
- 예측 데이터 마이닝(predictive data mining)에 관한 정보는 Oracle Data Mining Concepts에서 확인할 수 있습니다.
- Oracle Database Globalization Support Guide의 부록 C는 문자 값인 경우 PREDICTION의 반환 값에 할당된 정렬 파생 규칙(collation derivation rules)에 대한 정보를 제공합니다.
노트: 다음 예제는 데이터 마이닝 샘플 프로그램에서 발췌되었습니다. 샘플 프로그램에 대한 자세한 정보는 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="< 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 함수 문서
'코딩 > 오라클 함수' 카테고리의 다른 글
[오라클 레퍼런스 함수] PREDICTION_COST - 예측 비용(Cost) 결과 반환 (0) | 2023.08.13 |
---|---|
[오라클 레퍼런스 함수] PREDICTION_BOUNDS - 예측의 범위(상한, 하한) 반환 (0) | 2023.08.13 |
[오라클 레퍼런스 함수] POWERMULTISET_BY_CARDINALITY - 특정 기수(cardinality)의 중첩 테이블을 반환 (0) | 2023.08.13 |
[오라클 레퍼런스 함수] POWERMULTISET - 중첩 테이블의 모든 비어있지 않은 하위 집합 반환 (0) | 2023.08.12 |
[오라클 레퍼런스 함수] POWER - n제곱 계산 (0) | 2023.08.12 |
댓글