1.4 例: 顧客データのセグメント化
この項の例では、期待値最大化クラスタリング・モデルを使用し、共通の特徴に基づいて顧客データをセグメント化します。
例1-6 顧客セグメントの計算
この問合せでは、顧客の自然なグループが計算され、各グループの顧客数が戻されます。
SELECT CLUSTER_ID(em_sh_clus_sample USING *) AS clus, COUNT(*) AS cnt FROM mining_data_apply_v GROUP BY CLUSTER_ID(em_sh_clus_sample USING *) ORDER BY cnt DESC; CLUS CNT ---------- ---------- 9 311 3 294 7 215 12 201 17 123 16 114 14 86 19 64 15 56 18 36
例1-7 最大セグメントに含まれる可能性が最も高い顧客の検出
例1-6の問合せは、セグメント9が最も多くの顧客を含むことを示しています。次の問合せでは、セグメント9に含まれる可能性が最も高い5人の顧客がリストされます。
SELECT cust_id
FROM (SELECT cust_id, RANK() over (ORDER BY prob DESC, cust_id) rnk_clus2
FROM (SELECT cust_id,
ROUND(CLUSTER_PROBABILITY(em_sh_clus_sample, 9 USING *),3) prob
FROM mining_data_apply_v))
WHERE rnk_clus2 <= 5
ORDER BY rnk_clus2;
CUST_ID
----------
100002
100012
100016
100019
100021例1-8 最大クラスタ内の代表的な顧客の主要な特徴の検出
例1-7の問合せでは、セグメント9に含まれる可能性が高い顧客のリストの最初に顧客100002が挙げられています。次の問合せでは、20%を超える確率で顧客100002のセグメントへの割当てを判断した場合に(この顧客の場合はセグメント9のみ)、最も重要な5つの特徴を戻します。
SELECT S.cluster_id, probability prob,
CLUSTER_DETAILS(em_sh_clus_sample, S.cluster_id, 5 using T.*) det
FROM
(SELECT v.*, CLUSTER_SET(em_sh_clus_sample, NULL, 0.2 USING *) pset
FROM mining_data_apply_v v
WHERE cust_id = 100002) T,
TABLE(T.pset) S
ORDER BY 2 desc;
CLUSTER_ID PROB DET
---------- ------- --------------------------------------------------------------------------------
9 1.0000 <Details algorithm="Expectation Maximization" cluster="9">
<Attribute name="YRS_RESIDENCE" actualValue="4" weight="1" rank="1"/>
<Attribute name="EDUCATION" actualValue="Bach." weight="0" rank="2"/>
<Attribute name="AFFINITY_CARD" actualValue="0" weight="0" rank="3"/>
<Attribute name="BOOKKEEPING_APPLICATION" actualValue="1" weight="0" rank="4"/>
<Attribute name="Y_BOX_GAMES" actualValue="0" weight="0" rank="5"/>
</Details>