數(shù)據(jù)背景
- 來源:阿里移動推薦算法
- 背景:2014年是阿里巴巴集團(tuán)移動電商業(yè)務(wù)快速發(fā)展的一年镜沽,例如2014雙11大促中移動端成交占比達(dá)到42.6%,超過240億元帝际。相比PC時代锈死,移動端網(wǎng)絡(luò)的訪問是隨時隨地的庆械,具有更豐富的場景數(shù)據(jù),比如用戶的位置信息、用戶訪問的時間規(guī)律等碌廓。
- 這個比賽的目的是:要使用訓(xùn)練數(shù)據(jù)(2014年11月18日至2014年12月18日)建立推薦模型,并輸出用戶在接下來一天(2014年12月19日)對商品子集購買行為的預(yù)測結(jié)果背传。
- 而我的目標(biāo)則是從該數(shù)據(jù)進(jìn)行隨機(jī)抽樣呆瞻,并用mysql進(jìn)行分析,提高自己對電商指標(biāo)體系的認(rèn)識径玖。
數(shù)據(jù)詳情
tianchi_mobile_recommend_train_user命名為USER表:
- user_id痴脾, 用戶標(biāo)識, 抽樣&字段脫敏
- item_id梳星, 商品標(biāo)識赞赖, 字段脫敏
- behavior_type顽爹, 用戶對商品的行為類型界睁, 包括瀏覽(1)、收藏(2)封孙、加購物車(3)韵吨、購買(4)
- user_geohash, 用戶位置的空間標(biāo)識匿垄,可以為空, 由經(jīng)緯度通過保密的算法生成
- item_category, 商品分類標(biāo)識, 字段脫敏
- time, 行為時間, 精確到小時級別
提出問題
- 分析用戶使用APP過程中的常用電商指標(biāo),了解運營現(xiàn)狀归粉,查看各個環(huán)節(jié)的流失率年堆,并找到需要改進(jìn)的環(huán)節(jié)。
- 研究用戶在不同維度下的行為規(guī)律盏浇,了解用戶行為特征变丧,優(yōu)化運營策略。
- 研究用戶的價值绢掰、針對不同價值的用戶進(jìn)行精細(xì)化運營
- 研究用戶生命周期痒蓬,針對不同周期的用戶采取不同的策略
電商指標(biāo)
我對電商指標(biāo)的理解,是基于六個維度的:
- 用戶
- 商品
- 商品類別
- 用戶行為
- 行為地址
- 時間
基于用戶和商品滴劲、商品類別可以分析用戶整體的購買偏好攻晒。
基于用戶和用戶行為可以分析PV、UV班挖、PV/UV鲁捏、跳失率、總訂單量萧芙、用戶行為之間的轉(zhuǎn)化率等给梅。
基于用戶和時間可以分析用戶購買的時間偏好。
基于商品類別和用戶行為可以分析不同商品類別的轉(zhuǎn)化率的差異双揪。
基于商品類別和時間可以分析不同商品類別的熱銷時間段动羽。
基于用戶行為和時間可以分析用戶的行為特征。
基于時間和別的字段渔期,結(jié)合RFM模型可以給用戶價值打標(biāo)簽运吓。
基于AARRR模型渴邦,可以分析用戶的生命周期,劃分不同用戶所處的周期階段拘哨。
數(shù)據(jù)的導(dǎo)入及清洗
將csv導(dǎo)入mysql的方法:
- 命令行:關(guān)于如何使用命令提示符將CSV文件導(dǎo)入MySQL
- python:將大csv文件導(dǎo)入mysql數(shù)據(jù)庫
下面的實例用python抽取100000條數(shù)據(jù)谋梭,并導(dǎo)入mysql的數(shù)據(jù)庫:taobao。
from sqlalchemy import create_engine
import pandas as pd
import pymysql
import numpy as np
#讀取數(shù)據(jù)
data = pd.read_csv('user.csv',encoding = 'gbk')
data = data.sample(n=1000000)
#創(chuàng)建連接數(shù)據(jù)庫對象
engine = create_engine('mysql+pymysql://用戶名:密碼@localhost/數(shù)據(jù)庫名?charset=utf8')
#存入數(shù)據(jù)庫
data.to_sql('數(shù)據(jù)庫表名字',engine)
清除空值
數(shù)據(jù)介紹中說明只有user_geohash中存在空值(非空比例在35%左右)且經(jīng)過加密處理倦青,無法對該字段進(jìn)行分析章蚣,因此,直接刪除處理姨夹。
#查看user_geohash字段的非空比例
SELECT COUNT(u.`user_geohash`)/(SELECT COUNT(*) FROM USER) AS 'user_geohash字段的非空比例'
FROM USER AS u
WHERE u.`user_geohash` IS NOT NULL;
#由于這列存在大量的空值且經(jīng)過加密處理,故刪除此列
ALTER TABLE USER DROP COLUMN user_geohash;
查找重復(fù)數(shù)據(jù)
這里的數(shù)據(jù)有重復(fù)值也是可以理解的矾策,因為記錄行為的最小粒度為小時磷账,同一用戶同一個行為在同一小時內(nèi)是可能存在多次的,因此這里不去重處理贾虽。
SELECT *, COUNT(*)
FROM USER AS u
GROUP BY u.`user_id`, u.`item_id`, u.`behavior_type`, u.`time`
HAVING COUNT(*) > 1;
查看數(shù)據(jù)是否存在異常
檢查數(shù)據(jù)的時間范圍和行為數(shù)據(jù)的類別是否為4個即可逃糟。
# 檢查時間是否異常
SELECT MIN(u.`time`) AS '時間起點', MAX(u.`time`) AS '時間終點'
FROM USER AS u;
# 檢查用戶行為類別是否異常
SELECT DISTINCT u.`behavior_type`
FROM USER AS u;
缺失值檢查
# 檢查缺失值
SELECT COUNT(u.`user_id`),
COUNT(u.`item_id`),
COUNT(u.`item_category`),
COUNT(u.`behavior_type`),
COUNT(u.`time`)
FROM USER AS u
進(jìn)一步處理
- 將日期和時間進(jìn)行分離
#添加列:alter table 表名 add column 列名 varchar(30);
ALTER TABLE USER ADD COLUMN `date` VARCHAR(20) NOT NULL AFTER `time`;
#更新列:UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]
UPDATE USER
SET DATE = TIME;
#將date轉(zhuǎn)為年月日
UPDATE USER
SET DATE = DATE_FORMAT(DATE, '%Y-%m-%d');
#將time轉(zhuǎn)為小時
UPDATE USER
SET TIME = DATE_FORMAT(TIME, '%H');
#檢查一下轉(zhuǎn)化結(jié)果
SELECT *
FROM USER AS u
- 將用戶行為數(shù)據(jù)進(jìn)行替換: 1:pv 2:fav 3:cart 4:buy
UPDATE USER
SET `behavior_type` = (CASE behavior_type
WHEN 1 THEN "pv"
WHEN 2 THEN "fav"
WHEN 3 THEN "cart"
WHEN 4 THEN "buy"
ELSE "other"
END);
感覺寫的沒問題但是一直報錯,查了一下stackoverflow發(fā)現(xiàn)原來py導(dǎo)入蓬豁,各字段的格式并不是我們想要的格式绰咽,需要進(jìn)行修改。注意:字段的類型一般不要修改地粪,一定要謹(jǐn)慎取募。
DESC USER;
#alter table 表名 modify column 字段名 類型;
ALTER TABLE USER MODIFY COLUMN behavior_type VARCHAR(20);
驗證結(jié)果
SELECT *
FROM USER AS u;
指標(biāo)的構(gòu)建
1. 總體運營指標(biāo)
① 流量指標(biāo)
- 計算頁面訪客數(shù)(pv)、獨立訪客數(shù)(uv)蟆技、人均點擊數(shù)(uv/pv)
# uv pv pv\uv
SELECT COUNT(u.`user_id`) AS 'pv',
COUNT(DISTINCT u.`user_id`) AS 'uv',
COUNT(u.`user_id`)/COUNT(DISTINCT u.`user_id`) AS 'pv\uv',
COUNT(u.`user_id`)/(COUNT(DISTINCT u.`user_id`)*30) AS '日人均點擊次數(shù)'
FROM USER AS u
WHERE u.`behavior_type` = 'pv';
- 頁面訪客:942253次玩敏、獨立訪客數(shù):9922位、人均點擊次數(shù)95次质礼。
95/30≈3.2次旺聚,日人均點擊次數(shù)大概為3次/人/天
②每日流量指標(biāo)變化趨勢
# 計算每天的uv pv pv\uv
SELECT u.date AS '日期',
COUNT(u.`user_id`) AS 'pv',
COUNT(DISTINCT u.`user_id`) AS 'uv',
COUNT(u.`user_id`)/COUNT(DISTINCT u.`user_id`) AS '人均頁面訪問數(shù)'
FROM USER AS u
WHERE u.`behavior_type` = 'pv'
GROUP BY u.date
ORDER BY u.date ASC;
導(dǎo)出數(shù)據(jù)
# 后邊加
INTO OUTFILE '/daily_uvpv.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
需要更改配置什么的,一般情況下是不會存在導(dǎo)出數(shù)據(jù)的眶蕉,因此砰粹,直接用sqluog的導(dǎo)出功能了。
-
可視化分析趨勢
pv造挽、uv指標(biāo)呈正相關(guān)性碱璃;
三個指標(biāo)在大部分時間走勢是穩(wěn)定的,從2014-12-11開始上升饭入,到2014-12-12達(dá)到峰值厘贼,2014-12-13結(jié)束回到正常水平。
雙十二活動的影響無疑是明顯的圣拄。
- AARRR漏斗轉(zhuǎn)化率
①計算每個用戶行為的pv
# 用戶行為的pv
SELECT u.`behavior_type`, COUNT(u.`behavior_type`) AS 'behavior_count'
FROM USER AS u
GROUP BY u.`behavior_type`
ORDER BY behavior_count DESC;
由于在購物環(huán)節(jié)中嘴秸,收藏和加入購物車是沒有先后之分的,這兩個環(huán)節(jié)可以放在一起,因此轉(zhuǎn)化率只有瀏覽-加入購物車/收藏岳掐、 收藏-購買凭疮。
從轉(zhuǎn)化率來看:瀏覽-收藏/加入購物車的轉(zhuǎn)化率僅為5%、收藏\加入購物車-購買的轉(zhuǎn)化率也只有20%串述,也不是太高执解,說明有非常多的用戶在收藏和加入購物車之后并沒有真正的購買。
從占比來看:總體收藏的占比為2.11%纲酗,總體加入購物車的占比為2.98%衰腌,總體購買的占比僅有1%,說明有非常多的用戶在瀏覽后沒有進(jìn)行下一步操作觅赊,有非常多的無效點擊右蕊;
② 按照獨立訪客計算漏斗轉(zhuǎn)化率
# 用戶行為的uv
SELECT u.`behavior_type`, COUNT(DISTINCT u.`user_id`) AS 'behavior_count'
FROM USER AS u
GROUP BY u.`behavior_type`
ORDER BY behavior_count DESC;
用戶從瀏覽到收藏/加入購物車的轉(zhuǎn)化率很高,為94.15%吮螺,說明用戶有瀏覽后收藏/加入購物車的習(xí)慣饶囚。但是從收藏/加入購物車到購買的轉(zhuǎn)化率僅為38.45%,是用戶流失發(fā)生的主要環(huán)節(jié)鸠补。
- 訂單指標(biāo)
① 成交量
- 總體成交量與人均購買次數(shù)
# 總體成交量與人均購買次數(shù)
SELECT COUNT(u.`behavior_type`) AS 成交總量
FROM USER AS u
WHERE u.`behavior_type` = 'buy';
- 每日成交量與人均購買次數(shù)走勢
# 每日成交量與人均購買次數(shù)走勢
SELECT u.`date`,
COUNT(u.`user_id`) AS '日成交量',
COUNT(DISTINCT u.`user_id`) AS '日用戶數(shù)',
COUNT(u.`behavior_type`)/COUNT(DISTINCT u.`user_id`) AS '人均日購買次數(shù)'
FROM USER AS u
WHERE u.`behavior_type` = 'buy'
GROUP BY u.`date`
ORDER BY u.`date` ASC;
訂單在大部分時間是保持平穩(wěn)的萝风,而在2014-12-12這天有爆發(fā)的增長,造成這一現(xiàn)象的原因是雙十二電商大促活動紫岩,與前面的流量走勢相結(jié)合進(jìn)行分析规惰,可以得到互相印證。
而且這一個月內(nèi)泉蝌,平均一個用戶購買了2.1次卿拴,每天的訂單量和流量指標(biāo)是一致的。
② 復(fù)購率
- 總體的復(fù)購率
# 復(fù)購人數(shù)
SELECT COUNT(t.cnt) AS '復(fù)購人數(shù)'
FROM (SELECT u.`user_id`, COUNT(u.`user_id`) AS cnt
FROM USER AS u
WHERE u.`behavior_type` = 'buy'
GROUP BY u.`user_id`
HAVING cnt > 1) AS t;
#復(fù)購率
SELECT SUM(IF(t.cnt = 1, 0, 1))/SUM(IF(t.cnt IS NULL, 0, 1)) AS '復(fù)購率'
FROM (SELECT u.`user_id`, COUNT(u.`user_id`) AS cnt
FROM USER AS u
WHERE u.`behavior_type` = 'buy'
GROUP BY u.`user_id`) AS t;
復(fù)購人數(shù)為2268人梨与,復(fù)購率為49.51%堕花。
- 商品品類復(fù)購排行榜
SELECT u.`item_category`, COUNT(*) AS '購買次數(shù)'
FROM USER AS u
WHERE u.`behavior_type` = 'buy'
GROUP BY u.`item_category`
ORDER BY 購買次數(shù) DESC
LIMIT 10;
可惜這里的商品類別是經(jīng)過脫敏的,否則可以進(jìn)行研究和下鉆粥鞋,優(yōu)化商品結(jié)構(gòu)缘挽。
- 用戶復(fù)購排行
SELECT u.`user_id`, COUNT(*) AS '購買次數(shù)'
FROM USER AS u
WHERE u.`behavior_type` = 'buy'
GROUP BY u.`user_id`
ORDER BY 購買次數(shù) DESC
LIMIT 10;
這些用戶對于平臺的忠誠度是比較高的,對于平臺的價值也是比較高的呻粹,可以開發(fā)用戶信息庫壕曼、收集詳實的用戶資料,追蹤記錄顧客的交易情況等浊,收集用戶畫像腮郊,或者線上組織客戶VIP微信群,微信通知系統(tǒng)等筹燕,針對這些用戶的購買偏好進(jìn)行更精準(zhǔn)的運營轧飞。
2. 用戶行為特征分析
- 用戶行為時間的特征
① 按日期粒度:
SELECT u.`date`,
COUNT(*) AS '行為總數(shù)',
SUM(IF(u.`behavior_type` = 'pv', 1, 0)) AS '點擊次數(shù)',
SUM(IF(u.`behavior_type` = 'fav', 1, 0)) AS '收藏次數(shù)',
SUM(IF(u.`behavior_type` = 'fav', 1, 0)) AS '加入購物車次數(shù)',
SUM(IF(u.`behavior_type` = 'buy', 1, 0)) AS '購買次數(shù)',
COUNT(DISTINCT u.`user_id`) AS '用戶總數(shù)',
COUNT(*)/COUNT(DISTINCT u.`user_id`) AS '人均行為次數(shù)',
CONCAT(ROUND(SUM(IF(u.`behavior_type` = 'pv', 1, 0))/COUNT(*)*100, 2), '%') AS '點擊數(shù)占比',
CONCAT(ROUND(SUM(IF(u.`behavior_type` = 'buy', 1, 0))/COUNT(*)*100, 2), '%') AS '成交數(shù)占比'
FROM USER AS u
GROUP BY u.`date`
ORDER BY u.`date` ASC;
按如期粒度來看衅鹿,用戶或活躍度與總體行為數(shù)是正相關(guān)的,走勢平穩(wěn)过咬,雙十二電商大促這天各項指標(biāo)暴增大渤,且當(dāng)天點擊數(shù)占比有所下降(用戶的點擊更有針對性), 成交數(shù)占比大幅上升。
② 按周的粒度
查詢數(shù)據(jù)發(fā)現(xiàn)2014-11-18到2014-11-23,2014-12-15到2014-12-18均不滿一周掸绞,因此泵三,只取完整的三周進(jìn)行分析:
SELECT DATE_FORMAT(u.`date`, '%W') AS '星期',
COUNT(*) AS '行為總數(shù)',
SUM(IF(u.`behavior_type` = 'pv', 1, 0)) AS '點擊次數(shù)',
SUM(IF(u.`behavior_type` = 'fav', 1, 0)) AS '收藏次數(shù)',
SUM(IF(u.`behavior_type` = 'fav', 1, 0)) AS '加入購物車次數(shù)',
SUM(IF(u.`behavior_type` = 'buy', 1, 0)) AS '購買次數(shù)',
COUNT(DISTINCT u.`user_id`) AS '用戶總數(shù)',
COUNT(*)/COUNT(DISTINCT u.`user_id`) AS '人均行為次數(shù)',
CONCAT(ROUND(SUM(IF(u.`behavior_type` = 'pv', 1, 0))/COUNT(*)*100, 2), '%') AS '點擊數(shù)占比',
CONCAT(ROUND(SUM(IF(u.`behavior_type` = 'buy', 1, 0))/COUNT(*)*100, 2), '%') AS '成交數(shù)占比'
FROM USER AS u
WHERE u.date BETWEEN '2014-11-24' AND '2014-12-14'
GROUP BY DATE_FORMAT(u.`date`, '%W')
ORDER BY DATE_FORMAT(u.`date`, '%W') ASC;
一周中的大部分時間用戶活躍度都比較平穩(wěn),周五比較特殊衔掸,出現(xiàn)了增長烫幕。 查看數(shù)據(jù)發(fā)現(xiàn)雙十二正好是周五,因此是可以理解的敞映。
③ 小時粒度
SELECT u.`time`,
COUNT(*) AS '行為總數(shù)',
SUM(IF(u.`behavior_type` = 'pv', 1, 0)) AS '點擊次數(shù)',
SUM(IF(u.`behavior_type` = 'fav', 1, 0)) AS '收藏次數(shù)',
SUM(IF(u.`behavior_type` = 'fav', 1, 0)) AS '加入購物車次數(shù)',
SUM(IF(u.`behavior_type` = 'buy', 1, 0)) AS '購買次數(shù)',
COUNT(DISTINCT u.`user_id`) AS '用戶總數(shù)',
COUNT(*)/COUNT(DISTINCT u.`user_id`) AS '人均行為次數(shù)',
CONCAT(ROUND(SUM(IF(u.`behavior_type` = 'pv', 1, 0))/COUNT(*)*100, 2), '%') AS '點擊數(shù)占比',
CONCAT(ROUND(SUM(IF(u.`behavior_type` = 'buy', 1, 0))/COUNT(*)*100, 2), '%') AS '成交數(shù)占比'
FROM USER AS u
GROUP BY u.`time`
ORDER BY u.`time` ASC;
各項指標(biāo)呈正相關(guān)關(guān)系较曼,每天0-5點用戶的活躍率快速降低,講到一天活躍量的最低值驱显,6-10點用戶活躍度快速上升,10-18點用戶活躍度較為平穩(wěn)瞳抓,18-23點用戶活躍度快速上升埃疫,達(dá)到一天的峰值。
結(jié)論:晚間用戶最為活躍孩哑,但用戶行為傾向于瀏覽栓霜;白天時段,用戶的購買比率為一天內(nèi)最高的横蜒,此時購買的目的性最強(qiáng)胳蛮。
- 用戶商品偏好特征
SELECT u.`item_category`,
SUM(IF(u.`behavior_type` = 'pv', 1, 0)) AS '點擊次數(shù)',
SUM(IF(u.`behavior_type` = 'fav', 1, 0)) AS '收藏次數(shù)',
SUM(IF(u.`behavior_type` = 'fav', 1, 0)) AS '加入購物車次數(shù)',
SUM(IF(u.`behavior_type` = 'buy', 1, 0)) AS '購買次數(shù)',
CONCAT(ROUND(SUM(IF(u.`behavior_type` = 'pv', 1, 0))/COUNT(u.`behavior_type`)*100, 2), '%') AS '點擊數(shù)占比',
CONCAT(ROUND(SUM(IF(u.`behavior_type` = 'buy', 1, 0))/COUNT(u.`behavior_type`)*100, 2), '%') AS '成交數(shù)占比'
FROM USER AS u
GROUP BY u.`item_category`
ORDER BY 點擊次數(shù) DESC;
可以建立 點擊數(shù)-購買數(shù)的二維圖像 選擇合適的中心點,將產(chǎn)品分為四個類別:
- 點擊數(shù)高丛晌,購買數(shù)高仅炊。說明此類產(chǎn)品剛需比較強(qiáng),品牌多且種類豐富澎蛛,用戶在較高的需求下有很多的選擇抚垄;
- 點擊數(shù)低購買數(shù)高。用戶的購買決策十分果斷谋逻,且對于該類產(chǎn)品的需求量也是很大的呆馁,說明該類產(chǎn)品選擇性比較小,可能形成幾個品牌壟斷的情況毁兆,或者產(chǎn)品的差異性較小浙滤,用戶不愿花費過多的精力去挑選。
- 點擊數(shù)低購買數(shù)低气堕,絕大多數(shù)產(chǎn)品都集中在這個象限纺腊,這種產(chǎn)品存在很多的替代品畔咧,用戶很難集中在某個子類進(jìn)行大量購買,而是跳躍式選購摹菠。
- 點擊數(shù)高購買數(shù)低盒卸,這類產(chǎn)品的需求彈性較大,用戶購買存在隨機(jī)性次氨。
- 用戶行為路徑上的特征
用戶購買商品分為以下幾類過程:
- 瀏覽后購買
- 瀏覽后加入購物車購買
- 瀏覽后收藏購買
- 瀏覽后收藏并加入購物車購買
CREATE VIEW 用戶行為 AS
SELECT u.`user_id`,
SUM(IF(u.`behavior_type` = 'pv', 1, 0)) AS '點擊次數(shù)',
SUM(IF(u.`behavior_type` = 'fav', 1, 0)) AS '收藏次數(shù)',
SUM(IF(u.`behavior_type` = 'fav', 1, 0)) AS '加入購物車次數(shù)',
SUM(IF(u.`behavior_type` = 'buy', 1, 0)) AS '購買次數(shù)'
FROM USER AS u
GROUP BY u.`user_id`,
u.`item_id`,
u.`date`;
CREATE VIEW 標(biāo)準(zhǔn)化指標(biāo)表 AS
SELECT uh.`user_id`,
CONCAT(IF(uh.`點擊次數(shù)`>=1,1,0),
IF(uh.`收藏次數(shù)`>=1,1,0),
IF(uh.`加入購物車次數(shù)`>=1,1,0),
IF(uh.`購買次數(shù)`>=1,1,0)) AS '行為路徑'
FROM 用戶行為 AS uh
WHERE uh.`購買次數(shù)` >= 1 AND uh.`點擊次數(shù)` <> 0;
SELECT a.`行為路徑`,
COUNT(DISTINCT a.`user_id`) AS '用戶數(shù)'
FROM 標(biāo)準(zhǔn)化指標(biāo)表 AS a
GROUP BY a.`行為路徑`
由于數(shù)據(jù)是抽取的蔽介,這個所得的結(jié)果誤差較大。但這個結(jié)果顯示煮寡,直接夠買的用戶遠(yuǎn)遠(yuǎn)多于瀏覽后加購或者收藏再購買的用戶虹蓄。說明,大部分購買者都是喜歡直接購買商品的幸撕,而非仔細(xì)挑選商品薇组。
- 用戶復(fù)購率特征
#先計算每個用戶的購買次數(shù)
#然后對購買次數(shù)進(jìn)行統(tǒng)計
SELECT tmp.購買次數(shù), COUNT(tmp.購買次數(shù)) AS '用戶數(shù)'
FROM (SELECT u.`user_id`, COUNT(u.`user_id`) AS '購買次數(shù)'
FROM USER AS u
WHERE u.`behavior_type` = 'buy'
GROUP BY u.`user_id`
ORDER BY 購買次數(shù) DESC) AS tmp
GROUP BY tmp.購買次數(shù)
ORDER BY tmp.購買次數(shù) ASC
這一個月內(nèi),用戶的購買次數(shù)大部分集中在5次以內(nèi)坐儿,開發(fā)空間較大律胀。
3.基于RFM模型分析用戶的價值
根據(jù)數(shù)據(jù)的情況,這里只能計算R和F
R(Recently): 最近一天的購買時間差(以2014-12-18為基準(zhǔn))
F(Frequency): 近期的購買頻率
DROP VIEW IF EXISTS RF的統(tǒng)計視圖;
# 創(chuàng)建RF的統(tǒng)計視圖
CREATE VIEW RF的統(tǒng)計視圖 AS
SELECT u.`user_id`,
DATEDIFF('2014-12-18', MAX(u.`date`)) AS R,
COUNT(u.`user_id`) AS F
FROM USER AS u
WHERE u.`behavior_type` = 'buy'
GROUP BY u.`user_id`;
SELECT *
FROM RF的統(tǒng)計視圖
根據(jù)直方圖的情況:
將R/F分為四組:
- 0-5貌矿、5-12炭菌、12-23,、23-30分別對應(yīng)4逛漫、3黑低、2、1分
- F值1-3酌毡、3-5克握、5-7、7以上分別對應(yīng)1枷踏、2菩暗、3、4分
DROP VIEW IF EXISTS 用戶價值打分;
CREATE VIEW 用戶價值打分 AS
SELECT rf.`user_id`,
(CASE
WHEN rf.R BETWEEN 0 AND 5 THEN 4
WHEN rf.R BETWEEN 5 AND 12 THEN 3
WHEN rf.R BETWEEN 12 AND 23 THEN 2
WHEN rf.R BETWEEN 23 AND 30 THEN 1
END) AS R_score,
(CASE
WHEN rf.F BETWEEN 1 AND 3 THEN 1
WHEN rf.F BETWEEN 3 AND 5 THEN 2
WHEN rf.F BETWEEN 5 AND 7 THEN 3
WHEN rf.F BETWEEN 7 AND 81 THEN 4
END) AS F_score
FROM RF的統(tǒng)計視圖 AS rf;
SELECT *
FROM 用戶價值打分;
計算R旭蠕、F的平均值勋眯,確定評分標(biāo)準(zhǔn)
給用戶貼上價值標(biāo)簽
重要價值客戶:R、F得分都高
重要保持客戶:R得分比較高下梢,F(xiàn)得分比較低
重要發(fā)展客戶:R得分比較低客蹋,F(xiàn)得分比較高
一般價值客戶:R、F得分都比較低
DROP VIEW IF EXISTS 用戶標(biāo)簽表;
CREATE VIEW 用戶標(biāo)簽表 AS
SELECT s.`user_id`,
(CASE
WHEN s.R_score >= 2.78 AND s.F_score >= 1.21 THEN '重要價值客戶'
WHEN s.R_score >= 2.78 AND s.F_score <= 1.21 THEN '重要保持客戶'
WHEN s.R_score <= 2.78 AND s.F_score >= 1.21 THEN '重要發(fā)展客戶'
WHEN s.R_score <= 2.78 AND s.F_score <= 1.21 THEN '一般價值客戶'
END) AS 客戶類型
FROM 用戶價值打分 AS s;
SELECT *
FROM 用戶標(biāo)簽表;
SELECT l.`客戶類型`, COUNT(l.`客戶類型`) AS 'cnt'
FROM 用戶標(biāo)簽表 AS l
GROUP BY l.`客戶類型`;