数据分析:商业分析方法进阶(三)

三、分析原因

根据“明确问题” 得出的分析目标,指定细分的分析策略:

  • 【P0: A→I 】部分是转化率低的问题,在零售行业中,【人货场】分析是最常用且有效的分析方法,故此案例也将应用该方法进行分析

  • 【P1: P→L】部分是用户复购表现很好,所以可以通过【用户复购分析】,挖掘、总结复购特征

  • 【P2: I→P】部分目的在与进一步透析用户购买行为,可以采用【AIPL+RFM】分析方法进行分析

【P0: A→I 】转化率低,结合【人货场】分析找到原因

1.人

【人】的部分主要在于观察用户行为特点,以总结经验。当前数据维度有限,用户自身行为相关的数据除了商品就是时间,故此部分主要分析A到I高效转化的时间特征,以小时为基准进行分析。

select  a.`小时`, `A-浏览行为`, `I-兴趣行为`,
    concat(round((`I-兴趣行为`/`A-浏览行为`),3)*100,'%') as 'A→I转化率'
from
    (select hour(datetime) as '小时', count(*) as 'A-浏览行为' 
    from behavior
    where view=1
    group by hour(datetime)
) as a
left join
    (select hour(datetime) as '小时', count(*)  as 'I-兴趣行为' 
    from behavior
    where favor = 1 or cart =1
    group by hour(datetime)
) as i
on a.`小时` = i.`小时`
order by a.`小时`;

结果如图:

以“平均值”作为对比的基准

select  
    avg(`A-浏览行为`) as 'A-浏览行为 平均值', 
    avg(`I-兴趣行为`) as 'I-兴趣行为 平均值',
    concat(round(avg(`I-兴趣行为`)/avg(`A-浏览行为`),3)*100,'%') as 'A→I转化率 平均值'
from
    (select hour(datetime) as '小时', count(*) as 'A-浏览行为' 
    from behavior
    where view=1
    group by hour(datetime)
) as a
left join
    (select hour(datetime) as '小时', count(*)  as 'I-兴趣行为' 
    from behavior
    where favor = 1 or cart =1
    group by hour(datetime)
) as i
on a.`小时` = i.`小时`
order by a.`小时`;

得到结果如图所示:

因每个时段的浏览人数不同,为确保分析的结果有效,故需选择 浏览值大于平均值3733的时段来观察:在这些时段中, 我们认为转化率大于 平均值9.1%的时段,

select * 
from
(select  a.`小时`, `A-浏览行为`, `I-兴趣行为`,
    concat(round((`I-兴趣行为`/`A-浏览行为`),3)*100,'%') as 'A→I转化率'
from
    (select hour(datetime) as '小时', count(*) as 'A-浏览行为' 
    from behavior
    where view=1
    group by hour(datetime)
) as a
left join
    (select hour(datetime) as '小时', count(*)  as 'I-兴趣行为' 
    from behavior
    where favor = 1 or cart =1
    group by hour(datetime)
) as i
on a.`小时` = i.`小时`) as b
where `A-浏览行为`>3733 and `A→I转化率`>=9.1
order by `小时`;

结论:可选择11点,15-17点,19点,22-23点作为投放选择时间,其中23点的转化率为最大值,可作为最佳投放时间

2.货

针对【人货匹配】的情况进行分析之前,先了解AI阶段涉及到的总商品和总商品分类:

select  count(distinct item_id) as 'A' 
from userbehavior
where behavior_type ='pv';

结果如图,共有60592款商品被有效浏览。

接下来,计算用户感兴趣的商品:

select count(distinct item_id) as 'I'
from userbehavior
where behavior_type in ('favor','cart');

结果如图,用户共对5206款商品产生兴趣。

结合【假设验证分析方法】,基于有效浏览机产生兴趣的商品数差异较大的情况,提出假设:用户偏好的商品主要集中在少数商品,而大部分长尾商品则是被错误地推荐到用户。

验证思路:

  • 1. 将被浏览最多的前100款商品 以及 用户最感兴趣(即加购、收藏)的前100款商品 进行交叉查询
  • 2. 如果交叉出的商品数较少,则假设成立
  • 3. 反之,则假设不成立
select item_id,count(*) as 'A'
from userbehavior
where behavior_type ='pv'
group by item_id
order by A desc
limit 100;

按验证思路里说的,分别A, I 热门的前100款单品交叉,查看交叉数量:

select count(*) as 'a&i交叉商品数'
from(
    select item_id,count(distinct item_id) as a_item
    from userbehavior
    where behavior_type='pv'
    group by item_id
    order by a_item desc
    limit 100)as m
inner join
    (select item_id,count(distinct item_id) as i_item
    from userbehavior
    where behavior_type in('favor','cart')
    group by item_id
    order by i_item desc
    limit 100)as n
on m.item_id=n.item_id;

结果显示,仅有7款商品既是高浏览量,也是高收藏/加购的,故假设成立:用户偏好的商品主要集中在少数商品,而大部分长尾商品则是被错误地推荐到用户。进而可得出【人货匹配】效率低的结论。

3.场

【场】广义来说指的是与用户的触点,例如在线下零售业,则是门店; 在线上电商,则是在线店铺、平台、投放渠道等。

从这个角度,分析此段时间淘宝平台的活动情况:

  • 1. 结合业务经验,数据时间段在双十一之后,双十二之前,即是两个大促的中间节点

  • 2. 查询2017年双十二的相关信息如下:

    • l 活动:天猫双12年终品牌盛典
    • l 预热时间:2017年12月7日00:00:00-2017年12月11日23:59:59;
    • l 上线时间:2017年12月12日00:00:00-2017年12月12日23:59:59。
  • 3. 由活动时间可知,分析时间段处于双十二预热时间前夕的低潮期,客观上营销效果整体比较平淡,进而影响AI转化率。

4.总结

人:为提高转化率,可选择在 浏览值大于3733 且 转化率大于 9.1%的时间段加大投放力度;其中,23点为转化率大于10%,为最佳投放时间

货:人货匹配效率低,平台大部分商品为长尾商品,但它们并不能很好地吸引用户兴趣,需要进一步优化商品信息以提升转化率。

场:从平台活动周期角度来说,分析时间段正处于大促活动预热前的低潮期,此客观因素也在一定程度上导致转化率低。

【P1: P→L】用户复购表现很好,通过【用户复购分析】,挖掘、总结复购特征

用户复购分析是为了优化用户触达策略,即何时何地想哪些已购用户推送什么商品可提升复购率。本案例中,因商品和受众特征数据不足,不进行商品推荐分析,将通过分析用户【复购周期】以解决业务中触达时间的问题,主要包括何时触达、触达多久。

1.何时触达

可通过计算用户平均回购周期,即可在用户发生购买行为后,在平均回购周期内对其进行营销触达。

1) 通过以下语句先计算出每个用户每次消费的回购周期

-- 创建消费次数视图
create view consume as 
select distinct user_id, dates, 
   dense_rank() over(partition by user_id order by dates) 'n_consume' 
   from behavior
where buy=1
select a.user_id, a.dates, a.n_consume,
    datediff(a.dates, b.dates) as '回购周期(天)'
from
 (select * from consume) as a,
 (select * from consume) as b
where a.user_id = b.user_id and 
b.n_consume = a.n_consume-1;

查询结果

结果说明:如图,user_id 为100的用户 n_consume=2,回购周期=2天 即为期第二次消费时,与第一次消费间隔了2天,也就是说该用户在2天前进行了第一次消费。

2)基于以上查询结果,可以将每人次的回购周期进行平均,取得最终的 平均回购周期

select avg(datediff(a.dates, b.dates))  as '平均回购周期(天)'
from
 (select * from consume) as a,
 (select * from consume) as b
where  a.user_id = b.user_id
and  b.n_consume = a.n_consume-1

查询结果:

结论:即在用户购买行为后的2-3天内对其进行触达。

2.触达多久:即触达多久能覆盖用户在生命周期内的全部付费

1)统计每个客户“首次消费日期”、“最后消费日期”后,相减即可算得每个客户的消费周期,命名为“最长消费间隔”。

select  a.user_id,
  a.dates '首次消费日期',
  `最后消费日期`,
  datediff(`最后消费日期`,a.dates) as '最长消费间隔'
from
  (select user_id, dates 
  from consume 
  where n_consume=1) as a
left join
  (select user_id, max(dates) as '最后消费日期' 
  from consume 
  group by user_id) as b
on a.user_id = b.user_id
-- 仅针对复购人群
where a.user_id in 
  (select distinct user_id 
  from consume 
  where n_consume>1);

查询结果:

2)基于上面的查询结果,按日期进行分组统计,计算得每天消费的客户平均最长消费间隔。

select `首次消费日期`,
    weekday(`首次消费日期`)+1 as '星期几',
    avg(`最长消费间隔`) as '平均最长消费间隔'
from
    (select a.user_id,
        a.dates as '首次消费日期',
        `最后消费日期`,
        datediff(`最后消费日期`,a.dates) as '最长消费间隔'
    from
        (select user_id, dates 
        from consume 
        where n_consume=1) as a
    left join
        (select user_id, max(dates) as '最后消费日期'
        from consume
        group by user_id) b
    on a.user_id = b.user_id
-- 仅针对复购人群
    where b.user_id in 
        (select distinct user_id 
        from consume 
        where n_consume>1)
        ) as t
group by `首次消费日期`
order by `首次消费日期`;

优化一下

select `首次消费日期`,
    weekday(`首次消费日期`)+1 as '星期几',
    avg(`最长消费间隔`) as '平均最长消费间隔'
from
    (select a.user_id,
        a.dates as '首次消费日期',
        `最后消费日期`,
        datediff(`最后消费日期`,a.dates) as '最长消费间隔'
    from
        (seleperformance_schemact user_id, dates 
        from consume 
        where n_consume=1) as a
    inner join
        (select user_id, max(dates) as '最后消费日期'
        from consumea
        where n_consume>1
        group by user_id) b
    on a.user_id = b.user_id) as c
group by `首次消费日期`
order by `首次消费日期`;

结果如图,在周六(11-25) 首购的客户,最长消费间隔最长为5.9天。

【P2:I→P】挖掘用户购买转化路径,采用【AIPL+RFM】进行分析

1.用户首购特征

有此前漏斗分析可知,平台用户复购率高达63%,也就是说用户只要突破0到1的消费,接下来就有63%的机会复购,所以此部分重点应放在如何提升AI→P。

为了提高AI客户的购买转化率,可以通过高购买率客户与低购买率客户对比,挖掘高购买率客户特征,进而指导业务运营策略。

先创建视图,以统计每个客户的购买率及其他数据。语句如下:

create view user_feature as
select user_id,
    sum(view) as '浏览',
    sum(favor) as '收藏', 
    sum(cart) as '加购', 
    sum(buy) as '购买',
    (sum(cart)+sum(favor))/sum(view) as '加购率',
    sum(buy)/(sum(view)+sum(cart)+sum(favor)) as '购买率',
    dense_rank() over(order by sum(buy)/(sum(view)+sum(cart)+sum(favor)) desc)  as '购买率排序'
from behavior
group by user_id;
select * 
from user_feature
order by `购买率` asc;

结果如图:

1)购买率高 vs 购买率低

根据二八原则,定位购买率前20%和后20%分别为高购买率和低购买率用户。根据视图统计,共387个购买率分层。即得到两个群组用户的特点

select  avg(`浏览`) as '平均浏览数',
    avg(`收藏`+`加购`) as '平均兴趣数',
    avg(`加购率`) as '平均加购率'
from user_feature
where `购买率排序`<= 387*0.2;

高购买率客户品类集中度:

select count(distinct category_id) as '购买品类集中度' 
from userbehavior
where behavior_type ='buy'
and user_id in (
    select distinct user_id 
    from user_feature
    where `购买率排序` <= 387*0.2);

低购买率客户 特征:
注意需剔除无购买人群影响

select avg(`浏览`) as '平均浏览数',
    avg(`收藏`+`加购`) as '平均兴趣数',
    avg(`加购率`) as '平均加购率'
from user_feature
where `购买率排序` > 387*0.8 and `购买率` > 0;

低购买率客户品类集中度:

select count(distinct category_id) as '购买品类集中度' 
from userbehavior
where behavior_type ='buy'
and user_id in (
    select distinct user_id 
    from user_feature
    where `购买率排序` > 387*0.8 and `购买率` > 0);

2)总结

  • 高购买率用户浏览商品数36远小于低购买率用户浏览商品数194
  • 高购买率用户加购率11.68%大于低购买率用户加购率9.92%
  • 高购买率用户购买品类集中度399远大于低购买率用户浏览商品数97

综上所述可得到不同人群画像特征:高购买率人群浏览商品数虽然少,但加购率高和购买率更高,大概率为决策型顾客,因个人需求看对商品就下手购买;相对比下,低购买率人群更多是纠结型顾客,需要反复浏览商品和收藏加购来确认最终想要的商品。同时低购买率人群关注品类集中度较高,可针对这些品类优化品类信息,减少用户浏览跳失率。

2. AIPL + RFM分析

为进一步促进用户购买,需进行精细化用户运营,可通过RFM分析实现。根据实际业务和数据,重新定义RFM:

  • R:最近一次购买离分析日期的距离,用以判断购买用户活跃状态
  • F:客户收藏、加购行为次数
  • M:客户购买行为次数

即可得出详细用户分群及其人群特征:

  • 1.重要价值用户(R低F高M高):用户处于购买活跃期,感兴趣的商品多,购买次数也多
  • 2.一般价值用户(R低F高M低):用户处于购买活跃期,感兴趣的商品多,购买次数少
  • 3.重要发展用户(R低F低M高):用户处于购买活跃期,感兴趣的商品少,购买次数多
  • 4.一般发展用户(R低F低M低):用户处于购买活跃期,感兴趣的商品少,购买次数少
  • 5.重要唤回用户(R高F高M高):用户已不活跃,感兴趣的商品多,购买次数也多
  • 6.一般唤回用户(R高F高M低):用户已不活跃,感兴趣的商品多,购买次数少
  • 7.重要挽留用户(R高F低M高):用户已不活跃,感兴趣的商品少,购买次数多
  • 8.一般挽留用户(R高F低M低):用户已不活跃,感兴趣的商品少,购买次数少

1)按以上定义,计算出每个客户的R、F、M值

create view RFM as
select r.user_id, R, F, M 
from
    (select user_id, datediff('2017-12-03', dates) 'R' 
    from consume as a
    where n_consume = (
    select max(n_consume) 
    from consume b
    where a.user_id = b.user_id )
    )  as r
left join
    (select user_id, sum(favor)+sum(cart) 'F', sum(buy) as 'M' 
    from behavior
    group by user_id) as fm
on r.user_id = fm.user_id;

2)为了划分R、F、M值的高 与低,这里采用常用的平均值法作为阈值

select avg(R), avg(F), avg(M) 
from RFM;

3)根据以上RFM阈值,及RFM定义,将每个客户划分到不同的用户价值组中。

create view user_RFM as
select user_id,
    case
        when R < 2.4501 and F>9.3115 and M>2.8018 then '重要价值用户'
        when R < 2.4501 and F>9.3115 and M<2.8018 then '一般价值用户'
        when R < 2.4501 and F<9.3115 and M>2.8018 then '重要发展用户'
        when R < 2.4501 and F<9.3115 and M<2.8018 then '一般发展用户'
        when R > 2.4501 and F>9.3115 and M>2.8018 then '重要唤回用户'
        when R > 2.4501 and F>9.3115 and M<2.8018 then '一般唤回用户' 
        when R > 2.4501 and F<9.3115 and M>2.8018 then '重要挽留用户'
        when R > 2.4501 and F<9.3115 and M<2.8018 then '一般挽留用户'
        end as '用户价值族群'
from RFM;

结果如图:

4)统计各个组的用户数及用户占比,用于对用户运营现状进行分析,并给出运营策略方向。

select `用户价值族群`, count(user_id) '用户数',
    concat(round(count(user_id)/983*100,3),'%') as '用户数占比'
from user_RFM
group by `用户价值族群`
order by `用户价值族群`

如上图为RFM模型分组结果,对比分析需要对照组进行比照分析,因数据限制,此处结合业务经验进行判断:

    1. “重要”型用户累计占比26.8%(3.1%+3.5%+7.4%+12.8%),符合二八规律
    1. 从【用户RFM转化路径】角度来看:重要价值用户占比较少,而主要由一般价值用户、重要发展用户、重要唤回用户转化而来
    • l 一般价值、重要唤回用户基数较多,可优先对两个人群进行“升级”
    • l 其次,重要发展用户数量少,需要从基数较多的一般发展用户转化,之后再考虑将重要发展转为重要价值
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,176评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 95,928评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 171,252评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,700评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,717评论 6 399
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,231评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,608评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,572评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,117评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,137评论 3 344
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,280评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,908评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,597评论 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,067评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,202评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,784评论 3 380
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,308评论 2 365

推荐阅读更多精彩内容