前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从业务数据分析到机器学习应用的一次经历

从业务数据分析到机器学习应用的一次经历

作者头像
程序你好
发布2018-07-20 14:31:41
4720
发布2018-07-20 14:31:41
举报
文章被收录于专栏:程序你好程序你好

本文通过一次完整的项目经历,从业务数据的分析开始,到产品优化建议,再到通过机器学习进行进一步的处理进行了比较完成的提炼。 腾讯电脑管家作为一款目前最流行的pc端软件之一,如何提升市场份额同时提升用户体验是我们一直在探索和考虑的问题。业务数据分析方面主要是考虑产品优化的建议;机器学习方面,特征构造、模型选型、ABtest等都有比较充分的描述和说明。希望能够对大家在数据分析的工作能有一定的启发,如有不足之处还望大家多指教。

腾讯电脑管家作为一款安全软件,目前在市场上拥有数量非常巨大的用户,并且承载着很多很多与用户日常使用功能关系都非常密切的功能。如何提升电脑管家的市场份额,是电脑管家的一个终极目标。为了提升管家的市场份额。我们做了很多事情,比如:提高用户留存,增加安装量,提升渠道质量等等。除了这些,我们也一直在探索新的方法。

在我们的思考和尝试中发现目前的方法大多数是从流入这个角度去考虑的,如果在流失和卸载的角度,能最大程度的减少卸载,也是提升市场份额的一条路。于是我从最直接的卸载反馈入手进行分析,看看是否能找到减少卸载的办法。

说明一点:因为部分数据相对敏感,因此在本文中,一些具体的数据已经略去或者粗化,主要想介绍的是从业务数据分析到机器学习协助提升业务想过的思想和框架。大家阅读的过程中可以暂且忽略数据具体值,如影响阅读,还请原谅。

从电脑管家的卸载反馈出发,可以通过一个数据漏斗,比较直观的展示一下整个分析的过程。

第一步是过滤掉无用的反馈,其实近80%的反馈都是没有分析价值的,原因是由于大多数用户包括正在浏览这篇文章的你,可能在卸载一个软件的时候,都不会太有耐心去填写甚至是点击一下卸载的原因。筛选后大约剩下20%的有用反馈内容。

通过cnn分词和语义分类(jieba分词,然后通过cnn分类,后续另起一篇文章讲述这边通过深度学习对文本进行金丹分类的过程),我将反馈分为两个大类,第一类是安装推荐类,大约占57%,第二类为用户反感。约占43%首先来看安装推荐,大多数是在吐槽重复安装或者安装方式不明,以及频繁的提醒或者和竞品不兼容等问题。这些问题我梳理后,反馈到对应的产品组,由他们具体处理;

其次,用户反感中,第一类是运营活动的问题,很多是吐槽奖励未兑现,这些很多是由于运营活动规则的歧义,梳理后也反馈到运营组的同学那边,由他们进一步分析;其次,功能类中,关于锁定主页,修改主页等的反馈占比是最高的,涉及的功能是默认策略锁定主页。为什么这个功能的吐槽和反馈会这么多呢?我觉得非常值得进一步分析。

首先,我找到默认策略锁定主页的业务流程,大致为:每天管家会在后台扫用户的机器,如果发现用户的主页不是我们事先设定好的一些列地址,那么管家会在后台随机的对用户的机器进行锁定;锁定后会弹出tips提醒用户主页被修改了。

电脑管家的功能基于使用的性质的不同可以分为主动使用和被动使用两种,默认策略锁主页属于被动功能。我提取管家内的被动使用功能的使用后卸载率的情况,发现默认策略锁主页这个功能的功能使用后卸载率是最高的,而且高出第二位很多,那么我觉得是很有必要重点进行分析的,如果可以找到有效的方法,降低卸载率,那么至少有两方面好处:

  • 1.可以发现问题,解决问题,提升该功能的用户体验,减少卸载和吐槽;
  • 2.如果方法可以应用到其他被动功能,那么对于降低整体卸载率是有帮助的,也就有助于提升管家整体的市场份额。

根据业务流程,也梳理了一个数据漏斗进行分析:对于满足锁定策略的用户,大约有90%会触发锁定的动作,触发锁定后,大约会有70%的用户被成功锁定,成功锁定后99%的用户就会弹出tips提醒用户主页被修改了。接下来大约会有4.5~4.7%的用户当天就卸载了电脑管家。我认为分析这部分用户,才能找到卸载率高居榜首的原因。

因此,接下来我提取了一批当天被锁定主页且卸载了电脑管家的用户,从他们的用户画像入手进行分析。

从性别,年龄,所在的省份,城市,管家的启动,功能使用情况,安装时间分布情况的多个维度进行分析。通过数据的比对,我发现只有一个与大盘的分布是不同的,那就是安装时间的分布这个维度。

从图中可以看出,当天和前1天安装的用户卸载率比大盘的高很多。而其他的维度,基本上和大盘分布都是很接近的。那么围绕安装时间这个维度,我又进入了比较具体的分析和比对。

当天安装和前1天安装的用户实际都是管家的新装用户,我分析了这批用户的卸载率情况。发现新装用户的卸载率比正常水平高出了3%~4%。同时对比了管家大盘卸载用户发现,锁主页的新装用户卸载率高出很多,并且当天安装和前1天安装的用户累计的占比已经达到87%,而大盘只有61%也就是说与大盘的用户相比,锁定主页后卸载的很大一部分都是新装用户。两个累计卸载率的不同让我马上有了一个设想,如果我不给这批新装的用户锁定主页,那么是不是可以降低这个功能的卸载率?带着这个设想,我进行了两轮abtest。

第一轮abtest中,我每天随机提取管家的新装用户10w,随机分为5w/5w两部分,监控这批新装用户锁主页和卸载的情况。

partA:制作成黑名单,避免对这批用户锁定主页,统计一周卸载率的均值;

partB:不做任何处理,作为对比组,同样统计一周卸载率的均值。

经过一周的监控,对比partA和partB两个部分的卸载率情况,从图中可以看出,partA的卸载率整体都比partB低约一个点,这说明有一部分新装用户在不给他们锁主页后,他们就不卸载管家了。

第二轮abtest中,我随机在管家大盘中提取了约100W的用户,随机分为50W/50W的两部分,进行abtest。

partA:锁定之前会判断是否是新装用户,如果是则不锁定,统计一周的卸载率均值;

partB:不做任何处理,作为对比组,统计一周卸载率的均值。

从对比结果中可以看出,如果避免给新装用户锁定主页,卸载率是有一定的下降。结合数据分析的结果和两轮abtest的结论,我提出了一个产品优化点击建议:新装用户在刚刚安装完管家后,各类软件管理,清理,浏览器相关的tips会比较多,建议避免对新装用户锁主页。

在10月底,上线这个优化,在锁定之前会判断这个用户是否是新装的用户,如果是,就不会给锁主页。上线后,锁主页的卸载率立刻有了明显的下降,下降了大约1%。通过abtest的估计,每天大约可以减少卸载量约1000个。

上线了产品的优化后,默认策略锁定主页的卸载率量了有了一定的下降,但是在排行榜仍然是最高的。感觉我们做的工作是不是还是不够。有没有办法再降1%,达到平均水平呢?

在思考这个问题的过程中,我想到在前面的产品优化建议中,实际上我们有分析了大量的用户画像特征,分析出新装用户卸载的可能性更高,然后通过产品优化避开新装用户的锁定,于是我有了第二个设想,有没有可能挖掘更多的用户特征,通过机器学习的方法,预测出卸载可能性高的用户制作成黑名单,避免对这批用户锁定主页。如果这个方案有效,那也可以降低卸载率。

有了这个想法后,我马上展开新行动,挖掘用户的特征,训练模型,进行abtest。

通过机器学习预测高卸载可能性用户的流程对大多数同学来说应该还是比较熟悉的。首先,提取了锁定主页且当天卸载的用户作为正样本和锁定了主页当天没有卸载管家的用户作为负样本;接下来是特征构建和特征处理;然后使用svm,逻辑回归等五个模型分别进行训练,并采用十折交叉验证的方法进行训练和验证;最后,预测的了一批用户我们进行了abtest。

比较耗费时间和精力的,还是在特征工程方面,主要是特征构建和特征处理。特征处理主要是进行one-hot编码,哑变量处理,缺失值处理等。

特征选择主要通过卡方检验,基尼系数和信息增益筛选特征。通过这里的步骤筛选出第一批特征。

附:各个检验的含义

卡方检验:根据卡方独立性检验结果,将每个特征对应的卡方统计量按照从大到小的顺序进行排序,对于出现次数较少的特征更容易给出高分。例如某一个特征就出现过一次在分类正确的数据中,则该特征会得到相对高的分数;

基尼系数:总体内包含的类别越杂乱,GINI指数就越大(跟熵的概念很相似)。信息熵类似的做特征选择的方式,可以用来数据的不纯度;

信息增益:某一个特征对于我们需要预测的结果提供了多少信息。

模型选择方面我分别尝试了SVM,逻辑回归,GBDT,随机森林,决策树等五个模型。并且采用10-flod交叉验证。

从各个模型的精准率和召回率,可以看出GBDT和随机森林有相对较好的精准率。对于通过算法预测的用户,进行两轮abtest。学习模型的选择参数通过sklearn的GridSearchCV 调优。

第一轮abtest中,我将预测的卸载可能性高的用户,随机分成两部分,进行abtest。

partA:制作成黑名单,避免对这批用户锁定主页,统计一周卸载率的均值;

partB:不做任何处理,作为对比组,同样统计一周卸载率的均值。

经过一周的监控,对比partA和partB两个部分的卸载率情况。从图中可以看出,由于partA是不会被锁定主页的,他们的卸载率远低于partB。这里可以得到一个结论,通过机器学习预测的用户在锁定主页后卸载管家的可能性更高。

第二轮abtest中,我随机在管家大盘中提取了约100W的用户,随机分为50W/50W的两部分,进行abtest。

partA:锁定之前会判断是否是黑名单用户,如果是则不锁定,统计一周的卸载率均值;

partB:不做任何处理,作为对比组,统计一周卸载率的均值。

从对比结果中可以看出,如果避免给新装用户锁定主页,卸载率是有一定的下降。到此,我们通过数据分析的结果和abtest的结论,可以认为通过机器学习,预测高卸载可能性的用户,避免对他们锁定主页,是能够降低这个功能的卸载率的。

在这个验证之后,我们投放了第一批黑名单(约100W的用户量)。黑名单上线后,效果马上是非常明显的,锁定主页的卸载率立刻有下降的趋势。

监控数据卸载率从原来的3.6%下降到3.1%,下降了0.5%。

效果有了,但是离一开始定的目标还有一点距离,是否有什么办法提升呢?

对于这个效果的出现,最主要的因素就是在之前的大量分析中我挖掘了很多有用的特征,那么有没有可能增加更多对模型效果有帮助的特征。并且考虑增加特征的时候,我也发现我不能只把眼光聚焦在锁主页这个功能上,还需要考虑如何才能应用到管家其他功能,管家整体上来,那这个事情做了才真正有价值。

因此,我梳理了一下目前通过机器学习特征工程的整个过程:特征来源表很多都不同,关联运算很多,导致了三大问题:

  • 1.计算量大;
  • 2.可复用性差;
  • 3.做特征工程的效率低。

同时,更进一步,目前针对锁主页这个业务使用机器学习的方法预测黑名单,虽然小有成效,但是并没有考虑如何横向扩展应用到其他功能。下次如果是另一个功能,那又得从头到尾做一遍,该如何避免这样的情况呢?这些都是我觉得需要考虑和规划的问题,而不是单单做完这么一个项目就可以的。只有考虑到更大范围的应用,这样投入去做这么一件事情才是性价比高。

带着这个想法,我进行了比较全面的规划与思考,列出了三个目标:

  • 1.重新规划特征,尽可能的整合管家内所有可以获取的特征;
  • 2.将这些大量的特征拆解为多个模块和维度,可以快速获取所需要的特征;
  • 3.可以与具体业务结合,支持横向扩展,可以灵活的应用到多个功能。 由这个目标,我有了一个整体的规划,把在机器学习过程中用到的所有特征整合在一起,搭建了一个特征分类系统。并划分为用户画像信息,管家基础特征,用户行为特征三大模块,这三个模块可重新规划,拆解,可以快速选择。同时,与业务相关的特征划分为单独的一个模块,这个模块与具体业务结合,可以灵活的扩展。详细可以看下图:

经过了一段时间的梳理和开发,我初步搭建了特征分类系统。并在锁主页这个功能直接就得到了应用。

上图我们分为两部分来看,下面蓝色虚线框中的是初步搭建的特征分类系统,目前主要是由在tdw上面的表和部署在lz平台上面的自动任务组成。

源数据主要是电脑管家各个基础数据,画像数据,以及QQ画像数据;以天为单位,每天在中间表中统计所有特征的数据,并分类汇总到各个模块表中。 最终会输出到各个模块单独的结果表中。

黄色框中的为在锁主页这个功能上的应用,通过这个系统,非常快速的获取到315个特征。

通过特征工程,我们最终筛选出268个特征。

整体来说,搭建这个系统的效果是很明显的:

  • 1.非常方便快捷的获取到大量的特征;
  • 2.效率得到大幅度提升,从原来的需要两天才能完成全部工作缩短至现在3个小时就可以完成;
  • 3.后续可以应用到其他功能上的时候,只需单独分析该功能相关的特征,很多其他特征是可以复用的。

增加了这些特征后,重新训练模型,模型的效果有一定的提升。精准率,召回率都有一定的提升,auc也从原来的0.62提升至0.68。

效果提升后,为了更严谨,对于预测的黑名单,我还是进行了一次abtest。

第一列ABtest结论:通过机器学习预测的用户,在锁定主页后卸载管家可能性更高。 并且模型优化后,效果有提升。

第二轮ABtest结论:优化后的模型预测的黑名单用户,避免给这批用户锁定主页,卸载率可以进一步下降。

对于优化后的模型,我们再次上线新预测的黑名单,效果提升明显,卸载率下降到2.4%,达到了最初定的目标。

通过数据分析和数据挖掘,对默认策略锁主页这个功能提出了两点优化。

产品优化方面:现在不会对新装用户锁主页;并且通过机器学习预测高卸载可能性的用户做成黑名单。

整体而言,效果还是比较满意而且达到目标的。卸载降低至2.4%,比最初降低了近一半。

根据abtest,我们估计每天减少了约3000个卸载量。月累计可以达到8.8万的卸载量,一年估计可以减少90万个。

其他方面,锁主页相关的卸载反馈下降了约50%,同时搭建了一套具有实用价值的特征分类系统。

  1. 在默认策略锁主页这个功能的成功应用,接下来会完成特征分类系统的搭建,并应用到其他被动功能上,争取在更大范围,通过机器学习快速的降低卸载率,提升管家的市场份额;
  2. 使用基于LSTM的深度学习:挖掘默认策略锁定主页之前用户的启动管家情况,使用功能的情况,计算机状态情况等。构建具有前后关系的序列型特征,结合目前的特征系统的数据,预测用户的卸载可能性。

深度学习的研究和应用,将会是后续工作的一个重点内容。

除此之外,完成整个项目的过程中,将一些具有创新价值的算法提炼之后,成功申请专利一项,目前已经进入国家专利局评审阶段。

总结:在整个项目过程中,独立承担90%的工作,克服困难向目标不断进取;个人感觉对技术细节把握的还比较到尾,特征构造、模型选型、ABtest等都有比较充分的考虑到,能够参考已有的经验和方法,在项目过程中也主动学习和了解业务流程,数据挖掘的知识,对于一些有价值的提炼内容,也及时通过KM、专利和部门分享等方式传承知识。

最后,这篇文章展现出完整的业务分析和策略优化的过程,通过反复通过分析、ABtest和模型应用以数据驱动业务优化,并且可以有一定的效果。

但是,也暴露出一些未考虑全面的问题:

  1. 对锁主页可能带来的商业化的影响的思考不够全面;
  2. 卸载减少的绝对数字还比较低,项目效果需要进一步放大,比如并行或者争取更多资源投入等方法。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序你好 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档