用户端智能的应用实践

标签: 技术文章 | 发表时间:2019-03-25 12:06 | 作者:bang
出处:http://blog.cnbang.net

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

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

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

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

按这个套路,寻找了一些应用场景,做了一些尝试。

金额推荐

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

  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之间的数,可以当成这个用户在这个时间点的活跃概率,最后合起来,得到每个时间点的概率。再根据指定阈值确定是否活跃时间点,例如:
      20190324164008
  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延迟到下一个较活跃的时间点显示。

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. 即使做了几个智能的应用,也没法说已经入门了这个领域,只是接触到一点皮毛,而且当时去补的各种知识点在一段时间没有接触使用后,也很容易就遗忘了。

相关 [用户端 智能 应用] 推荐:

用户端智能的应用实践

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

Excel商务智能应用之Power View

- - 互联网分析
在Excel 2013 中的 Power View 是商务智能(BI)的利器,能够非常方便地进行交互可视化数据分析,请看以下动画演示:. 实上,Power View的功能还远不止这些,例如可以做成像下图这样:. 有了Power View,你会发现只需要简单地动几下鼠标就可以实现商务智能. 实际操作比较容易,安装好Excel 2013之后,按照参考资料中介绍的方法,自己动手试一试就会了,这里提供一个源文件供大家参考:  http://vdisk.weibo.com/s/ uLB1D.

用于 Android 智能手机的 Android Network Toolkit 应用

- skymare - 谷安——谷奥Android专题站
在 Defcon 展会上,安全研究人员展示了一种新的黑客工具,它的作用是通过某种方式寻找设备漏洞,目的是为了让网络或设备漏洞得到修补. 当然,该应用也可能会被非法利用,让不法分子兴风作浪窃取和破坏存在系统漏洞的设备的数据. 这个新的应用称为 Android Network Toolkit(Android 网络工具套件),它将在不久后进入 Android Market.

谷歌应用在Android智能机渗透率高达七成

- xing - cnBeta.COM
据美国科技网站eWeek报道,市场调研公司尼尔森的调查显示,在Android智能机应用中,Facebook、谷歌地图、Gmail和谷歌搜索是最流行的移动应用. 谷歌成功的将大量优势PC桌面应用推广到了智能手机中. 调查显示,在过去30天内,有90%的Android智能机用户从谷歌Android Market商店中下载过应用.

新颖应用:智能手机扫一下ATM即可吐钱

- - 36氪
尽管信用卡是许多购物狂人的不二选择,但是大部分时候仍然是现金为王. 现在,一家名为NCR Mobile Cash Withdrawal的公司推出了一套新颖的智能手机取现应用,可以让取现金的人省掉输入密码的麻烦. 其执行过程是,用户打开智能手机应用然后扫描ATM机上的二维码,随后ATM就能够无缝地在数秒钟之内吐出现金.

人工智能在金融领域应用的初步思考

- - 36氪
微信搜索“36氪”,获取更多高质量内容.点击进入36氪. 编者按:本文作者中国银行网络金融部杨涛,作者授权36氪发布. 在阿尔法狗战胜李世石后,人工智能在全球的热议程度达到一个新的高度. 得益于神经网络深度学习在算法上的突破,使得多个基础人工智能技术水平得到飞跃提升. 计算机视觉、机器学习、自然语言处理、机器人技术、语音识别等人工智能技术快速发展对整个社会带来的改变将远大于互联网.

Spark技术在京东智能供应链预测的应用

- - IT瘾-bigdata
前段时间京东公开了面向第二个十二年的战略规划,表示京东将全面走向技术化,大力发展人工智能和机器人自动化技术,将过去传统方式构筑的优势全面升级. 京东Y事业部顺势成立,该事业部将以服务泛零售为核心,着重智能供应能力的打造,核心使命是利用人工智能技术来驱动零售革新. 1.1   京东的供应链. 京东一直致力于通过互联网电商建立需求侧与供给侧的精准、高效匹配,供应链管理是零售联调中的核心能力,是零售平台能力的关键体现,也是供应商与京东紧密合作的纽带,更是未来京东智能化商业体布局中的核心环节.

微信的机器学习与人工智能应用实践

- -
大家好,我是来自微信的张重阳,很荣幸有这个机会和大家一起交流一下机器学习和人工智能技术在微信的应用实践. 谈起人工智能,大家首先想到的是图像识别、语音识别、机器翻译、机器人这些技术,然而人工智能所涉及的应用场景和商业价值却远不止此. 在日常的经营和管理中,任何一个企业都会维护客户关系,都有销售数据需要分析,都会在生产,销售和运营的各个环节中面对不同的决策问题,新一代的商业智能技术就是利用现在飞速发展的机器学习和数据分析技术对企业商业化过程中面临的各种问题给出自动化的智能解决方案,从而驱动业务快速增长.

AI 在携程智能客服的应用

- - IT瘾-geek
作为国内 OTA 的领头羊,携程每天都在服务着成千上万的旅行者. 为了保障旅行者的出行,庞大的携程客服在其中扮演着十分重要的角色. 但在客服的日常工作中,有一部分的行为是重复劳动,这对于客服来说是一种资源浪费. 如何通过算法来提升客服效率成为技术一大挑战. 本场 Chat 将介绍智能算法如何辅助客服工作,并介绍QA问答背后的技术和难题,以及如何用机器学习和深度学习在提升用户体验和客服效率上进行落地.

人工智能 | 自动驾驶与人工智能前沿研究报告(应用篇)

- - IT瘾-geek
博主github: https://github.com/MichaelBeechan. 博主CSDN: https://blog.csdn.net/u011344545. 概念篇: https://blog.csdn.net/u011344545/article/details/89432313.