一、 分析背景
网上购物渐渐成为了人们的一种生活方式。它为人们提供了很多便利,只需要一部手机或一台电脑就可以购买到来自世界各地的商品。正是由于商品的多样性,人们大多数会有一个浏览商品、收藏、加购到消费的过程。这些用户行为数据能间接展现出他们的网购习惯和偏好,结合业务思维从中得到启发,优化产品,达到可观的关键指标值。
二、 分析目的
现有阿里云(https://tianchi.aliyun.com/dataset/dataDetail?dataId=649)提供的淘宝用户行为数据,其包含了2017年11月25日至2017年12月3日之间,有行为的约一百万随机用户的所有行为(行为包括点击、购买、加购、喜欢)。每条用户行为仅由用户ID(脱敏)、商品ID(脱敏)、商品类目ID(脱敏)、行为类型、时间戳组成。
为了吸引尽可能多的用户最终进行消费,此次进行用户行为分析,找到可进一步改进的方面,给出可落地的建议。
三、 分析方法
如何使用现有数据分析用户行为是关键。在这里,我们从以下几个方面分析:
(1) 转化漏斗:使用常用的电商数据分析指标,使用AARRR漏斗模型(解释见图1)拆解用户进入APP后的每一步行为。分析从浏览、收藏/加购到消费整个过程中各转化环节的转化率和流失率,发现业务环节中的薄弱部分并提出可落地执行的改进建议;
(2)从时间维度分析哪一日或一天中哪个时间点的用户行为表现,为运营活动时间选择提供可靠的参考;
(3)从商品维度分析哪一种商品最受用户欢迎,为活动产品范围设置提供数据支持;
(4)基于RFM模型(解释见图2)做用户细分,为精准营销提供思路。
R-Recency(最近一次购买时间)
R指用户上一次消费的时间,上一次购物时间距今最近的顾客通常在近期响应营销活动的可能性也最大,对于APP而言,很久没有购物行为可能意味着用户放弃了APP的使用,重新唤起用户也需要更多的成本。
F-Frequency(消费频率)
F指用户在某段时间内的购物次数,消费频率越高意味着这部分用户对产品的满意度最高,用户粘性最好,忠诚度也最高。
M-Money(消费金额)
M指用户在某段时间内的购物金额,这也是为公司带来价值的最直接体现,而消费金额较高的用户在用户总体中人数较少,却能创造出更多价值,是需要重点争取的对象。
这三个维度互相关联,反映了每个用户的现在价值和潜在价值,将每个维度分成5个区间进行评分,通过计算分数找到最有价值的用户,并对用户进行分类,可以有针对性的不同类型用户采用不同的营销策略
-------------------------------------------------------------------------------
作者:大白菜995
链接:https://www.jianshu.com/p/4f64d739fba2
-------------------------------------------------------------------------------
四、用户行为分析
1. 数据导入及选取
通过数据库管理工具SQLyog将数据集导入MySQL中,并为用户ID(脱敏)、商品ID(脱敏)、商品类目ID(脱敏)、行为类型、时间戳等字段分别起名为uid,gid,gcateid,beh和ti_st。
由于数据太多,考虑当前电脑配置和分析效率问题,只取其中三百万条数据进行分析(提取时根据用户分组提取,将提取到的每个用户所有行为都提取出来),表名为sam_ub。
将不符合业务流程的数据剔除后,最终总共提取了3,023,685条数据。
2. 数据清洗
2.1 缺失值处理
为避免数据集中出现缺失值,影响分析结果,检查是否含有缺失值。若存在,视情况可以补充值或删除所在行数据。经查询,该数据集并没有缺失值。
2.2 数据一致化处理
由于时间戳是含有日期和时间的,为了保持一致,将时间戳拆分成两列,一列为年月日,一列为时间点,只精确到小时。结合实际,用户在一个小时内重复访问或购买商品的行为是正常的,所以不需要去重。
ALTER TABLE sam_ubd ADD hours CHAR(20);
UPDATE sam_ubd SET hours=per;
UPDATE sam_ubd SET per=FROM_UNIXTIME(per,'%Y-%m-%d');
UPDATE sam_ubd SET hours=FROM_UNIXTIME(hours,'%H');
2.3 异常值处理
异常值的出现也会对分析结果产生扰乱,需要删除不符合业务流程(比如用户行为发生时间不在该时间段内)。
3. 模型构建
3.1用户使用行为的漏斗分析
用户使用淘宝购买产品的完整流程是“浏览→收藏/加购→购买”。我们需要分析各环节的转化率情况,找到网购流程中的薄弱环节。
(1)九天内这些用户的网购总体情况:PV,UV和平均每人访问量
SELECT COUNT(DISTINCT user_id) AS UV,
(SELECT COUNT(*) FROM sam_ubd WHEREbeha_type='pv') AS PV,
(SELECT COUNT(*) FROM sam_ubd WHEREbeha_type='pv')/COUNT(DISTINCT user_id) 'PV/UV'
FROM sam_ubd;
结果为:这段时期的总访问量PV为2708993次,总访客量UV为29062人,平均每人访问量(PV/UV)为93.2次,平均每人每天访问次数超过10次。因为没有前后时间的总体数据对比,所以不能解释情况的好坏。
(2)跳失率:仅有一个行为的用户总数/总访客量
SELECT COUNT(user_id)
FROM sam_ubd
GROUP BY user_id
HAVING COUNT(beha_type)=1;
用户网购的第一个行为一定是浏览,因此只有一个行为的一定是浏览行为,这代表用户仅浏览一次就退出淘宝,再也没有使用过,可以认定为流失用户。结果表明,在29062个人中仅有两位用户只浏览一次就退出,可以认为用户对淘宝还是特别认可的,并且愿意使用淘宝网购。
(3)用户总体行为的转化率
①用户总行为数漏斗计算(用户ID不去重的情况):
SELECT beha_type,COUNT(*)
FROM sam_ubd
GROUP BY beha_type
ORDER BY beha_type DESC;
结果为总访问量为2708993次,总收藏量为85305次,总加购量为170865次,总购买量为58522次。从整体看访问到购买的直接转化率为58522/2708993=2.16%,在购买流程中各环节漏斗转化分别为:从访问到收藏/加购的转化率为(85305+170865)/2708993=9.49%,从收藏/加购到购买的转化率为58522/(85305+170865)=22.84%,用户行为漏斗流程图见图3。虽然从访问到购买的转化率不高,但是从收藏/加购到购买的转化率高达22.84%,可以看出还是有很多用户愿意去购买的。
②独立访客漏斗模型计算(用户ID去重)
SELECT beh,COUNT(DISTINCT uid) AS '用户数'
FROM sam_ub
GROUP BY beh
ORDER BY COUNT(DISTINCT uid) DESC;
这九天内,一共有28918位用户访问,其中22056位用户加购、11061位用户收藏、19740位用户购买商品。从整体看访问到购买的直接转化率为19740/28918=68.26%,在购买流程中各环节漏斗转化分别为:从访问到加购的转化率为22056/28918=77.83%,从加购到购买的转化率为19740/22056=89.50%,独立访客行为漏斗流程图见图4。可以看出,淘宝中大多数用户是愿意使用淘宝购买商品的,说明淘宝这款产品受大众欢迎。
3.2 不同时间维度下用户行为模式分析
(1)分析这段时期内每天的用户行为(日访问总量,日收藏总量,日加购量,日购买量)
SELECT ti_st,
SUM(CASE beh WHEN 'pv' THEN 1 ELSE 0 END) '浏览量',
SUM(CASE beh WHEN 'fav' THEN 1 ELSE 0 END) '收藏量',
SUM(CASE beh WHEN 'cart' THEN 1 ELSE 0 END) '加购量',
SUM(CASE beh WHEN 'buy' THEN 1 ELSE 0 END) '付费量'
FROM sam_ub
GROUP BY ti_st
ORDER BY ti_st;
将查询结果用图5表示之后,发现周六和周日的浏览量、收藏量、加购量和购买量均高于工作日,说明用户偏好在非工作日网购,可以认为该人群的属性更偏向于职场人。因此,对于这些用户的营销活动可以选在周六和周日进行。
而且用户的加购量比收藏量要高很多,这说明用户更常使用购物车来选择自己想要购买的商品,因此我们可以刺激加购向购买的转化率,比如现在的跨店满减活动就是需要加购来获得优惠的。
(2)分析某一天内用户每小时的行为
以2017年11月28日(周二)为例:
SELECT hours,
SUM(CASE beh WHEN 'pv' THEN 1 ELSE 0 END) '浏览量',
SUM(CASE beh WHEN 'fav' THEN 1 ELSE 0 END) '收藏量',
SUM(CASE beh WHEN 'cart' THEN 1 ELSE 0 END) '加购量',
SUM(CASE beh WHEN 'buy' THEN 1 ELSE 0 END) '付费量'
FROM sam_ub
WHERE ti_st='2017-11-28'#以2017年11月28日(周二)为例
GROUP BY hours
ORDER BY hours;
为了验证工作日与非工作日的用户活跃特征是否一样,我们以2017年12月2日(周六)为例:
SELECT hours,
SUM(CASE beh WHEN 'pv' THEN 1 ELSE 0 END) '浏览量',
SUM(CASE beh WHEN 'fav' THEN 1 ELSE 0 END) '收藏量',
SUM(CASE beh WHEN 'cart' THEN 1 ELSE 0 END) '加购量',
SUM(CASE beh WHEN 'buy' THEN 1 ELSE 0 END) '付费量'
FROM sam_ub
WHERE ti_st='2017-12-02' #以2017年12月2日(周六)为例
GROUP BY hours
ORDER BY hours;
由图6和图7的趋势可以看出,工作日和非工作日中这四个指标的走势很相近,都是在晚上9点达到一个高峰,说明在9点,用户的活跃度相对更高。因此,在晚上九点左右,适合做营销活动(比如直播、前*名立减),拉新和刺激更多人消费。
3.3 不同商品种类的用户行为
1)统计浏览次数、收藏次数和加入购物车次数在前20名的商品
SELECT gid,COUNT(uid) AS times
FROM sam_ub WHERE beh='pv'
GROUP BY gid
ORDER BY times DESC
LIMIT 20;
SELECT gid,COUNT(uid) AS times
FROM sam_ub WHERE beh='fav'
GROUP BY gid
ORDER BY times DESC
LIMIT 20;
SELECT gid,COUNT(uid) AS times
FROM sam_ub WHERE beh='cart'
GROUP BY gid
ORDER BY times DESC
LIMIT 20;
SELECT gid,COUNT(uid) AS times
FROM sam_ub WHERE beh='buy'
GROUP BY gid
ORDER BY times DESC
LIMIT 20;
由图8可知:
浏览次数位于前列的商品,在收藏、加购和最终购买的时候,除了商品ID为303154和1535294外,大多数并不在前列。这说明了浏览次数多的商品并不是用户想要的,可以想象得到“用户可以通过搜索和主页浏览商品,但对大部分商品并不感兴趣”。如果可以结合用户浏览每个商品时的浏览时长,就可以更加准确地匹配收藏、加购和购买次数位于前列的商品。
收藏次数或者加购次数位于前列的商品,同样与最终购买次数排名靠前的商品ID并没有很好的匹配。这可以推断出:倾向于浏览后直接购买的用户也还是存在的,并没有按照理想的产品漏斗(浏览-加购/收藏-购买)的流程。故我们可以通过“用户进行加购/收藏后优先发货”等活动来引导用户遵循理想的商品购买流程,进而简化分析过程。
2)统计每个商品的购买次数
SELECT gid,COUNT(uid) '购买次数'
FROM sam_ub
WHERE beh='buy'
GROUP BY gid
ORDER BY COUNT(uid) DESC;
由于商品个数实在太多,下面尝试查看有相同购买次数的商品数量和按商品种类分组的对应购买次数,是否可以得到明显的结论。
3)对应购买次数的商品个数
SELECT times AS "购买次数" , COUNT(gid)AS "商品数"
FROM (SELECT gid, COUNT(uid) AS 'times' FROM sam_ub WHERE beh='buy' GROUP BY gid) AS buy_times
GROUP BY times
ORDER BY COUNT(gid);
结果表明,购买次数多的商品并没有几个,反而只有一次购买的商品,说明总购买量主要是由仅有一次购买的商品贡献的。如果将用户行为的统计天数扩大至一个月、一个季度甚至是一年,这种规律是否依然存在?如果存在,就说明一些热门商品的受众范围并不是特别广,建议从自己的品牌口碑、产品质量、物流、服务、价格等方面进一步改进。
4)统计各类商品的购买次数
由2)3)可知,单独针对商品ID来分析用户的偏好是不可行的,我们可以尝试将商品分类(比如按商品类别分),查看结果是否明显。
SELECT gcateid,COUNT(uid) '购买次数'
FROM sam_ub
WHERE beh='buy'
GROUP BY gcateid
ORDER BY COUNT(uid) DESC;
由图10可知,这三个商品类别ID的购买次数都超过了1000次,最受用户喜欢,可以专门针对这三个商品类别做优惠活动(比如服装周、彩妆周),刺激更多用户消费。
3.4 基于RFM理论找出有价值的用户
RFM模型通过一个客户的近期购买行为(R)、购买的总体频率(F)以及花了多少钱(M)3项指标来描述该客户的价值状况,如图11所示。
由于数据集中没有订单金额信息,我们就只从R、F方面分析。
1)查看对应用户的消费间隔R值
#1.先找出每个用户最后一次购买时的日期,与最后一天的时间间隔
CREATE VIEW pay_B AS
SELECT uid,DATEDIFF('2017-12-03',MAX(ti_st)) AS B FROM sam_ub
WHEREbeh='buy'
GROUP BY uid;
#2.再根据时间间隔等级R值降序排序
SELECT uid,(CASE WHEN B BETWEEN 0 AND 2 THEN 3
WHEN B BETWEEN 3 AND 5 THEN 2
WHEN B BETWEEN 6 AND 8 THEN 1
ELSE 0 END) AS R
FROM pay_B
ORDER BY R DESC;
2)计算消费频次F
付费用户中消费次数从低到高为1-93次,将其分为6档1-10,11-20,21-30,31-40,41-50,50以上,对应F评分分别为1-6分,根据其活跃度将用户分为忠诚、活跃等类型。
#1.先计算出用户的消费次数
CREATE VIEWpay_times AS SELECT uid,COUNT(good_id) AS times FROM sam_ub WHEREbeh= "buy"
GROUP BY uidORDER BY COUNT(gid) DESC;
#2.再分级排序
SELECT uid,(CASE WHEN times BETWEEN 1 AND 10 THEN 1
WHEN times BETWEEN 11 AND 20 THEN 2
WHEN times BETWEEN 21 AND 30 THEN 3
WHEN times BETWEEN 31 AND 40 THEN 4
WHEN times BETWEEN 41 AND 50 THEN 5
WHEN times >= 51 THEN 6 ELSE 0 END) AS F
FROM pay_times
ORDER BY F DESC;
3)查看每个用户的R、F和R+F
SELECT r.uid id,R,F,R+F RF
FROM (SELECT uid, (CASE WHEN B BETWEEN 0 AND 2 THEN 3
WHEN B BETWEEN 3 AND 5 THEN 2
WHEN B BETWEEN 6 AND 8 THEN 1
ELSE 0 END) AS R
FROM pay_b
ORDER BY R DESC) r
JOIN (SELECT uid ,(CASE WHEN times BETWEEN 1 AND 10 THEN 0
WHEN times BETWEEN 11 AND 20 THEN 1
WHEN times BETWEEN 21 AND 30 THEN 2
WHEN times BETWEEN 31 AND 40 THEN 3
WHEN times BETWEEN 41 AND 50 THEN 4
WHEN times >= 51 THEN 5 ELSE NULL END) AS F
FROM pay_times
ORDER BY F DESC;
综合评分为8的用户是极度忠诚用户,需要维持好与用户的关系,积极推送用户心仪的商品;大于6的用户属于忠诚客户,可以积极推送营销信息;综合评分在为3-5范围内的用户,属于活跃用户,可以积极推送所关注店铺的上新活动和优惠信息;对于评分小于3的用户,属于一般用户,可以把他们当做发展用户,通过打折、优惠券、积分兑换等活动唤起用户注意力,提高产品黏性;而对于那些没有过购买行为的用户,属于新用户,可以通过新人特别优惠引起他们的购买欲望,让用户喜欢使用淘宝网购。
4)极度忠诚的用户行为分析
根据3)的查询结果,我们可以看出:有一位用户的R、F和R+F均为第一,说明他是淘宝的极度忠诚用户。
查看用户ID为9610的每天的行为:
SELECT ti_st,SUM(CASE
beha_type WHEN 'pv' THEN 1 ELSE 0 END) '浏览量',
SUM(CASE beh WHEN 'fav' THEN 1 ELSE 0END) '收藏量',
SUM(CASE beh WHEN 'cart' THEN 1 ELSE 0END) '加购量',
SUM(CASE behe WHEN 'buy' THEN 1 ELSE 0END) '消费量'
FROM sam_ub
WHERE uid='9610'
GROUP BY ti_st;
结果表明:该用户的浏览量和购买量很高,而收藏和加购量极低,代表这个极度忠诚的用户往往在浏览完之后直接购买,侧面支持了在统计浏览次数、收藏次数、和加入购物车次数在前20名的商品时的推断——倾向于浏览后直接购买的用户还是存在很多的。对于这类用户,往往就需要精准预测用户想要的商品以及对应的心理价位。
五、结论建议
1. 产品优化
从AARRR模型角度分析,产品的发展有五个阶段:获取用户、提高活跃度、提高留存率、获取营收和自传播。
就样本数据而言,
① 获取用户:用户第一次浏览
② 提高活跃度:用户浏览之后发生收藏、加购和购买的行为。
根据漏斗分析,我们发现浏览到购买的直接转化率较低,说明很多用户并不是浏览过后就直接购买的。在理想的购买流程中,“加购/收藏——购买”的转化率通常高于“浏览——收藏或加购”的转化率,这说明加购/收藏的商品更容易被用户购买。
为了提高活跃度,需要引导用户发生收藏/加购的行为。如何让用户多多加购/收藏,这就需要我们做好推荐算法,建立模型来精准预测用户的偏好以及消费档次;适当的营销活动,比如加购并收藏的用户优先发货,跨店满减活动;优化产品的购买流程。
③ 提高留存率:用户使用淘宝的频率
要提高用户使用淘宝频率,我们需要做好个性化推荐,使推荐内容吸引到用户去打开淘宝,但要注意不要让用户产生厌烦心理。
④ 获取营收:用户付费
淘宝可以说是电商行业中的巨头,付费转化率是很高的。如果要进一步提高付费转化率,我们仍然需要对不同价值的用户群体做针对性的营销活动,见下面的第4小节。
对于退货方面,还需要一些其他数据来获取退货率。若退货率不高,说明用户还是很放心地在淘宝上购买商品。
⑤ 自传播:转发到其他平台、邀请新用户
淘宝现阶段已经获得口碑,用户数量庞大。通过年龄层或地区划分,查找哪些部分的用户较少,针对性地进行多渠道推广的拉新活动。
2. 活动时间选择
样本的用户群体在每天的晚上九点是用户行为发生最多的,周六周日的浏览、收藏、加购和付费量比工作日大。建议拉新和营销活动在周末、晚上九点左右进行。
3. 对店铺的建议
由于浏览量高的商品大多不是用户最终购买的,
对于一些想要提高用户复购率的热门店铺,可以通过提高产品质量、适当降低价格、改进售前售后流程。
4.不同用户群体的营销建议
根据RFM模型结果,我们划分出了五类用户:极度忠诚、忠诚、活跃、一般、新用户。针对各类用户,我们给出不同的营销策略:
对于极度忠诚用户,他们往往通过浏览直接购买,这就需要维持好与用户的关系,积极推送用户心仪的商品;
对于忠诚客户,可以积极推送营销信息;
对于活跃用户,可以积极推送所关注店铺的上新活动和优惠信息;
对于一般用户,可以把他们当做重点发展用户,通过打折、优惠券、积分兑换等活动唤起用户注意力,提高产品黏性;
而对于那些没有过购买行为的新用户,可以通过新人特别优惠引起他们的购买欲望。