目录
一、项目背景
1.1分析目的
1.2分析思路
二、数据来源&清洗
2.1数据集介绍
2.2数据清洗
2.2.1 检查是否存在重复值
2.2.2 检查是否存在缺失值
2.2.3 一致化处理(对timestamp)
2.2.4异常值处理(时间不在范围内)
三、整体数据分析
3.1.UV,PV,UV/PV
3.2 复购率+跳失率
四、 用户消费行为转化分析
4.1 总体行为漏斗分析
4.2 独立访客UV行为漏斗分析
五、 时间维度分析用户行为及用户量
5.1 用户行为时间维度分析
5.1.1 按天
5.1.2 按时
5.2 用户量时间维度分析
六、 从商品维度分析用户行为
6.1 商品排行榜分析
6.1.1 商品销量排行榜(前十)
6.1.2 商品浏览排行榜(前十)
6.1.3 浏览量前十&销量前十 商品有无重合
七、 商品四象限划分
八、RFM模型的用户价值分析
8.1 R维度分析
8.2 F维度分析
8.3 用户分层(进行R和F综合评分)
8.4 RFM模型分析结果
九、结论
9.1用户消费行为的转化分析
9.2时间维度的用户行为分析
9.3商品维度分析用户行为
9.4基于RFM模型用户价值分析
UserBehavior是阿里巴巴提供的一个淘宝用户行为数据集。
数据集包含了2017年11月25日-2017年12月3日之间,有行为的约一百万随机用户的所有行为(行为包括点击、购买、加购、喜欢),用以进行隐式反馈推荐问题的研究。
推荐系统中用户对物品的反馈分为显式和隐式反馈:
——显式反馈 (如评分、评级) 或单一的隐式反馈 (如浏览、点击、加入购物车)
——隐式反馈推荐是推荐系统通过对内容和用户行为的分析,建立适当的模型,帮助用户从海量的数据中找到自己感兴趣的内容
为客户提供更精准的隐式反馈推荐。
从用户角度:提高用户忠诚度,帮助用户快速找到商品
从网站角度:提高网站交叉销售能力,提高成交转化率
主要从以下五个维度进行分析和建议
阿里巴巴天池:数据集-阿里云天池
select *
from userbehavior u
group by user_id,item_id,cate_id,behav_type,timestamp
having count(*)>1
发现均不存在重复值
SELECT count(user_id),count(item_id),count(cate_id),
count(behav_type),count(timestamp)
FROM userbehavior
均不存在缺失值
将‘timestamp’列转化为三列,分别为时间,日期,小时
#新增一列Date_time
ALTER TABLE userbehavior ADD COLUMN Date_time TIMESTAMP(0) NULL;
UPDATE userbehavior
SET Date_time = FROM_UNIXTIME(`timestamp`);
#新增列Date
ALTER TABLE userbehavior ADD COLUMN Date char(10) NULL;
UPDATE userbehavior
SET Date = substring(Date_time from 1 for 10);
#新增列Hours
ALTER TABLE userbehavior ADD COLUMN Hours char(10) null;
update userbehavior
set Hours = SUBSTRING(Date_time FROM 12 FOR 2);
#检查时间始末
select MAX(Date_time),Min(Date_time)
from userbehavior
#时间最大值为2017-12-04 00:00:06
#时间最小值为2017-09-11 16:16:39 不符合 要删除异常值
delete from userbehavior
where Date_time>'2017-12-04 00:00:00' or Date_time<'2017-11-25 00:00:00';
#再次验证日期时间的准确性
select MAX(Date_time),Min(Date_time)
from userbehavior
#符合要求
select count(distinct user_id) as '用户数UV',
(select count(behav_type) from userbehavior where behav_type='pv') as '总访问量PV',
count(distinct cate_id) as '商品类目数量',
count(behav_type) as '行为数量',
sum(case when behav_type='pv' then 1 else 0 end) as '点击',
sum(case when behav_type='buy' then 1 else 0 end) as '购买',
sum(case when behav_type='cart' then 1 else 0 end) as '加购',
sum(case when behav_type='fav' then 1 else 0 end) as '收藏',
round(sum(
case when behav_type='pv' then 1 else 0 end)/count(distinct user_id))
as '人均浏览次数'
from userbehavior
#人均浏览次数=点击浏览量/用户数=PV/UV
复购率=消费两次及以上用户数/总消费用户数
跳失率=只有点击行为的用户/总用户数 即该用户的行为数=点击数
create view 用户行为数据 as
select user_id,count(behav_type) as '用户行为数',
sum(case when behav_type ='pv' then 1 else 0 end ) as '点击',
sum(case when behav_type ='fav' then 1 else 0 end) as '收藏',
sum(case when behav_type ='cart' then 1 else 0 end) as '加购',
sum(case when behav_type ='buy' then 1 else 0 end) as '购买'
from userbehavior
GROUP BY user_ID
ORDER BY 用户行为数 DESC;
#计算复购率=消费两次及以上用户数/总消费用户数
select sum(case when 购买>1 then 1 else 0 end) as 复购次数,
sum(case when 购买>0 then 1 else 0 end) as 购买次数,
concat (round(sum(case when 购买>1 then 1 else 0 end)*100/ sum(case when 购买>0 then 1 else 0 end),2),'%') as 复购率
from 用户行为数据
#跳失率=只有点击行为的用户/总用户数 即该用户的行为数=点击数
select * from 用户行为数据
where '用户行为数'='点击'
#均为空值,说明跳失率为0
#复购率为62.31%,跳失率为0,可看出淘宝用户的忠诚度较高,可进一步培养用户忠诚度,鼓励更高频次的消费。
因为收藏和加购并不存在着明显的先后顺序,故将两者进行合并
select behav_type,count(*)
from userbehavior
group by behav_type
点击量:773192
收藏+价格:24270+47668=71938
购买:17754
点击浏览详情页后,近9.3%的用户加购或收藏,2.296%的用户购买,说明用户在浏览详情页后存在大量流失。
select sum(case when 点击>0 then 1 else 0 end) as 点击用户数,
sum(case when 收藏>0 then 1 else 0 end) as 收藏用户数,
sum(case when 加购>0 then 1 else 0 end) as 加购用户数,
sum(case when 购买>0 then 1 else 0 end) as 购买用户数
from 用户行为数据
在浏览详情页后,有72.35%左右用户进行加购,37.81%进行收藏,最终支付订单人数(付费用户)为64.49%,用户的购买转化率还是很不错的,说明app符合大部分用户的需求。
与总体流量行为对比,独立访客UV将用户去重,发现购买转化率大大提高。
说明各用户的点击量较多,推测是在购买前,用户会对于不同店铺、不同价位、不同款式商品进行对比,最终进行加购/收藏步骤。
为了提高PV到购买的转化率,可以参考用户的日常行为,优化推荐机制和筛选功能,使得推荐商品更精准,尽量减少用户获取需要商品的成本,增加PV的购买转化率
SELECT date,
COUNT(DISTINCT user_id) 用户数,
SUM(CASE WHEN behav_type = 'pv' THEN 1 ELSE 0 END) 点击,
SUM(CASE WHEN behav_type = 'cart' THEN 1 ELSE 0 END) 加购,
SUM(CASE WHEN behav_type = 'fav' THEN 1 ELSE 0 END) 收藏,
SUM(CASE WHEN behav_type = 'buy' THEN 1 ELSE 0 END) 购买
FROM userbehavior
GROUP BY date;
得到用户的每日各行为:
11.25-12.1日内各行为波动较小,12.1-12.2时用户数、加购、点击行为有小幅明显增加,收藏和购买保持较小波动。排除周末原因导致数据上升(11.25-26也为周末)
考虑12月初双十二预热活动开始,各渠道宣传使得点击及访客数增加,各种预售活动开始使得加购行为数量出现上升。
select Hours,COUNT(distinct user_id) as '用户数',
sum(case when behav_type ='pv' then 1 else 0 end ) as '点击',
sum(case when behav_type ='fav' then 1 else 0 end) as '收藏',
sum(case when behav_type ='cart' then 1 else 0 end) as '加购',
sum(case when behav_type ='buy' then 1 else 0 end) as '购买'
from userbehavior
GROUP BY Hours
ORDER BY Hours;
类似于下面的图:
从整体趋势看,各项指标在23点到次日5点时会大幅度降低,早上五点达到最低谷;5点至中午11点大幅度上升,11点至19点各项平稳,之后又逐步小幅上升,在22点达到一天峰值。
该行为变化符合人群作息规律,且与学生及上班族的行为活动时间相符合。
从峰值来看,可以加大19-23这一时段的商品及活动宣传力度,制定适当运营策略,提高购买转化率。
对购买数进行去重
select date,
count(distinct user_id) as buyer
from userbehavior
where behav_type='buy'
GROUP BY date
ORDER BY date
关于“受欢迎”的产品,有的人理解是点击量高,有的人理解是销量高;
但有的点击量高的产品可能是因为被页面或广告等吸引而来,或者只是感兴趣,用户并不一定会购买;而销量高的产品有可能是用户真正需要的,搜索和点击购买的目标也比较明确。
需要探究点击量与销量之间的相关关系。
create view 销量前十 as
SELECT item_id,COUNT(behav_type) 销量
FROM userbehavior
WHERE behav_type = 'buy'
GROUP BY item_id
ORDER BY 销量 DESC
LIMIT 10
销量最多的商品才17件,且销量前十的商品中有一半没有超过10件,可看出淘宝主要是依靠商品多样性来满足用户需求,并不存在爆款商品。
今后也可继续增加商品类目,打造多元化商品。
create view 浏览前十 as
SELECT item_id,COUNT(behav_type) AS 浏览量
FROM userbehavior
WHERE behav_type = 'pv'
GROUP BY item_id
ORDER BY 浏览量 DESC
LIMIT 10;
select s.item_id, 销量, 浏览量
from 销量前十 s left join 浏览前十 l
on s.item_id=l.item_id
并无重合部分,可看出销量高并不意味着浏览量高
进一步探究销量和浏览量关系,查询浏览量前300的商品的销量
CREATE TABLE 浏览量前300
SELECT item_id,COUNT(behav_type) 浏览量
FROM userbehavior
WHERE behav_type = 'pv'
GROUP BY item_id
ORDER BY COUNT(behav_type) DESC
LIMIT 300;
浏览量与销量都处于较高的水平,属于比较受用户欢迎的商品
优化方法:提高此类商品的曝光量,平台加大推荐力度,从而提高浏览量,进而提升销量。
此类商品的销量高,但是浏览量低,应分析商品特征与用户画像,收集该类商品的个性化信息和用户特征,分析该商品是否属于垂直刚需商品,是否存在特定的消费群体。
——①属于垂直领域,有特定受众会直接进行购买,用户的购买目标明确
优化:商家可针对该类用户推测出特定活动,做到精准推送,或建立该类商品受众的专属社群,提供用户交流平台,进一步增加用户粘性。
——②商品本身转化率应该较高,但是曝光量过少,商家宣传力度小,用户接触到该类商品的渠道较少
优化:商家应该加大宣传力度,多做宣传,增加商品权重,设置高频率搜索关键词,设计亮眼的宣传图等,增加用户的浏览量,销量也会随之提升。
浏览量和销量都比较低,说明用户对商品不感兴趣,需要考虑流量入口和商品本身两方面的问题
优化方法:
①流量问题:是否对商品的宣传力度过小,用户没有渠道点进来此类商品?可以尝试提高商品的曝光量
②若提高商品曝光量后商品的销量还是比较低迷,就需要考虑商品本身是否是用户真正需要的,效果不好的商品也可以直接优化掉
商品浏览量高,但是销量低,说明商品整体的转化率很低,也可以从一下几方面分析问题所在
①目标人群送达:可能是商品本身的宣传非常有吸引力,但是指向性不够明确,导致很多非目标用户点击商品,但是没有进行购买
②商品定价:商品定价过高,同类可替代的高性价比商品太多,用户就会转向其他同类商品
③商品详情页、客服及评论区:用户无法从详情页和客服得到需要的的商品详细信息,或者商品评论有比较扎眼的差评,导致用户退出购买
④购买流程:可能是优惠券使用方式复杂,商品凑单购买流程复杂,让用户放弃购买。
RFM模型通过一个客户的近期购买行为(R)、购买的总体频率(F)以及花了多少钱(M)3项指标来描述该客户的价值状况。
R(Recency):客户最近一次交易时间的间隔。R值越大,表示客户交易发生的日期越久,反之则表示客户交易发生的日期越近。
F(Frequency):客户在最近一段时间内交易的次数。F值越大,表示客户交易越频繁,反之则表示客户交易不够活跃。
M(Monetary):客户在最近一段时间内交易的金额。M值越大,表示客户价值越高,反之则表示客户价值越低。
本次分析数据集不含金额,因此仅从R、F两个维度进行分析
由于整个数据集区间为9天,设定
0~1天设置为4
2~3天设置为3
4~6天设置为2
7~9天设置为1
CREATE VIEW R_v AS
SELECT user_id, MIN(时间间隔) AS R
FROM
(SELECT user_id, DATEDIFF('2017-12-03',DATE) AS '时间间隔'
FROM userbehavior
WHERE behav_type = 'buy') a
GROUP BY user_id;
#计算分值分布情况
SELECT a.value_r, COUNT(a.value_r) amount
FROM(
SELECT user_id,R,
CASE WHEN R BETWEEN 0 AND 1 THEN 4
WHEN R BETWEEN 2 AND 3 THEN 3
when R between 4 and 6 then 2
else 1 END AS value_r
FROM R_v) AS a
GROUP BY value_r
order by value_r;
可以看出r值为2、3、4用户较多,总计占比90%,即90%用户会在0-6天内进行再次消费,用户粘性较好。
#计算分值分布情况
SELECT a.value_r, COUNT(a.value_r) amount
FROM(
SELECT user_id,R,
CASE WHEN R BETWEEN 0 AND 1 THEN 4
WHEN R BETWEEN 2 AND 3 THEN 3
when R between 4 and 6 then 2
else 1 END AS value_r
FROM R_v) AS a
GROUP BY value_r
order by value_r;
#查询消费频率
CREATE VIEW F值 AS
SELECT user_id, COUNT(behav_type) AS F
FROM userbehavior
WHERE behav_type='buy'
GROUP BY user_id
ORDER BY COUNT(behav_type) DESC;
#查询频率极值
select max(F), MIN(F) from
(SELECT user_id, COUNT(behav_type) AS F
FROM userbehavior
WHERE behav_type='buy'
GROUP BY user_id
ORDER BY COUNT(behav_type) DESC);
F的最大值为61,最小值为5
由于差距较大,可将区间分为 1-5 1分,6-12 2分,13-23 3分,24-35 4分,36-50 5分,>50 6分
SELECT a.value_f,COUNT(a.value_f) amount
FROM(
SELECT user_id,f,
CASE WHEN f BETWEEN 1 AND 5 THEN 1
WHEN f BETWEEN 6 AND 12 THEN 2
WHEN f BETWEEN 13 AND 23 THEN 3
WHEN f BETWEEN 24 AND 35 THEN 4
WHEN f BETWEEN 36 AND 50 THEN 5
ELSE 6 END AS value_f
FROM F值) AS a
GROUP BY value_f
ORDER BY value_f;
购买低于12次的人数仅占14%,用户活跃度很高。(?怎么看)
CREATE VIEW R分值 AS
SELECT user_id,
CASE WHEN R BETWEEN 0 AND 1 THEN 4
WHEN R BETWEEN 2 AND 3 THEN 3
when R between 4 and 6 then 2
else 1 END AS value_r
FROM R_v;
#F分值
CREATE VIEW F分值 AS
SELECT user_id,
CASE WHEN f BETWEEN 1 AND 5 THEN 1
WHEN f BETWEEN 6 AND 12 THEN 2
WHEN f BETWEEN 13 AND 23 THEN 3
WHEN f BETWEEN 24 AND 35 THEN 4
WHEN f BETWEEN 36 AND 50 THEN 5
ELSE 6 END AS value_f
FROM F值;
CREATE VIEW RF综合评分 AS
SELECT a.user_id, a.value_r, b.value_f, a.value_r+b.value_f AS value_RF
FROM r分值 a
JOIN f分值 b ON a.user_id=b.user_id;
select*from RF综合评分
得到各用户综合评分
#查询RF得分极值
select max(value_RF), min(value_RF) FROM RF综合评分
划分各用户层级
2 ~ 3分:易流失用户
4 ~ 5分:挽留用户
6 ~ 8分:发展用户
9~ 10分:忠诚用户
然后统计各层级用户数量
SELECT a.用户分层,COUNT(a.用户分层) as 人数
FROM(
SELECT
CASE
WHEN value_rf BETWEEN 2 AND 3 THEN '易流失用户'
WHEN value_rf BETWEEN 4 AND 5 THEN '挽留用户'
WHEN value_rf BETWEEN 6 AND 8 THEN '发展用户'
WHEN value_rf BETWEEN 9 AND 10 THEN '忠诚用户' END AS 用户分层
FROM RF综合评分)AS a
GROUP BY 用户分层;
挽留用户占比61.02%
易流失用户占比30.27%
发展用户占比8.62%
忠诚用户占比0.07%
四个分类中,
——挽留用户的占比最高,达到60%,这部分用户待挖掘的潜在价值很大。
应该对这部分用户进行定时促活,如优惠发放、上新消息送达、提供更精准的商品推荐等,主要目的是留住用户,并提升消费品率,提高其转化率;
——易流失用户占比30%也比较高,可能是产品体验不佳,用户流失至竞品app。
从用户角度可以对该部分用户进行问卷调研找到流失原因,及时进行新活动心有会推送,对用户进行召回;从竞品角度可以对其进行调查,找到其吸引顾客的原因。
——发展用户占比较低,可以对这部分用户进行定期推送,发送优惠消息邮件通知,来增加消费频次
——忠诚用户的占比不到0.1%,这部分用户的价值极高,需要制定专属的运营策略来进行维护,如专属优惠、专属客服等,保证其较高的用户粘性。
此次用户分层效果分析整体效果不佳,可能有下面两个原因
1、区间划分不合理,可以先看一下各个分数的用户人数并结合实际的业务场景进行区分;
2、两个维度划分的段数不同,且差异较大,相当于给两个部分赋予了不同的权重。
1.根据跳失率和复购率来看,淘宝APP中的商品对用户具有足够的吸引力,用户粘性很大,重点为维系老用户的忠诚度。
可建立老客户社群,重点维系老客户和平台联系,适时发放优惠券等方法提高用户参与度,并进行老用户调研,提高产品使用感。
2.从漏斗模型可以看出用户从点击到购买的转化率还是比较高的,可以通过引导用户收藏并加购来提高用户从收藏/加购到购买的转化率。但是PV点击到购买的转化率极低,故可以针对点击到购买的行为转化进行提升。建议有:
优化电商平台的搜索匹配度和推荐策略,提高筛选精确度,并对搜索和筛选的结果排序的优先级进行优化,减少用户获得满意商品的成本;
提供同类产品比较的功能,让用户不需要多次返回搜索结果进行点击查看,方便用户确定心仪产品,增加点击到后续行为的转化;
优化收藏到购买的操作过程,增加用户收藏并加购的频率,以提高购买转化率。
可以看出用户的活跃时间高峰期主要在20-22点,此时使用人数最多,活动最容易触达用户,所以可以将营销活动安排在这个时间段内,来进行引流并转化。
在研究的9天内共有两个周末,第一个周末用户活跃度并没有明显变化,而第二个周末推测是因为有双十二的预热,导致用户点击和加购出现明显增加。故可以扩大研究时间范围对推测进行验证,若推测正确,则可以通过在周末推出营销活动来挖掘用户周末购物的欲望。
商品的浏览量和销量排名呈现显著差异,提高浏览量能否使 销量并不会随之增加存疑,需要进一步验证
根据四象限划分图,应重点提升第二象限及第三象限的商品,针对第二象限的商品应提高其曝光率,找出它的用户画像,尽量做到精准推送或建立专属社群,提供用户交流平台,提升用户粘性及转化率;第三象限应尝试提升商品的流量,分析销量是否会随之提升。
通过分析发现,商品的销量主要靠的是“长尾效应”而非某款爆款商品,但是这是站在APP的角度来看,对于B端商家来说,也可以打造爆款商品来减少商品种类繁多的运营及库存成本。
针对销量排行榜前面的商品可以增加其曝光率推荐率,在用户搜索时进行优先展现
通过RFM模型对客户群进行划分,可以对不同的用户群体采用不同的管理策略,达到对不同的客户群进行精准营销的目的:
对于重要价值用户,需要重点关注并保持, 应该提高满意度,增加留存;
对于重要发展客户和重要保持用户,可以适当给点折扣或捆绑销售来增加用户的购买频率;
对于重要挽留客户,需要关注他们的购物习性做精准化营销,以唤醒他们的购买意愿