32.3 例: 優良顧客の分析
この項の例では、アフィニティ・カードを使用する顧客またはアフィニティ・カードを使用しそうな顧客に関する情報がわかります。
例32-2 優良顧客に関する人口統計データ情報の検出
この問合せでは、典型的なアフィニティ・カード保有者の性別、年齢および居住期間が戻されます。異常検出モデル(SVMO_SH_Clas_sample)は、一般的なケースの場合には1
を、異常なケースの場合には0
を戻します。人口統計データは、典型的な顧客のみについて予測されます(外れ値はサンプルに含まれません)。このモデルはoml4sql-singular-value-decomposition.sql
の例で作成します。
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
例32-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.
例32-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
例32-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
アフィニティ所有の最上位の予測子を導き出すもう1つの方法は、属性評価マイニング機能を使用することです。最小記述長アルゴリズムを使用してモデルを作成します。mining_function
をATTRIBUTE_IMPORTANCE
として定義します。その後、DM$VA
モデル詳細ビューを問い合せて上位3つの予測子を取得できます。
BEGIN DBMS_DATA_MINING.DROP_MODEL('AI_EXPLAIN_OUTPUT');
EXCEPTION WHEN OTHERS THEN NULL; END;
/
DECLARE
v_setlst DBMS_DATA_MINING.SETTING_LIST;
BEGIN
v_setlst('ALGO_NAME') := 'ALGO_AI_MDL';
V_setlst('PREP_AUTO') := 'ON';
DBMS_DATA_MINING.CREATE_MODEL2(
MODEL_NAME => 'AI_EXPLAIN_OUTPUT',
MINING_FUNCTION => 'ATTRIBUTE_IMPORTANCE',
DATA_QUERY => 'select * from mining_data_test_v',
SET_LIST => v_setlst,
CASE_ID_COLUMN_NAME => 'CUST_ID',
TARGET_COLUMN_NAME => 'AFFINITY_CARD');
END;
Find the top 3 predictors from the DM$VA model detail view:
SELECT ATTRIBUTE_NAME, ATTRIBUTE_IMPORTANCE_VALUE, ATTRIBUTE_RANK FROM DM$VAAI_EXPLAIN_OUTPUT;
ATTRIBUTE_NAME ATTRIBUTE_IMPORTANCE_VALUE ATTRIBUTE_RANK
HOUSEHOLD_SIZE 0.16154338717879052 1
CUST_MARITAL_STATUS 0.1561477632217005 2
AGE 0.08440594628406521 3