27.4 例: 顧客データのセグメント化
この項の例では、期待値最大化クラスタリング・モデルを使用し、共通の特徴に基づいて顧客データをセグメント化します。
例27-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
例27-7 最大セグメントに含まれる可能性が最も高い顧客の検出
例27-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
例27-8 最大クラスタ内の代表的な顧客の主要な特徴の検出
例27-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>