【2022BI数据分析大赛】如果FineBI恋上Python--直播电商用户流失分析
写在前面
FineBI如果集成了常用算法和模型,会是什么样子的?
本作品主旨在于探索FineBI在更深层次数据分析中的应用,涉及算法及模型的部分主要通过python来完成,本作品包括数据清洗、用户特征探索性分析、用户特征相关性分析、模型建立与优化和总结思考5个部分,数据来自天池https://tianchi.aliyun.com/dataset/dataDetail?dataId=124814,本文重点在于FineBI,涉及python的部分不详细展开讲述,有兴趣的小伙伴可以查看附件中的代码。希望通过这次机会,与评委、番薯们一起分享交流学习。
团队成员:积极热烈的淡竹,稳重靠谱的瞬间,有颜值有才华的CHH
一、问题背景及分析目的
(1)问题背景
客户流失的全部成本包括旧客户流失损失的收入和用新客户替换这些客户所涉及的营销成本,减少客户流失是每个公司的关键业务目标,预测和防止客户流失对每个产品/平台来说都是一个巨大的潜在收入来源。
(2)分析目的
客户流失分析主要是通过分析用户特征,寻找对用户流失影响较大的用户特征,根据电商领域业务知识,提出产品/平台的运营建议,从而提高用户粘性,降低用户流失率。
二、分析及设计思路
2.1 分析思路
2.2 设计思路
(1)布局设计
(2)配色与布局设计
作品以紫-蓝色为主色调(没什么含义,使用个人喜欢的颜色)。
对于同一个指标下的不同分类,遵循语义颜色一致性,即同一分类的颜色一致。
对于同一指标的不同数值,遵循数值颜色一致性,即数值大的颜色深,数值小的颜色浅。
尽量把分析过程相似的特征(如对用户维度特征的分析)放到tab页签中,力求界面简洁美观。
对于每个需要分析的模块,将分析结论在模块下方就近显示,让整个可视化分析“故事化”,整个看板即使直接用于会议和汇报,也很容易让初次接触的与会者快速读懂。
(3)新的尝试
尝试与python结合,进行更深入的数据挖掘分析
尝试用FineBI生成哑变量(虽然过程很繁琐,但是还是试出来了)
尝试制作箱线图,达到类似效果
三、数据清洗
3.1 缺失值处理
绝大多数情况下,建立模型需要一个完整的数据集,包含空值的数据会使数据挖掘过程陷入混乱,导致不可靠的输出,我们处理缺失值是为了更好地进行建模,因此,在具体实现之前,此步骤也可以放到模型建立之前,先用原始数据进行特征分析。
缺失值处理是对数据中的空值进行删除或者填充,简单的处理方法有直接删除、均值填充、中位数填充、众数填充和特殊值填充,更复杂的有插值填充、Knn均值填充等,这里不进行介绍。常用的缺失值处理方法如下:
(1)判断某指标的缺失值
排序后,如有缺失值,会出现在预览区的第一条数据中。
观察到需要进行缺失值填充的字段有:使用平台的时间、仓库到顾客地址的距离、使用APP时间、上月订单数量、订单数较去年增加、上月使用的优惠券数量、距上次下单天数。
(2)处理缺失值
对所有缺失值的列进行处理。以仓库到顾客地址距离这个指标为例,观察到该指标有明显的离群值,因此使用中位数填充。其他指标的处理缺失值方式类似,不进行赘述,处理缺失值的步骤如下:
Step1:新增列“仓库到顾客地址_中位数”
Step2:新增列“仓库到顾客地址_公里”
四、用户特征探索性分析
4.1 用户维度特征分析
用户维度特征,即描述用户的特征,包括常用登陆设备、城市等级、性别、年龄、婚姻状况、上月首选订单类型。分析思路如下:
(1)常用登陆设备分析
读图:使用Mobile Phone的总用户数远高于Phone和Pad,但是使用Phone的流失用户占比为22.4%,使用Pad的流失用户占比为19.8%,远高于Mobile Phone的12.5%
解图:建议产品团队测试phone和Pad终端的产品是否存在不稳定问题
(2)城市等级分析
读图:城市等级为3的流失用户占比为21.4%,城市等级为2的流失用户占比为19.8%,远高于城市等级为1的14.5%
解图:建议运营团队在城市等级为2和3的城市适当开展运营活动(如鼓励城市特色作品直播等),提高用户粘性
(3)性别分析
读图:女性用户是平台的主要用户,女性的流失用户占比为17.7%,男性的流失用户占比为15.5%,基本持平
解图:建议运营团队根据男性与女性喜欢的直播风格,进行直播内容定向推送,尝试降低其流失率
(4)年龄分析
读图:年龄分组为6的流失用户占比最高,为34.6%,其次是年龄分组为5,流失用户占比为22.5%
解图:建议运营团队鼓励更多年龄分组为5和6喜欢的直播内容和商品进驻,提高其留存率
(5)婚姻状况分析
读图:已婚的总用户数最多,且流失用户占比最低,是产品的优质用户群,单身的流失用户占比较高,为26.7%,远高于离异和已婚的用户
解图:建议运营团队在挖掘新用户时,更注意去吸引已婚的用户,对于现有的单身用户,采取积极留存措施
(6)上月首选订单类型分析
读图:上月主要订单为Mobile Phone和Household的流失用户占比较多,均超过了25%,其次是上月订单为Fashion的用户
解图:可能是由于Mobile Phone和Household的商品使用周期较长,用户购买该类商品后,很长一段时间不再有相同的购买意愿,从而造成用户流失
(7)用户维度特征分析总结:
使用Phone和Pad的流失用户占比远高于Mobile Phone,建议测试phone和Pad终端的产品是否存在不稳定问题
城市等级为3和2的流失用户占比远高于城市等级为1,建议在城市等级为2和3的城市适当开展运营活动,提高用户粘性
女性的流失用户占比与男性基本持平,建议根据男性与女性喜欢的直播风格,进行直播内容定向推送,尝试降低其流失率
年龄分组为6的流失用户占比最高,其次是年龄分组为5,建议鼓励更多年龄分组为5和6喜欢的直播内容和商品进驻,提高其留存率
已婚的总用户数最多,且流失用户占比最低,是产品的优质用户群,单身的流失用户占比远高于离异和已婚的用户,建议挖掘新用户时,更注意去吸引已婚的用户,并对于现有的单身用户,采取积极留存措施
上月主要订单为Mobile Phone和Household的流失用户占比较多,可能是因为Mobile Phone和Household的商品使用周期较长,用户购买该类商品后,很长一段时间不再有相同的购买意愿,因此造成用户流失
4.2 用户行为特征分析
用户行为特征,顾名思义,是用户在平台上的行为数据,包括:仓库到顾客地址的平均距离、订单数较去年增加、顾客对服务的满意度、距上次下单天数、上月订单数量、上月平均折扣金额、上月使用的优惠券数量、上月投诉次数、使用APP的时间、使用平台的时间和用户关注的主播数量。
通过分析各行为特征指标流失用户和非流失用户的均值,差异较大的特征指标为影响用户流失情况明显的指标,对这些特征进行分析。尝试制作替代版的箱线图,最大最小值用星星表示。在求百分位数的时候,需要使用函数PERCENTILE_AGG(),这个函数只能在实时模式下使用,抽取模式不能使用,不是很友好。
最终对用户行为特征分析如下:有着特征【使用平台的时间(月)越短,上月有过投诉行为,上月平均获得折扣金额越小,距上次下单天数越短】之一或者其中几个的用户,流失的可能性更大。
五、用户特征相关性分析
5.1 生成哑变量
哑变量也叫虚拟变量,引入哑变量的目的是将不能定量处理的变量(如性别、职业等)量化,以性别为例,如果将女性和男性设置为1和2,代入到模型中是不太合理的,因为女性和男性没有大小和顺序关系。特别在回归模型中,生成哑变量后,每个哑变量都能计算得到对应得回归系数,更容易解读模型的结果。
图中,由于性别_male和性别_female这两个变量是互斥的,可以只保留其中一个变量。一般情况下,如果有m种互斥的属性类型,在模型中引入(m-1)个虚拟变量。
下面以性别这一变量为例,展示FineBI生成哑变量的过程。其余需要生成哑变量的维度列有:常用登陆设备、城市等级、年龄、婚姻状况和上月首选订单类型,生成过程类似,在文中不进行重复阐述。当数据需要生成哑变量的维度列较多,各维度列的分类较多的情况下,FineBI整个生成哑变量的过程非常繁琐,仅供与各位番薯参考学习。更建议用python进行哑变量处理(代码见附件),方便快捷。
(1)行列转换
将清洗后的数据以Excel导入到FineBI中,点击编辑,选择行列转换
(2)生成哑变量值
新建自助数据集,新增对应的哑变量列,只保留性别_Female这个哑变量
最终的哑变量生成如下:
5.2 计算相关系数
用户流失标签的相关系数绝对值越大,与用户流失相关程度越高;>0.7为强相关,<0.3为弱相关,相关系数为正,与用户流失为正相关,否则,为负相关。
FineBI没法计算相关系数,因此本部分是通过python完成的。将处理好的数据以Excel形式导出,在python中读取Excel文件,计算相关系数并导出相关系数结果文件(python代码见附件)。最后导入FineBI进行分析。
分析结论如下:
使用平台时间_月相关系数为-0.32,因此,使用平台时间越短,用户越有可能流失
上月投诉次数相关系数为0.25,因此,上月投诉次数越多,用户越有可能流失
婚姻状况_Single相关系数为0.18,因此,单身用户越有可能流失
距上次下单天数_天相关系数为-0.16,因此,距上次下单天数越近,用户已经买到了心仪的物品,越有可能流失
上月客户的首选订单类别_Mobile Phone相关系数为0.15,因此,用户上次的首选订单类别为Mobile Phone的,越有可能流失
七、模型建立与优化
7.1 模型建立与模型评估
对数据进行缺失值处理和生成哑变量后,就可以建立机器学习模型,对数据进行挖掘分析。
常用的单模型有:逻辑回归模型、决策树模型、朴素贝叶斯模型、K近邻算法等,融合的多模型有:随机森林模型、AdaBoost模型、GBDT模型、LightGBM模型等。
机器学习模型效果的主要评估方法有:准确率、精确率与召回率、混淆矩阵、ROC和AUC等。本文使用ROC得分来评估机器学习模型的效果,ROC得分越高,机器学习模型的效果越好。
如果特征较多,需要进行特征提取,常用的特征选择方法有:相关系数过滤法、递归消除法、主成分分析法等,生成哑变量后共有29个特征,并不算多,因此没有进行特征提取。
本文不对模型及模型评估算法进行介绍(三言两语七嘴八舌也很难概括),感兴趣的番薯可以自行学习。
各模型在默认参数下的ROC得分整理成Excel文件,导入FineBI进行分析。
分析结果如下:
LightGBM算法的学习效果最好,ROC得分为0.983,其次为随机森林模型,ROC得分为0.981
整体上看,融合的多模型ROC得分比单模型算法高,学习效果比单模型好
7.2模型优化
模型优化是个枯燥且需要耐心的过程,主要是寻找最优的模型参数,使得模型的准确度最高。这里用最常用且简便的GridSearch网格搜索寻找模型的最优参数。
GridSearch网格搜索是一种穷举搜索的参数调优手段,通过遍历所有的候选参数,循环建立模型并评估模型的有效性和准确性,选取最好的参数作为最终结果。
(1)模型优化步骤如下(python代码见附件):
选择学习效果最好的LightGBM模型,通过GridSearch网格搜索,找到其最优的模型参数。
使用最优的模型参数,建立LightGBM机器学习模型,计算器ROC得分,并输出最优模型参数下的特征及特征重要度。
(2)对优化后的模型结果进行分析如下:
参数调优后的算法ROC得分比调优前的高
根据参数调优的LightGBM模型,对用户流失影响最大的用户特征依次为:上月平均折扣金额、仓库到顾客地址的距离、订单数量较去年增加、使用平台时间和距上次下单天数,上述的用户行为特征与相关系数分析的略有差异,整体来说与探索性分析结果基本一致。
(3)根据分析结果,得出平台运营建议如下:
适当开展补贴活动,鼓励商家对消费者进行补贴;
增加发货仓库,降低商品的运输时间;
鼓励更多主播创造更多优质直播内容,鼓励用户收藏喜欢的主播,鼓励用户成为主播;
适当开展签到、每日任务等活动,提高用户使用平台时间,增强用户粘性;
对于长时间未下单的用户,平台对其进行精准消息推送,尝试召回用户。
八、案例价值
(1)简单化日常工作,半自动化生成可视化看板。本案例形成了数据上传、数据处理、数据可视化生成的半自动化闭环系统,提高制作可视化分析看板的效率超过60%。用户更新数据重新制作可视化看板只需要三步:
Step1:把原始的EXCEL数据集替换为新的数据,然后导出自助数据集处理好的EXCEL文件存到python程序对应的文件路径下。
Step2:跑一遍python程序,将python生成的结果文件替换掉FineBI中的文件(看板数据同步更新)
Step3:根据新的数据,微调可视化看板的结论。
当然,只能“半自动化”是因为案例使用了两种工具,如果能只用一种工具实现全流程,工作流程将更加简化。
(2)数据可视化与数据挖掘结合,分析更深入。取两者之长处,用FineBI进行用户特征展示,用python进行相关系数分析、模型建立和优化,输出对应模型结果,最终由FineBI整合形成可视化分析报告,更准确、深入地得出相应的业务问题结论,快速进行决策。
(3)为小数据量的数据挖掘和业务分析提供参考。案例中只有5630行数据,但是依旧可以通过常用的机器学习方法,进行数据挖掘。在很多企业的数据分析场景中,数据质量一直是个“老大难”问题,而数据质量的好坏决定了数据分析结果是否准确。我也在一直探索数据质量、数据量、分析效率和分析准确性之间的平衡,“从数据表中抽取出数据质量较好的行(数据)和列(指标)进行数据分析挖掘,得出对应的结论”,这也许可以成为一种平衡方案。在机器学习的结果解读中,不是研究因果,而是分析影响,不是研究某特征导致了用户的流失,而是分析某特征对用户流失的影响有多大,如果是正向的,则采取措施增强其影响,反之,降低其影响。在采取运营措施后,用户的数据的分析挖掘结果,又可反过来验证运营措施的有效性。
九、总结思考
在作品的最后,总结一下这次比赛的心得,也是一次复盘,希望积累的经验能够运用到未来的工作和人生中。
(1)熟悉业务,透过可视化展现看业务内涵:内行看门道,外行看热闹。一个可视化看板不仅仅是数据图表的堆叠,而是通过这些图表显示的信息,从而分析业务变化情况,寻找变化原因,给出业务建议。一开始写图表分析结论的时候,我也仅仅局限于“谁多谁少,谁大谁小”,平时熟悉的领域并非电商,这些数据的多少和大小意味着什么,该如何去解读,也是自己边做作品,边查资料,一点点想出来的。我想看到可视化图表里面的“门道”--原来里面隐藏了很多意思,而不仅仅只是看个“热闹”--这看板做得挺好看的
(2)保持期待,不给自己设限:FineBI作为一款近乎0代码的自助分析工具,可以通过拖拉拽的方式,快速制作数据可视化看板。FineBI是现在以数据可视化和简单分析为主,而不是以后它也只能做可视化和简单分析。我尝试去用FineBI进行缺失值处理、哑变量生成,或者制作类箱线图,虽然很麻烦,但是七拐八绕也达成了。FineBI以后是将自助分析做到极致,还是去发展新的功能(比如集成机器学习模块,零代码建模)?。我好奇并期待FineBI最后会发展迭代成为一个什么样的产品。换成人生鸡汤就是,现在不能做到的,不代表以后不能做,永远对自己的人生保持好奇和期待。可以只把自己熟悉的领域做到极致,也可以多尝试新事物。你会成为谁,取决于你自己。
附:最终效果图
附件:直播电商用户流失行为分析_python代码.html (613.03 K)