用户端智能在蚂蚁财富的应用实践

简介: 去年团队在用户端上进行了一些简单的智能应用探索实践,这里记录梳理下。 现在很多“智能”,是普通推荐算法借深度学习的风包装的,核心也就是决策树/随机森林/SVM这些90年代已经提出的算法,我们这里的实践也是这样。在用户端上,智能应用最广泛的目前两个点:个性化和多媒体识别,我们主要实践是在个性化上,从原来所有用户都用同一套或几套规则,换成根据推荐算法给每个用户制定符合他个性化

去年团队在用户端上进行了一些简单的智能应用探索实践,这里记录梳理下。

现在很多“智能”,是普通推荐算法借深度学习的风包装的,核心也就是决策树/随机森林/SVM这些90年代已经提出的算法,我们这里的实践也是这样。在用户端上,智能应用最广泛的目前两个点:个性化和多媒体识别,我们主要实践是在个性化上,从原来所有用户都用同一套或几套规则,换成根据推荐算法给每个用户制定符合他个性化特征的不同规则。

实际上简单的个性化推荐也可以认为是规则,只是这个规则很复杂,里面的if/else/权重/概率计算不是人工写的,而是算法算出来的,大多采用监督学习的方式,这种需求大体实现步骤是:

  1. 建模,把问题转化为三个点:输入/输出/算法。也就是挑选特征集X,确定输出目标值标签Y,挑选算法尝试找出Y=f(X)。
  2. 取数,选择一坨线上数据,清洗出需要的特征和对应的目标值。
  3. 训练,不断调整算法/参数/数据,找出用户特征->目标值的一个靠谱转化方式,输出一个模型。
  4. 应用,部署线上应用,实时预测,分析效果输入特征。
  5. 按这个套路,寻找了一些应用场景,做了一些尝试。

金额推荐

金额推荐概念很简单,我们作为理财业务,有很多场景是需要用户填入金额的,例如工资理财(每月自动把钱存到理财),小星愿(许愿存入钱),基金定投,各种理财产品的购买等。目前这些填金额的地方不是空着,就是有一个固定的默认值,金额推荐想根据每个用户的情况给推荐不同的金额,可以预填进输入框或出提示供用户选择,提升体验,甚至做出一些引导提升客单价。接下来套在上述步骤里来看下大致实施过程。

  1. 建模:
    • 输入特征基本上先拍脑袋尽量多的选取可能有关的特征,比如年龄,城市,过去交易金额等,后期训练迭代过程中会根据计算出的每个特征的重要性再进行几轮筛选。
    • 输出标签目标值是金额,但金额推荐这个需求不需要把每个用户的金额预测精确到个位数,从用户数据观察多数金额集中在有限的一些整数上(比如100/500/1000/2000等),所以这里只需要把金额分成一些档位,目标值是金额档位。
    • 算法,目标值是金额档位,是一个分类问题,分类算法中选用了随机森林这种集成算法,简单应用广,过程中也试过其他算法,效果差不多。
  2. 取数:
    • 进行一些数据预处理,例如把非数值类型的特征转为数值,合并特征和标签等。
    • 把最近一次交易金额转为对应金额档次分类作为目标值标签。
  3. 训练:使用第二步的部分数据进行训练,拟合出一个模型,再使用另一部分数据评估模型的预测效果。过程中通过各种调参/分析/数据处理,优化模型评估效果,例如:
    • 提升数据质量,筛选出过去购买金额有一定规律的人群数据,比如多次购买的方差不超过某个数值。
    • 参考随机森林特征重要性中的 entrophy 和 gini 指数,去除重要性较低的特征。
    • 减少标签金额档次的个数,只保留多数用户会命中的几个档次。
  4. 应用:部署模型,不同的交易产品有不同的用法,可以把预测值直接预填进输入框,也可以在旁边出输入提示显示推荐的金额。然后就是一系列ABTest、性能优化、监控、数据效果分析的工作。

不同交易产品(工资理财/小星愿)对特征和标签的选取有一些小的不同,但大致处理流程一致。实践中工资理财把固定的1000元引导改成推荐的金额,订单平均金额提升60%,32%用户直接使用了推荐的金额。小星愿把金额推荐作为提示供用户选择,相比直接放一个该用户历史交易金额作为提示,点击率高十几倍,用户对推荐金额的接受程度较高。

智能push

智能push想做的是在合适的时间给人推push,提高点击率。基于一个假想:每个用户都有不同时间段的活跃时间点,如果push不是统一固定时间下发,而是选择每个用户对应活跃的时间点下发,可以提高点击率。这里的push是促活类的,例如资讯的push。这里的问题可以转化为:怎样根据一个用户已有信息预测出他的活跃时间点。

  1. 建模

    • 输入,选取可能跟用户作息有关的年龄/收入/城市等基础信息,再加上用户过去7天的push点击数据作为特征值。
    • 输出,用户的活跃时间点,精确到小时,用户一天可能在多个时间点活跃,需要输出多个时间点。因为需求原因,push时间点限制在8-21点。
    • 算法,8-21点共14个小时,14小时->14个分类,多个时间点活跃->属于多个分类,是个多标签分类问题,我们用多个二分类的方式实现,同样用随机森林的算法,14个时间点每个点都单独做一次二分类,每个二分类的计算结果都是0-1之间的数,可以当成这个用户在这个时间点的活跃概率,最后合起来,得到每个时间点的概率。再根据指定阈值确定是否活跃时间点,例如:
  2. 取数:

    • 对过去的push数据进行处理,根据8点-21点每个时间是否有点击push,合成多条特征数据,取过去8天的数据,1-7天的数据作为特征,第8天的数据作为目标值标签。
    • 清洗用户基础特征,数据转换,拼接push特征。
  3. 训练:根据第二步的数据分14个二分类(14个时间点)训练,得到14个模型,每个时间点一个模型,最后合成一个。

  4. 应用:经过算法模型可以得到用户每个时间点的活跃概率,有多种使用策略,可以通过阈值得到几个活跃时间点,也可以直接选用概率最高的时间点,还可以在业务发送push时,往后选取概率最大的时间点发送,例如业务12点发送push,选12点-21点之间概率最大的时间点,把push进队列延迟到该时间点发送。

同样是经过了多轮的数据分析、模型调整、特征优化、AB实验、Android分链路优化等,最终同一条push内容,使用智能push链路和普通链路直接推送相比,点击率稳定在提升25%左右。

本地处理

push的优化上当时我们想做更多,除了活跃时间段,实际上影响用户点击push的还有他当前手机的实时状态,例如是否在看视频/玩游戏/放在口袋里等状态,在这些情况下用户点击push概率一定很小,如果在收到push后显示前能实时检测到这些状态,就可以推迟到更合适的时间显示。为此我们在iOS上做了一些尝试:

  1. 需要在用户收到push后执行代码逻辑,再决定是否显示push,经调研 Notification Extension 没有取消展示push的能力,VoIP 需要特殊权限,只能用普通的静默push去做。
  2. 每条push都改成静默push,收到后唤起执行代码,经过各种判断后创建Local Notification,在指定时间展示push。
  3. iOS 无法直接判断用户正在运行的程序和手机状态,只能通过一些侧面属性判断,包括横竖屏状态、耳机插入、内存情况、cpu情况、锁屏情况、网络状态这些信息,模糊猜测用户当前所处环境,给出一条运算公式计算用户当前是否适合展示push,公式可以动态下发,根据效果调整。
  4. 用户本地保存上面跑出来的每个时间点活跃概率数据,把push延迟到下一个较活跃的时间点显示。
  5. Android 也实现了差不多的方案,不过iOS和Android的方案都有缺陷,iOS方面用户手动kill掉的APP情况会收不到静默push,会影响push的到达率,Android方面没有可靠的延迟展示push手段,若延迟的时间点APP处于非活跃状态,会无法展示,同样也是会影响 push 到达率,这些缺陷导致最后本地处理的方案实现后没有很好地应用上。

其他

除了金额推荐、智能push,还做了一些其他智能的尝试,包括

  1. 智能异常检测:客户端的一些异常很多时候无法通过代码准确地检测到,例如图形引擎在一些安卓机器上的花屏,没有报错的白屏/黑屏,期望是有统一的手段检测到这些显示的异常。做法是在端上内置机器学习框架,云端训练模型,输入是截屏图片,输出是异常分类,我们挑了三种情况作为异常截屏样本:白屏/黑屏/花屏,做一个简单的图形分类模型,典型的深度学习cnn入门级项目,压缩模型下发到客户端运行,用户运行过程中根据一定的规则抽样进行截屏检测,有异常可能即上报。
  2. 股票OCR导入:自选股票从不同APP迁移时,需要逐个股票进行输入->搜索->添加自选,这里要做的是在应用A自选列表截屏,在应用B导入截屏,OCR识别出截屏上的股票代码。OCR是比较通用的识别能力,直接用现成模型,配合一些逻辑处理就能实现了。

还有像智能预加载/智能分页/交互预测/交易流失归因分析这些实践,还没有做完整,就不描述了。

感想

  1. 当智能基础能力的基建(训练平台,模型部署,数据打标等)做好了,要把智能能力应用到业务上时,需要的更多是业务理解和数据分析能力,多数精力会耗费在清洗数据、模型调优上,这个能力跟工程能力有很大不同。
  2. 简单的“智能”需求,不需要理解具体算法实现也能做出来,只是理解了算法可能对优化有帮助。
  3. 机器学习算法繁多,与过往计算机通用经验复用度不高,要达到创造/改进算法的程度门槛太高。
  4. 用户端体验上的智能应用在多媒体、IoT、系统级优化上比较有空间,其他的并没有找到特别大的应用场景。
  5. 即使做了几个智能的应用,也没法说已经入门了这个领域,只是接触到一点皮毛。
目录
相关文章
阿里商旅-国内商旅界的未来,今天聊聊阿里商旅是如何做业务的
阿里商旅是如何做业务的 基于钉钉的智能移动差旅1.0版本;开放平台对接方案2.0版本
阿里商旅-国内商旅界的未来,今天聊聊阿里商旅是如何做业务的
|
6月前
|
安全 算法 大数据
报名进行中|阿里数纳斯·2024企业内外数据流通交流会——数纳斯跨域商业增长引擎全新发布
随着大数据时代的到来,企业内部以及企业之间的数据流通已成为企业运营和发展的重要支撑。然而,对于集团型企业而言,数据内外流通面临着独特的挑战和困难。为解决这些问题,阿里巴巴数据技术及产品部将于2024年1月10日举办数纳斯 | 2024企业内外数据流通交流会,聚焦集团型企业数据流通难题,共话数据流通解决方案。
|
供应链 算法
深度 | 5分钟读懂阿里零售通智慧供应链平台
大家好,先做个简单自我介绍,过去十年更多是在2B类业务方面做技术架构和研发工作,近两年专注在零售通供应链方面的技术架构和研发的工作。从技术视角分享二点最近几年感受比较深刻的,第一个点,从技术的架构的升级,从过去的电商架构到现在新零售的架构,比如从过去信息平台到交易平台再到现在供应链协同平台,其架构演进的核心动力是互联网、大数据等技术与商业不断融合和发展。
13991 0
|
监控 安全 网络安全
直播预告|多年终端安全沉淀,源自支付宝的全链路安全防护建设
6月24日(周五)晚上19:00,蚂蚁集团数字科技mPaaS技术专家,现任mPaaS安全效能技术1号位——夜禹,将为我们带来主题为《多年终端安全沉淀,源自支付宝的全链路安全防护建设》的公开课,公开课嘉宾将结合支付宝的业务实践,分享如何解决在 App 研发生命周期中对隐私合规相关问题进行测试、监控、管控等方面的问题,以及移动安全合规整体解决方案,包括网络安全、数据安全、二进制安全、移动攻防、人脸安全等方方面面能力。
208 0
直播预告|多年终端安全沉淀,源自支付宝的全链路安全防护建设
短评:蚂蚁金服要想保障高估值,就要和阿里系继续深度协同
短评:蚂蚁金服要想保障高估值,就要和阿里系继续深度协同
184 0
短评:蚂蚁金服要想保障高估值,就要和阿里系继续深度协同
|
人工智能 安全 大数据
教育行业优质解决方案分享【智慧教育局校平台解决方案】
阿里云智慧教育局校平台将构建教育信息化“5One”体系:OnePlan规划、OneUE用户体验、OneStandard标准、OnePlatform平台、OneMeta数据资产;建设五新教育场景:新管理、新课堂、新学习、新沟通和新安全,并结合中台引擎与钉钉数字底座实现普惠化的智慧校园。
802 0
教育行业优质解决方案分享【智慧教育局校平台解决方案】
|
安全 视频直播 区块链
响应防疫需求,蚂蚁区块链助力甘肃远程开标
防疫形势严峻,也为政府项目招标带来重重困难,由于大量企业近期逐步复工,各地交易中心(交易局)面临巨大压力。前几天国家发改委发了通知,要创新做好招投标工作保障经济平稳运行,甘肃省人民政府于是加快推行在线投标、开标、异地评标。甘肃省公共资源交易局主动作为,联合蚂蚁区块链、阿里云、甘肃文锐等,利用区块链、云计算等先进技术,有序规范开展公共资源交易活动。
响应防疫需求,蚂蚁区块链助力甘肃远程开标
|
区块链 安全 物联网
新鲜升级,蚂蚁区块链为冷链发展保驾护航
为了解决冷链产业中小企业金融服务供给不足的问题,蚂蚁金融科技,携手蚂蚁生态联盟伙伴,与国内领先冷链物流企业武汉万吨集团达成合作意向,双方携手共同打造冷链行业金融服务平台,利用技术破解冷链行业小微金融服务难题,开展普惠金融服务,共同打造一个健康成长的万吨冷链生态圈。
1741 0
新鲜升级,蚂蚁区块链为冷链发展保驾护航
|
人工智能 异构计算
一封来自人工智能领域客户的致谢信 | 阿里云携手中小企业共同打造智能生态圈
一个客户的心声,讲述了这段时间被GPU折磨的经历。从法国GPU有延迟,延迟崩溃到工程师辞职不想干的程度,到“阿里云GPU渲染一张风格只需要2秒钟”,客户后悔早知道一开始就用阿里云GPU了。
2574 0
|
机器学习/深度学习 安全 双11
“刺激的”2017双11 阿里安全工程师首度揭秘智能风控平台MTEE3
“太刺激了,太刺激了!如果那个48%真出问题,整个安全部的双11就可能是3.25!”
6359 0