用户行为分析--SQL
一、数据来源及说明
数据来源:
https://tianchi.aliyun.com/dataset/dataDetail?dataId=46&userId=1
本文从数据集中选取包含了2014年11月18日至2014年12月18日之间,9967名随机用户共1876222条行为数据,数据集的每一行表示一条用户行为,共6列。
列字段包含以下:
- user_id:用户身份
- item_id:商品ID
- behavior_type:用户行为类型(包含点击、收藏、加购物车、购买四种行为,分别用数字1、2、3、4表示)
- user_geohash:地理位置(有空值)
- item_category:品类ID(商品所属的品类)
- time:用户行为发生的时间
二、提出问题
1、整体用户的购物情况
pv(总访问量)、日均访问量、uv(用户总数)、有购买行为的用户数量、用户的购物情况、复购率分别是多少?
2、用户行为转化漏斗
点击— 加购物车— 收藏— 购买各环节转化率如何?购物车遗弃率是多少,如何提高?
3、购买率高和购买率为 0 的人群有什么特征
4、基于时间维度了解用户的行为习惯
5、基于RFM模型的用户分析
三、数据清洗
1.导入数据
由于数据量有100多万,通过数据库管理工具 workbench 将数据集导入 MySQL 数据库会表较慢,我这里使用ETL工具kettle进行导数,能够提高导数效率,也方便后续实现报表自动化处理,数据库的表名为user。
2.缺失值处理
item_category 列表示地理位置信息,由于数据存在大量空值,且位置信息被加密处理,难以研究,因此后续不对item_category列进行分析。
mysql> select * from user limit 10;
+-----------+-----------+---------------+--------------+---------------+---------------+
| user_id | item_id | behavior_type | user_geohash | item_category | time |
+-----------+-----------+---------------+--------------+---------------+---------------+
| 98047837 | 232431562 | 1 | | 4245 | 2014-12-06 02 |
| 97726136 | 383583590 | 1 | | 5894 | 2014-12-09 20 |
| 98607707 | 64749712 | 1 | | 2883 | 2014-12-18 11 |
| 98662432 | 320593836 | 1 | 96nn52n | 6562 | 2014-12-06 10 |
| 98145908 | 290208520 | 1 | | 13926 | 2014-12-16 21 |
| 93784494 | 337869048 | 1 | | 3979 | 2014-12-03 20 |
| 94832743 | 105749725 | 1 | | 9559 | 2014-12-13 20 |
| 95290487 | 76866650 | 1 | | 10875 | 2014-11-27 16 |
| 96610296 | 161166643 | 1 | | 3064 | 2014-12-11 23 |
| 100684618 | 21751142 | 3 | | 2158 | 2014-12-05 23 |
+-----------+-----------+---------------+--------------+---------------+---------------+
10 rows in set (0.00 sec)
3.数据一致化处理
由于 time 字段的时间包含(年-月-日)和小时,为了方便分析,将该字段分成 2 个字段,一个日期列(date)和一个小时列(time)。
mysql> alter table user add date varchar(20) not null after item_category;
mysql> update user set date = time;
mysql> update user set date = replace(date,date,substring_index(date,' ',1));
mysql> update user set time = replace(time,time,substring_index(time,' ',-1));
mysql> select * from user limit 5;
+----------+-----------+---------------+--------------+---------------+------------+------+
| user_id | item_id | behavior_type | user_geohash | item_category | date | time |
+----------+-----------+---------------+--------------+---------------+------------+------+
| 98047837 | 232431562 | 1 | | 4245 | 2014-12-06 | 02 |
| 97726136 | 383583590 | 1 | | 5894 | 2014-12-09 | 20 |
| 98607707 | 64749712 | 1 | | 2883 | 2014-12-18 | 11 |
| 98662432 | 320593836 | 1 | 96nn52n | 6562 | 2014-12-06 | 10 |
| 98145908 | 290208520 | 1 | | 13926 | 2014-12-16 | 21 |
+----------+-----------+---------------+--------------+---------------+------------+------+
5 rows in set (0.00 sec)
由于 behavior_type 列的四种行为类型分别用 1,2,3,4 表示点击、收藏、加购物车、购买四种行为,为了方便查看数据,将1,2,3,4替换为 ‘pv'、’fav‘,’cart',‘buy' 。
mysql> alter table user modify behavior_type varchar(20);
mysql> update user set behavior_type = replace(behavior_type,1,'pv');
mysql> update user set behavior_type = replace(behavior_type,2,'fav');
mysql> update user set behavior_type = replace(behavior_type,3,'cart');
mysql> update user set behavior_type = replace(behavior_type,4,'buy');
mysql> select * from user limit 5;
+----------+-----------+---------------+--------------+---------------+------------+------+
| user_id | item_id | behavior_type | user_geohash | item_category | date | time |
+----------+-----------+---------------+--------------+---------------+------------+------+
| 98047837 | 232431562 | pv | | 4245 | 2014-12-06 | 02 |
| 97726136 | 383583590 | pv | | 5894 | 2014-12-09 | 20 |
| 98607707 | 64749712 | pv | | 2883 | 2014-12-18 | 11 |
| 98662432 | 320593836 | pv | 96nn52n | 6562 | 2014-12-06 | 10 |
| 98145908 | 290208520 | pv | | 13926 | 2014-12-16 | 21 |
+----------+-----------+---------------+--------------+---------------+------------+------+
5 rows in set (0.00 sec)
通过查询表结构,可以看到 date 列日期列不是日期类型:
mysql> desc user;
+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| user_id | int(11) | YES | | NULL | |
| item_id | int(11) | YES | | NULL | |
| behavior_type | varchar(20) | YES | | NULL | |
| user_geohash | text | YES | | NULL | |
| item_category | int(11) | YES | | NULL | |
| date | varchar(20) | NO | | NULL | |
| time | varchar(20) | YES | | NULL | |
+---------------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
将date 列改成 date 类型:
mysql> alter table user modify date date;
mysql> desc user;
+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| user_id | int(11) | YES | | NULL | |
| item_id | int(11) | YES | | NULL | |
| behavior_type | varchar(20) | YES | | NULL | |
| user_geohash | text | YES | | NULL | |
| item_category | int(11) | YES | | NULL | |
| date | date | YES | | NULL | |
| time | varchar(20) | YES | | NULL | |
+---------------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
四、构建模型和分析问题
1.总体用户购物情况
(1)pv(总访问量)
mysql> select count(behavior_type) as 总访问量
-> from user
-> where behavior_type = 'pv';
+--------------+
| 总访问量 |
+--------------+
| 1768720 |
+--------------+
1 row in set (0.61 sec)
(2)日均访问量
mysql> select date, count(behavior_type) as 日均访问量 from user where behavior_type = 'pv' group by date order by date limit 10;
+------------+-----------------+
| date | 日均访问量 |
+------------+-----------------+
| 2014-11-18 | 52940 |
| 2014-11-19 | 52021 |
| 2014-11-20 | 50978 |
| 2014-11-21 | 47847 |
| 2014-11-22 | 52362 |
| 2014-11-23 | 55367 |
| 2014-11-24 | 54978 |
| 2014-11-25 | 53898 |
| 2014-11-26 | 52194 |
| 2014-11-27 | 53284 |
+------------+-----------------+
10 rows in set (1.23 sec)
(3)uv(用户总数)
mysql> select count(distinct user_id) as 用户总数 from user;
+--------------+
| 用户总数 |
+--------------+
| 9967 |
+--------------+
(4)有购买行为的用户数量
mysql> select count(distinct user_id) as 购买用户数 from user where behavior_type = 'buy';
+-----------------+
| 购买用户数 |
+-----------------+
| 5878 |
+-----------------+
(5)用户的购物情况
mysql> create view user_behavior as
-> select user_id, count(behavior_type),
-> sum(case when behavior_type='pv' then 1 else 0 end) as 点击次数,
-> sum(case when behavior_type='fav' then 1 else 0 end) as 收藏次数,
-> sum(case when behavior_type='cart' then 1 else 0 end) as 加购物车次数,
-> sum(case when behavior_type='buy' then 1 else 0 end) as 购买次数
-> from user
-> group by user_id
-> order by count(behavior_type) desc;
mysql> select * from user_behavior limit 5;
+-----------+----------------------+--------------+--------------+--------------------+--------------+
| user_id | count(behavior_type) | 点击次数 | 收藏次数 | 加购物车次数 | 购买次数 |
+-----------+----------------------+--------------+--------------+--------------------+--------------+
| 65645933 | 4161 | 3661 | 487 | 10 | 3 |
| 73196588 | 4003 | 4003 | 0 | 0 | 0 |
| 130270245 | 3968 | 3776 | 151 | 40 | 1 |
| 83813302 | 3493 | 3416 | 57 | 16 | 4 |
| 36233277 | 3117 | 2790 | 290 | 30 | 7 |
+-----------+----------------------+--------------+--------------+--------------------+--------------+
(6)复购率:产生两次或两次以上购买的用户占购买用户的比例
mysql> select
-> sum(case when 购买次数>1 then 1 else 0 end) as 购买数大于1次,
-> sum(case when 购买次数>0 then 1 else 0 end) as 总购买数,
-> concat(round(sum(case when 购买次数>1 then 1 else 0 end)/sum(case when 购买次数>0 then 1 else 0 end)*100,2),'%') as 复购率
-> from user_behavior;
+---------------------+--------------+-----------+
| 购买数大于1次 | 总购买数 | 复购率 |
+---------------------+--------------+-----------+
| 3649 | 5878 | 62.08% |
+---------------------+--------------+-----------+
2.用户行为转化漏斗
在购物环节中收藏和加入购物车两个环节没有先后之分,所以将这两个环节可以放在一起作为购物环节的一步。最终得到用户购物行为各环节转化率,如下:
mysql> select sum(点击次数) as 点击总数, sum(收藏次数) as 收藏总数, sum(加购物车次数) as 加购物车总数, sum(购买次数) as 购买总数
-> from user_behavior;
+--------------+--------------+--------------------+--------------+
| 点击总数 | 收藏总数 | 加购物车总数 | 购买总数 |
+--------------+--------------+--------------------+--------------+
| 1768720 | 37000 | 52180 | 18322 |
+--------------+--------------+--------------------+--------------+
mysql> select
-> concat(round(sum(点击次数)/sum(点击次数)*100,2),'%') as pv,
-> concat(round((sum(收藏次数)+sum(加购物车次数))/sum(点击次数)*100,2),'%') as pv_to_favCart,
-> concat(round(sum(购买次数)/sum(点击次数)*100,2),'%') as pv_to_buy
-> from user_behavior;
+---------+---------------+-----------+
| pv | pv_to_favCart | pv_to_buy |
+---------+---------------+-----------+
| 100.00% | 5.04% | 1.04% |
+---------+---------------+-----------+
1 row in set (2.18 sec)
不同的行业转化率会有差异,据2012年的一项研究表明,在整个互联网范围内,平均转化率为2.13%(数据来源于《精益数据分析》),图中所示购买行为的转化率为1.04%,与行业平均值存在较大差异,淘宝移动端用户行为的转化率还有很大的增长空间。
3.购买率高和购买率为低的人群有什么特征
购买率高用户特征:
#按购买率从高到低排序
mysql> select user_id, 点击次数, 加购物车次数, 购买次数, round(购买次数/点击次数*100,2) as 购买率 from user_behavior group by user_id order by 购买率 desc limit 5;
+----------+--------------+--------------------+--------------+-----------+
| user_id | 点击次数 | 加购物车次数 | 购买次数 | 购买率 |
+----------+--------------+--------------------+--------------+-----------+
| 56970308 | 4 | 0 | 5 | 125.00 |
| 39912392 | 1 | 0 | 1 | 100.00 |
| 84281661 | 1 | 0 | 1 | 100.00 |
| 39095072 | 2 | 0 | 2 | 100.00 |
| 47763414 | 2 | 0 | 1 | 50.00 |
+----------+--------------+--------------------+--------------+-----------+
5 rows in set, 4 warnings (2.24 sec)
#按购买率从低到高排序
mysql> select user_id, 点击次数, 加购物车次数, 购买次数, round(购买次数/点击次数*100,2) as 购买率 from user_behavior group by user_id order by 购买率 limit 5;
+-----------+--------------+--------------------+--------------+-----------+
| user_id | 点击次数 | 加购物车次数 | 购买次数 | 购买率 |
+-----------+--------------+--------------------+--------------+-----------+
| 69033110 | 0 | 1 | 0 | NULL |
| 45881494 | 0 | 0 | 1 | NULL |
| 24869620 | 0 | 0 | 2 | NULL |
| 117489231 | 0 | 0 | 1 | NULL |
| 12222620 | 140 | 1 | 0 | 0.00 |
+-----------+--------------+--------------------+--------------+-----------+
由以上结果可以看出,购买率高的用户点击率反而不是最多的,这些用户收藏数和加购物车的次数也很少,一般不点击超过5次就直接购买,由此可以推断出这些用户为理智型消费者,有明确的购物目标,属于缺啥买啥型,很少会被店家广告或促销吸引。
购买率为低用户特征:
mysql> select user_id, 点击次数, 加购物车次数, 购买次数, round(购买次数/点击次数*100,2) as 购买率 from user_behavior group by user_id order by 购买次数 limit 10;
+-----------+--------------+--------------------+--------------+-----------+
| user_id | 点击次数 | 加购物车次数 | 购买次数 | 购买率 |
+-----------+--------------+--------------------+--------------+-----------+
| 12222620 | 140 | 1 | 0 | 0.00 |
| 26438512 | 193 | 14 | 0 | 0.00 |
| 136496700 | 48 | 2 | 0 | 0.00 |
| 84614339 | 7 | 0 | 0 | 0.00 |
| 138162465 | 83 | 0 | 0 | 0.00 |
| 1041761 | 287 | 0 | 0 | 0.00 |
| 21818576 | 140 | 1 | 0 | 0.00 |
| 33077425 | 301 | 2 | 0 | 0.00 |
| 21984163 | 30 | 0 | 0 | 0.00 |
| 39883816 | 6 | 1 | 0 | 0.00 |
+-----------+--------------+--------------------+--------------+-----------+
10 rows in set, 4 warnings (2.23 sec)
由以上结果可以看出,购买率为低用户分为两类,一类是点击次数少的,一方面的原因是这类用户可能是不太会购物或者不喜欢上网的用户,可以加以引导,另一方面是从商品的角度考虑,是否商品定价过高或设计不合理;第二类用户是点击率高、收藏或加购物车也多的用户,此类用户可能正为商家的促销活动做准备,下单欲望较少且自制力较强,思虑多或者不会支付,购物难度较大。
4.基于时间维度了解用户的行为习惯
(1)一天中用户活跃时段分布
mysql> select time, count(behavior_type) as 用户行为总量,
-> sum(case when behavior_type='pv' then 1 else 0 end) as 点击次数,
-> sum(case when behavior_type='fav' then 1 else 0 end) as 收藏次数,
-> sum(case when behavior_type='cart' then 1 else 0 end) as 加购物车次数,
-> sum(case when behavior_type='buy' then 1 else 0 end) as 购买次数
-> from user
-> group by time
-> order by time;
+------+--------------------+--------------+--------------+--------------------+--------------+
| time | 用户行为总量 | 点击次数 | 收藏次数 | 加购物车次数 | 购买次数 |
+------+--------------------+--------------+--------------+--------------------+--------------+
| 00 | 79057 | 74498 | 1648 | 2138 | 773 |
| 01 | 40866 | 38657 | 927 | 1019 | 263 |
| 02 | 22163 | 20974 | 492 | 571 | 126 |
| 03 | 14828 | 14072 | 313 | 379 | 64 |
| 04 | 11989 | 11338 | 295 | 302 | 54 |
| 05 | 13470 | 12789 | 306 | 326 | 49 |
| 06 | 24138 | 22828 | 544 | 615 | 151 |
| 07 | 44268 | 41991 | 900 | 1081 | 296 |
| 08 | 60635 | 57323 | 1211 | 1527 | 574 |
| 09 | 74415 | 69935 | 1625 | 1955 | 900 |
| 10 | 84487 | 79142 | 1753 | 2511 | 1081 |
| 11 | 80614 | 75554 | 1662 | 2302 | 1096 |
| 12 | 81581 | 76733 | 1512 | 2242 | 1094 |
| 13 | 91904 | 86323 | 1801 | 2615 | 1165 |
| 14 | 90378 | 84904 | 1790 | 2592 | 1092 |
| 15 | 91234 | 85684 | 1843 | 2632 | 1075 |
| 16 | 87846 | 82640 | 1721 | 2411 | 1074 |
| 17 | 77514 | 73061 | 1495 | 2178 | 780 |
| 18 | 83854 | 79208 | 1649 | 2256 | 741 |
| 19 | 112641 | 106714 | 2175 | 2852 | 900 |
| 20 | 143282 | 135775 | 2533 | 3784 | 1190 |
| 21 | 167176 | 158072 | 3119 | 4635 | 1350 |
| 22 | 167580 | 158172 | 3011 | 4970 | 1427 |
| 23 | 130302 | 122333 | 2675 | 4287 | 1007 |
+------+--------------------+--------------+--------------+--------------------+--------------+
24 rows in set (2.46 sec)
image.png
可以看出,每日0点到5点用户活跃度快速降低,降到一天中的活跃量最低值,6点到10点用户活跃度快速上升,10点到18点用户活跃度较平稳,17点到23点用户活跃度快速上升,达到一天中的最高值。
(2)一周中用户活跃时段分布
由于第一周和第五周的数据不全,因此这两周的数据不考虑到此次数据分析中。
mysql> select date_format(date,'%w') as weeks, count(behavior_type) as 用户行为总量,
-> sum(case when behavior_type='pv' then 1 else 0 end) as 点击次数,
-> sum(case when behavior_type='fav' then 1 else 0 end) as 收藏次数,
-> sum(case when behavior_type='cart' then 1 else 0 end) as 加购物车次数,
-> sum(case when behavior_type='buy' then 1 else 0 end) as 购买次数
-> from user
-> group by weeks
-> order by weeks;
+-------+--------------------+--------------+--------------+--------------------+--------------+
| weeks | 用户行为总量 | 点击次数 | 收藏次数 | 加购物车次数 | 购买次数 |
+-------+--------------------+--------------+--------------+--------------------+--------------+
| 0 | 244035 | 230288 | 5028 | 6589 | 2130 |
| 1 | 238739 | 225341 | 4633 | 6524 | 2241 |
| 2 | 296893 | 280178 | 5846 | 8155 | 2714 |
| 3 | 296527 | 279804 | 5952 | 8091 | 2680 |
| 4 | 302815 | 285496 | 6063 | 8602 | 2654 |
| 5 | 264299 | 247736 | 4795 | 7978 | 3790 |
| 6 | 232914 | 219877 | 4683 | 6241 | 2113 |
+-------+--------------------+--------------+--------------+--------------------+--------------+
7 rows in set (2.43 sec)
image.png
由以上结果可以看出,每周用户活跃度较稳定,每周四活跃度会有小幅降低,但是周末会慢慢回升。
5.基于 RFM 模型找出有价值的用户
RFM模型是衡量客户价值和客户创利能力的重要工具和手段,其中由3个要素构成了数据分析最好的指标,分别是:
- R-Recency(最近一次购买时间)
- F-Frequency(消费频率)
- M-Money(消费金额)
由于数据源没有相关的金额数据,暂且通过 R 和 F 的数据对客户价值进行打分。
(1)计算R-Recency
由于数据集包含的时间是从2014年11月18日至2014年12月18日,这里选取2014年12月19日作为计算日期,统计客户最近发生购买行为的日期距离2014年12月19日间隔几天,再对间隔时间进行排名,间隔天数越少,客户价值越大,排名越靠前。
mysql> select a.*, (@rank := @rank+1) as recent_rank
-> from (
-> select user_id, datediff('2014-12-19', max(date)) as recent
-> from user
-> where behavior_type = 'buy'
-> group by user_id
-> order by recent) as a,
-> (select @rank := 0) as b
-> limit 5;
+-----------+--------+-------------+
| user_id | recent | recent_rank |
+-----------+--------+-------------+
| 35205411 | 1 | 1 |
| 4361577 | 1 | 2 |
| 119191477 | 1 | 3 |
| 28467700 | 1 | 4 |
| 103439105 | 1 | 5 |
+-----------+--------+-------------+
5 rows in set, 2 warnings (0.66 sec)
(2)计算F-Frequency
先统计每位用户的购买频率,再对购买频率进行排名,频率越大,客户价值越大,排名越靠前。
mysql> select a.*, (@rank := @rank+1) as freq_rank
-> from (
-> select user_id, count(behavior_type) as frequency
-> from user
-> where behavior_type = 'buy'
-> group by user_id
-> order by frequency desc) as a,
-> (select @rank := 0) as b
-> limit 5;
+-----------+-----------+-----------+
| user_id | frequency | freq_rank |
+-----------+-----------+-----------+
| 122338823 | 161 | 1 |
| 51492142 | 87 | 2 |
| 56560718 | 52 | 3 |
| 123842164 | 49 | 4 |
| 35306096 | 46 | 5 |
+-----------+-----------+-----------+
5 rows in set, 2 warnings (0.63 sec)
(3)对用户进行评分
对5878名有购买行为的用户按照排名进行分组,共划分为四组,对排在前四分之一的用户打4分,排在前四分之一到四分之二(即二分之一)的用户打3分,排在前四分之二到前四分之三的用户打2分,剩余的用户打1分,按照这个规则分别对用户时间间隔排名打分和购买频率排名打分,最后把两个分数合并在一起作为该名用户的最终评分。计算脚本如下:
mysql> SELECT r.user_id,r.recent,r.recent_rank,f.frequency,f.freq_rank,
-> CONCAT( -- 对客户购买行为的日期排名和频率排名进行打分
-> CASE WHEN r.recent_rank <= (5878/4) THEN '4'
-> WHEN r.recent_rank > (5878/4) AND r.recent_rank <= (5878/2) THEN '3'
-> WHEN f.freq_rank > (5878*2/4) AND f.freq_rank <= (5878*3/4) THEN '2' ELSE '1' END,
-> CASE WHEN f.freq_rank <= (5758/4) THEN '4'
-> WHEN f.freq_rank > (5758/4) AND f.freq_rank <= (5758/2) THEN '3'
-> WHEN f.freq_rank > (5758/2) AND f.freq_rank <= (5758*3/4) THEN '2' ELSE '1' END) AS user_value
-> from
-- 对每位用户最近发生购买行为的间隔时间进行排名(间隔天数越少,客户价值越大)
-> (SELECT a.*,(@rank := @rank + 1) AS recent_rank
-> FROM -- 统计客户最近发生购买行为的日期距离'2014-12-19'间隔几天
-> (SELECT user_id,DATEDIFF('2014-12-19',MAX(date)) AS recent
-> FROM user
-> WHERE behavior_type = 'buy'
-> GROUP BY user_id
-> ORDER BY recent) AS a,
-> (SELECT @rank := 0) AS b) AS r,
-- 对每位用户的购买频率进行排名(频率越大,客户价值越大)
-> (SELECT a.*,(@rank2 := @rank2 + 1) AS freq_rank
-> FROM -- 统计每位用户的购买频率
-> (SELECT user_id,COUNT(behavior_type) AS frequency
-> FROM user
-> WHERE behavior_type = 'buy'
-> GROUP BY user_id
-> ORDER BY frequency DESC) AS a,
-> (SELECT @rank2 := 0) AS b) AS f
-> WHERE r.user_id = f.user_id
-> limit 10;
+-----------+--------+-------------+-----------+-----------+------------+
| user_id | recent | recent_rank | frequency | freq_rank | user_value |
+-----------+--------+-------------+-----------+-----------+------------+
| 35205411 | 1 | 1 | 3 | 1648 | 43 |
| 4361577 | 1 | 2 | 24 | 17 | 44 |
| 119191477 | 1 | 3 | 2 | 3202 | 42 |
| 28467700 | 1 | 4 | 14 | 69 | 44 |
| 103439105 | 1 | 5 | 11 | 138 | 44 |
| 95161544 | 1 | 6 | 6 | 593 | 44 |
| 63929694 | 1 | 7 | 6 | 742 | 44 |
| 104683710 | 1 | 8 | 7 | 536 | 44 |
| 126024699 | 1 | 9 | 12 | 115 | 44 |
| 39367110 | 1 | 10 | 2 | 3263 | 42 |
+-----------+--------+-------------+-----------+-----------+------------+
10 rows in set, 4 warnings (1.30 sec)
通过打分可以了解每位顾客的特性,从而实现差异化营销。比如对于 user_value = 44 的用户,为重点用户需要关注;对于user_value = 41 这类忠诚度高而购买能力不足的,可以可以适当给点折扣或捆绑销售来增加用户的购买频率。对于 user_value = 14 这类忠诚度不高而购买能力强的,需要关注他们的购物习性做精准化营销。还可以通过每个月对用户的评分变化,推测客户消费的异动状况,对于即将流失的客户,通过电话问候、赠送礼品、加大折扣力度等有效的方式挽回客户。
五、结论
1、总体转化率只有 1%,用户点击后收藏和加购物车的转化率在 5% ,需要提高用户的购买意愿,可通过活动促销、精准营销等方式。
2、购买率高且点击量少的用户属于理智型购物者,有明确购物目标,受促销和广告影响少;而购买率低的用户可以认为是等待型或克制型用户群体,下单欲望较少且自制力较强,购物难度较大。
3、大部分用户的主要活跃时间在10点到23点,在19点到23点达到一天的顶峰。每周五的活跃度有所下降,但周末开始回升。可以根据用户的活跃时间段精准推送商家的折扣优惠或促销活动,提高购买率。
4、通过 R 和 F 的数据对用户行为进行打分,对每位用户进行精准化营销,还可以通过对R 和 F 的数据监测,推测客户消费的异动状况,挽回流失客户。