1.3 例: 優良顧客の分析
この項の例では、アフィニティ・カードを使用する顧客またはアフィニティ・カードを使用しそうな顧客に関する情報がわかります。
例1-2 優良顧客に関する人口統計データ情報の検出
この問合せでは、典型的なアフィニティ・カード保有者の性別、年齢および居住期間が戻されます。異常検出モデル(SVMO_SH_Clas_sample)は、一般的なケースの場合には1を、異常なケースの場合には0を戻します。人口統計データは、典型的な顧客のみについて予測されます(外れ値はサンプルに含まれません)。
SELECT cust_gender, round(avg(age)) age,
round(avg(yrs_residence)) yrs_residence,
count(*) cnt
FROM mining_data_one_class_v
WHERE PREDICTION(SVMO_SH_Clas_sample using *) = 1
GROUP BY cust_gender
ORDER BY cust_gender;
CUST_GENDER AGE YRS_RESIDENCE CNT
------------ ---------- ------------- ----------
F 40 4 36
M 45 5 304例1-3 優良顧客と共通点のある顧客の動的な特定
この問合せでは、現在はアフィニティ・カードを持っていないが、アフィニティ・カード保有者と多くの特徴を共有する顧客を特定します。PREDICTION関数およびPREDICTION_PROBABILITY関数では、事前定義のモデルのかわりにOVER句を使用して顧客を分類します。予測と確率は動的に計算されます。
SELECT cust_id, pred_prob
FROM
(SELECT cust_id, affinity_card,
PREDICTION(FOR TO_CHAR(affinity_card) USING *) OVER () pred_card,
PREDICTION_PROBABILITY(FOR TO_CHAR(affinity_card),1 USING *) OVER () pred_prob
FROM mining_data_build_v)
WHERE affinity_card = 0
AND pred_card = 1
ORDER BY pred_prob DESC;
CUST_ID PRED_PROB
---------- ---------
102434 .96
102365 .96
102330 .96
101733 .95
102615 .94
102686 .94
102749 .93
.
.
.
.
102580 .52
102269 .52
102533 .51
101604 .51
101656 .51
226 rows selected.例1-4 新規顧客が優良顧客になる可能性の予測
この問合せでは、新規顧客が優良顧客(アフィニティ・カード保有者)になる確率を計算します。この問合せは、販売時にリアルタイムで実行できます。
新規顧客は、44歳のアメリカ人重役で、学士の学位を持ち、年収は$300,000です。結婚していて、3人家族で暮らしており、過去6年間同じ住宅に住んでいます。この顧客が典型的なアフィニティ・カード保有者になる確立はわずか5.8%です。
SELECT PREDICTION_PROBABILITY(SVMO_SH_Clas_sample, 1 USING
44 AS age,
6 AS yrs_residence,
'Bach.' AS education,
'Married' AS cust_marital_status,
'Exec.' AS occupation,
'United States of America' AS country_name,
'M' AS cust_gender,
'L: 300,000 and above' AS cust_income_level,
'3' AS houshold_size
) prob_typical
FROM DUAL;
PROB_TYPICAL
------------
5.8例1-5 予測分析を使用した最上位の予測子の検出
DBMS_PREDICTIVE_ANALYTICS PL/SQLパッケージには、事前定義のモデルなしで簡単なデータ・マイニング操作を実行するルーチンが含まれています。この例では、EXPLAINルーチンによって、アフィニティ・カードの所有に関する最上位の予測子が計算されます。結果には、世帯規模、未婚/既婚および年齢が、最上位となる3つの予測子であることが示されます。
BEGIN
DBMS_PREDICTIVE_ANALYTICS.EXPLAIN(
data_table_name => 'mining_data_test_v',
explain_column_name => 'affinity_card',
result_table_name => 'cust_explain_result');
END;
/
SELECT * FROM cust_explain_result
WHERE rank < 4;
ATTRIBUTE_NAME ATTRIBUTE_SUBNAME EXPLANATORY_VALUE RANK
------------------------ -------------------- ----------------- ----------
HOUSEHOLD_SIZE .209628541 1
CUST_MARITAL_STATUS .199794636 2
AGE .111683067 3