个性化UI在金融场景的探索和应用

2020-8-3 评论(2) 分类:技术文章

背景

随着各业务流量红利逐渐见顶,如何在有限的流量下,提升流量给用户带来的体验,对流量进行精细化运营,进而提升转化效率,成为各业务的重要课题。

蚂蚁数字金融线包含了 保险/理财/信用/借贷 等业务,经过多年建设,形成了多样的金融资产/场景服务/权益/内容等多维度的产品去服务用户,而这些产品分发给用户时,决定曝转率的大体上以产品推荐是否精准,以及产品以什么样的UI表述方式进行展示决定。在产品推荐上,算法已经逐步覆盖,给业务带来很大的效果提升,在产品推荐算法优化到一定程度后,提升的投入产出比已经有限,我们开始在UI展示上探索,是否个性化智能化的展示能为业务带来提升。

探索

UI1

淘宝比较早地做了智能UI的尝试,在推荐出商品后,对于商品的UI展现方式进行千人千面个性化,商品列表有两列/三列/横排的布局方式,商品封面有 场景图/白底图/视频 等类型,商品本身有 标题/描述/评价/销量/属性/标签/活动/价格/快递/地区 等一系列字段标签,在列表上无法全部容纳,不同的人对不同的 布局密度/封面/字段标签 会有不一样的关注度,这里就有了智能化的空间,对这些属性进行自由组合千人千面推荐,取得不错的提升成果。

在数字金融线的业务,是否也可以这样做?数字金融线各业务的“货”并不是统一标准化的商品,主要由 金融资产/服务/权益/内容 构成。例如财富业务,金融资产(基金/定期等)在购买门槛高的情况下,会通过各种包装降低门槛,包括场景化包装成服务(工资理财/笔笔攒等),配合营销活动包装权益(体验金/财运金/黄金票等),包装资讯/视频/直播等形式的内容。同时这些包装后的“货”在不同场景有不同的UI展现形式,并不是标准化的,这些“货”也没有多种字段可以直接进行自由组合搭配,如何能做个性化千人千面?

问题

我们可以针对一个个场景设计多个模板样式去匹配不同的人,这也是之前在一些业务上进行过一些尝试的,但有几个问题:

  1. 无设计标准:设计什么不同的UI样式才可能有效,没有标准和指导,靠设计师个人经验。
  2. 样式生产效能:UI样式需要一定量级进行分人群匹配,设计工作量大。
  3. 算法匹配信息不足:算法难以识别不同UI样式间的差别,以 人<->样式ID 的方式匹配效果有限。
  4. 无沉淀不通用:不同的场景割裂,设计经验/算法经验/工程链路无法复用,无法沉淀用户偏好,各场景实现成本大。

针对这些问题,我们探索了一套相对通用的个性化UI解决方案。

方案

语义标签体系

UI2

首先是根据过往数金各场景的设计经验,由设计团队主导抽象出一套UI语义标签体系,去描述一个UI样式里可能吸引用户点击的关键点。

这个标签体系分表现层和内容层两个层面:

  1. 表现层去描述UI长什么样,比如它的风格是实物还是扁平的,色彩是鲜艳的还是偏透明的,字体相对大小。
  2. 内容层表示这个UI展现有什么内在含义,比如它是突出权益的(红包/抽奖等),代表从众心理的(xx人正在购买),代表认知的(黄金图/人物图/降维描述/品牌权威描述)等等。

我们认为不同人对这里列出来的标签是会有不同偏好的,例如年轻持仓少的,可能用扁平图/从众/降维描述相对能打中,老年人可能对权益/实物图形/大按钮比较敏感。

这套标签期望能产生几个作用:

  1. 指导设计往什么方向进行差异化设计。
  2. 语义化描述UI,作为特征让算法更好地认识UI的外在和内在含义,多场景通用。
  3. 后期可以针对线上数据进行归因分析,语义化看出不同用户的UI偏好差异。

工程算法

标签体系的思路把UI的维度拆细了,为不同人原子化设计不同的元素,我们沿着这个思路打造了相应的工程和算法方案:

UI3

1.多样式生成

我们将UI原子化打散-自由组合。一个产品可以以各种方式包装后呈现给用户,主要包括描述产品的创意物料(文案/图片/动画),再配合不同的样式和版式(字号/背景/布局排版)组成,这些元素可以进行自由组合,例如一个单图文模块,我们可以参考标签体系设计10个文案,10个图片,2个排版样式,排列组合就可以生成200个UI样式包,作为丰富的可以匹配不同用户的素材。

2.UI偏好模型

我们将组合生成的UI样式包结合UI标签与用户属性进行匹配关联,以CTR为目标训练模型。训练中取三种数据:

  1. 用户属性,包括年龄性别等基础属性,以及像持仓情况、投资次数这样的业务属性
  2. 每个UI样式包所打的UI标签数据
  3. 每个UI样式包在线上随机投放的曝光点击数据

经过特征工程处理,组成训练集去训练出DNN模型,在线上部署使用,输入是 用户属性 + (UI样式包对应的)UI标签 列表,输出是每个UI包的点击概率排序。

3.工程链路打通

从样式配置,到数据组装,到召回排序,到最后前端渲染,对接各个平台串联整个链路,在各场景实现千人千面UI推荐能力。

落地效果

当前个性化UI在数金多个场景落地,不同场景有不同的提升效果,按流量平均下来CTR(曝光点击率)提升20%左右,同时接入的场景CVR(曝光转化率)也同步提升。

其中流量最大的是支付宝首页财富生活模块,组合了几百种样式进行匹配推荐,CTR的提升在首页大流量的加持下为业务带来很大价值。

CTR提升最大的是理财Tab蓄水版直通车里的黄金和黄金票卡片,一千多 种样式,CTR 和CVR可以提升50%左右。在这个版本里卡片在屏幕占比较大,不同元素的展示对用户点击的影响是非常大的,这也是最适合接入个性化UI的场景。

UI7

分析

有效性分析

为什么这套方案会有效提升CTR,尝试回答几个常见问题:

1.疲劳度

是不是用户对一成不变的样式有疲劳度,只要有新的样式点击率就会提高?我们在每个场景里上线个性化UI,会分几个桶进行AB效果对比,其中随机桶是对组合生成的几百个样式进行随机投放,比如这是财富生活的实验数据:UI5-2

可以看到随机投放组合出来的样式效果并不好,并没有因为样式多了就能提升,反而因为组合出来的某些质量相对差的样式影响CTR下降,这在多个场景里都有类似的的情况,可以看到CTR的提升并不是疲劳度新鲜UI带来的。

2.UI外的因素

是否是UI以外的因素影响CTR,例如不同的产品/权益内容?每个展位接入的AB实验里,产品和权益是固定不变的,个性化UI用不同的表述方式(图片/文案/样式/排版)展示同样的产品和权益在同一时间随机人群进行AB对比,没有其他因素干扰。

3.新样式抢眼

是否有几个很吸引眼球的UI拉高了CTR,没什么人群偏好差别?很有可能因为原来的样式不抢眼,我们组合出来的某些样式加红加粗天然吸引用户注意力,实际上我们实践中因为设计规范的约束不会做太抢注意力的设计,同时我们也分析了,不同样式在随机投放和算法投放的差别,例如下图玩转理财场景里,一些样式算法推荐的人群比这个样式随机投放它的点击率提升了几十个百分点,说明不同人对这些样式有明显偏好,算法把这些样式分配给真正偏好的人,带来了点击率提升的收益。UI6

归因分析

我们看到了用户对不同UI表述展示方式有不同偏好,期望能沉淀出具体人群跟UI的偏好关系,给设计师和业务方在新场景设计中提供参考帮助。得益于UI语义标签体系,我们是可以沉淀出UI偏好和画像的。

我们探索尝试了多种方法去做归因分析,包括:

  1. 数据统计,直接统计线上不同人群在不同样式的点击率,在图表上找出点击率的差异,沉淀偏好结论。
  2. EBM可解释性模型,解释DNN模型中各特征对最终效果的贡献度,以及交叉特征观察人群特征和UI标签的关联关系。
  3. 网格分析,在表格上将多个人群特征-UI标签进行组合,列出所有组合的点击率,从中找出点击率变化规律和差异,找出偏好差异。
  4. 标准化偏好,CTR(UI特征,人群特征,对应产品)/CTR(人群特征,对应产品),衡量单个UI元素在指定人群特征里对点击率的影响程度,再进行对比找出偏好差异。
  5. 单样本方法,建模的方式分析人群特征和UI特征的贡献度。

初步可以沉淀出一些偏好洞察,例如:

  1. 理财货架场景上,收入较低者偏好产品名称,普通/高收入者偏好产品推荐语。
  2. 按钮颜色上,总体红色比蓝色更吸引,但越年轻的用户,越偏好支付宝蓝。
  3. 白领/初级投资者偏好金融元素,蓝领/高级投资者偏好品牌元素。
  4. 有信用卡者对走势图不敏感,无信用卡者更偏好走势图。
  5. 中年(40-50岁)年龄段特别偏好紧迫心理类型的标题,尤其偏好行业风口类。
  6. 理财货架中,整体上宫格样式效果远低于列表样式(宫格面积相对小),但年长者对宫格偏好不低。

归因洞察还未形成稳定分析体系,处于探索期,最终是期望探索到一种或多种分析有效通用的方法,沉淀为平台自动分析能力,能在平台沉淀 业务维度、场景维度、人群维度 的UI偏好画像。

产品化

在方案落地出效果后,我们看到这套能力是具备一定通用性,各业务可以接入获益的,于是我们致力于将它的能力产品化,沉淀多样式生成配置、通用高效的UI偏好模型等能力,让各场景可以快速接入。主要围绕接入效率和接入效果进行优化。

效率优化

个性化UI的接入成本比较高,需要设计素材,人工打标,前端/业务后台/中台对接工程链路,训练UI偏好模型,跟进实验,手工清洗数据分析。涉及流程长,对接的角色多,投入较大。在平台级大流量展位上接入这套能力,能产出很大的业务效果,这样的投入还能接受,但要覆盖更多的长尾场景,这样的接入效率性价比相对低,难以被接受,我们从几个方面建设去提升各场景的接入效率:

  1. 一站式配置平台(万花筒平台),完善样式配置、组合预览、打标、筛选审核、业务干预、样式三板斧发布、数据分析能力。
  2. 通用链路,提供从样式包召回、推荐、数据组装的通用工程链路,通过 BFF SDK 输出,普通场景只需要前端BFF接入SDK即可完成接入,减少与业务后台和中台的链路对接。
  3. 通用模型,用户特征和UI标签特征在各个场景里是通用的,也就可以训练出一个通用模型,映射用户特征和UI标签特征的偏好关系进行推荐,虽然效果相对专门训练的模型会打折扣,但适合长尾场景快速接入。
  4. 专用链路,数金多数场景与各业务平台和中台结合较紧密,我们把个性化UI能力嵌入这些平台,可以提供更好的结合业务和特定场景的一站式使用体验,提升效率,例如对接UCDP/梵高/毕加索建设banner链路、对接洛可建设微贷专有链路等。

以上几点是短期内会建设完成的能力,此外有两个正在探索中的提升接入效率的课题:

  1. 素材生成,当前接入的大多数场景需要设计师和运营一起产出多个图片和文案素材,这是接入流程中最大的成本,我们在探索素材自动生成的方案,沉淀符合设计规范的原子图片素材库,提供对不同场景尺寸和组合的处理适配能力,让图片素材可以在多个场景里复用。文案方面在中台智能文案基础上加入更多的业务语料,自动生产的文案更符合业务调性和用户偏好。
  2. 自动化打标,当前需要手工对每个元素进行打标,当标签趋于稳定,并且打标量达到一定程度后,可以通过算法理解图片和文本,归类到指定的标签进行自动化打标,减少人工投入。

效果优化

如何对样式推荐的效果进行进一步提升,也是我们持续在探索的,算法效果的提升,很大一部分取决于特征数据的丰富和准确,围绕数据会在这几方面进行尝试:

  1. 端智能结合,云端不直接推荐UI样式结果,而是推荐几个样式候选集,端上再进行实时重排。为什么端上重排可能会有效,端上可以根据用户的实时行为,判断用户看了还是没看(停留了、快速划过),再结合它的行为路径(点了有某个UI标签的展位、快速离开、去了很多二级页等),去综合判断是否因为疲劳度、兴趣变化等去切换其他样式,更好打中用户。
  2. 自动特征工程,训练专用的UI推荐模型时,会根据对场景的理解进行特征筛选和交叉组合处理,这里选择什么特征交叉由个人经验决定,我们借助AI中台的能力,尝试autoCross自动筛选有效的交叉特征,理论上能得到比手工交叉筛选更好的效果,同时减少特征工程的人员投入。
  3. 多模态建模,抽取图片素材/文本素材的高维特征,融合后作为UI标签的补充加入训练,丰富模型对UI的理解。
  4. UI标签演进,我们一开始构建的表现层/内容层的标签体系,几个场景使用下来有不错的效果,但还没能做到很通用地描述UI,正在尝试以描述因子/驱动因子的方式组织标签,我们会尝试不断迭代标签的描述粒度和通用性。

未来

个性化UI在金融场景我们实现了从0到1的突破,后续从1到100我们还需要做很多工作,除了上面说的产品化效率和效果优化,还有三个方向持续探索:

  1. 通用性,当前的标签体系、模型、工程链路都是围绕数金业务进行建设,实际上这套能力在多产品服务分发的场景都能适用,比较适合支付宝的业务形态,后续可提升通用性,在支付宝分发海量产品服务的展位上进行尝试。
  2. UI偏好画像,接入的场景足够多,标签体系足够完善,归因的方法探索出通用有效的方案后,可以沉淀用户的UI偏好画像,作为体验端的数据资产,为后续算法模型、业务设计提供价值。
  3. 能力扩展,我们围绕单展位模块的千人千面建设个性化UI能力,在这以外,跟智能展示相关的,还会有其他空间可以挖掘,例如全屏的注意力管理,用智能化的手段,避免全屏范围内 动画/红点/抢眼颜色/弹屏 不断抢占用户吸引力,以合适的方式分配用户注意力,提供更好的体验和效果,是一个可以探索的方向。

总结

我们针对数金的业务特性,在对产品的个性化UI展示上提出了 元素打散组合-语义打标-算法推荐-归因分析 的方案,落地取得了不错的效果,当前在将能力进行产品化沉淀的过程中,逐渐完善核心的 多样式生产、精准UI偏好模型、UI偏好画像 能力,让各长尾场景快速接入取得规模化的业务结果。过程中会碰到许多困难,但核心的“不同人有不同UI偏好”已被验证,我们会沿着这个方向,联合设计、产品运营、算法、质量一起持续深耕和拓展个性化UI能力。

2019

2019-12-31 评论(17) 分类:随记

今年博客进一步减少,去年年终时就说了,不再遵循每月至少一篇的惯例,以后年终的一篇可能也不写了。

今年最大的变化,就是生二胎和异地。四个月的娃,已长成大胖小子,逐渐会跟人交流了,日渐可爱,很少哭闹,健康得很,三好娃儿,可惜今年在他身边的时间实在太少,因为异地了,我在杭州,家人在广州,这是一系列巧合和各种考虑下的结果,真是之前没想到的一种状态,回看17年博客说希望能增加陪小孩的时间,没想到越来越少。

异地这事,作为老父亲,有些感触,回想起以前每学期回大学坐车时我爸妈都很不舍得,我妈每次流眼泪,我觉得这有什么好流的,麻烦。就像现在我找小孩视频小孩不理我一样,深刻感受到作为父母对小孩的不舍得与思念,以及作为小孩的没心没肺,这很正常。其实异地也不尽是坏处,一个东西变稀缺了,就会让人更珍视,有来之不易的陪伴时间时会更投入和珍惜,同时也更感受到家人的重要性,就我这一个人生活的宅男状态,要是现在还单身一个人,那是多糟糕。人的适应能力很强,像经常坐飞机往返,早上五点起床赶飞机,这种看起来很累实际上还好,就像小镇上的人觉得城里每天地铁上下班两三小时很辛苦一样,习惯了没什么。

工作上持续有很强的焦虑感,人生就是不断的千军万马过独木桥的阶段,除非甘心躺着不动。互联网行业的速度催着人要快步往前跑,不能走也不能躺,否则可能产生踩踏,还赶不上车,在今年这形势下更严峻了,以后在35+这辆车上的准入门槛可是越来越高了。今年继续学习,在大公司一个好处是身边很多聪明人,观察学习下他们的思维和行动力,吸收一些经验见识,学习做些事情,期望不落下。

想不起还能写什么,用一些数字表示吧。今年外出旅游0次,有点闷;坐飞机32次,大部分是下半年;电影56部,刷剧5部,也是下半年,一个人去电影院次数暴涨;14本书,开始入坑庆余年这种超长网络小说;健身40次左右,都是年初有兴致,后面懒加受伤停了;记账第3180天,今年收支盈余6000元,年光族;连续3583天写日记,小想法从博客转向日记了。

今年总的来说对自己的表现并不是很满意的一年,2020年加油吧。

《少年的你》碎念

2019-11-3 评论(3) 分类:随记

看电影《少年的你》,挺喜欢。

回想起来小学我也被打过几次,不过印象不是很深,也没那么夸张,小学时回家告诉了家人,然后去学校找了老师,后来怎样记不得了,但大家都表示出这是个麻烦事,老师更是在班上严肃地说没什么大事就应该自己搞定,不用搞得这么大,作为男孩,大家觉得被欺负还不能自己解决是丢人的。回想起电影里班主任离职时,说的话肯定是被审查过了,原版应该是一些尖酸怪罪的话。有多少老师能做到真正关心学生,而不是是不是给自己带来麻烦。

电影渲染了高考的恐怖氛围,比我们当时严重,但高考确实一直是我的噩梦,虽然我考得不错,但那段日子不堪回首,成年很多时候可以靠平时的成绩,而不是高考这样的一锤定音。高考是底层通往中上层走出去的几乎唯一通路,而底层的学生要克服的困难比中上层多得多,在学校受歧视欺负时的话语权,电影里没提到的教育资源的不足,思维惯性的缺陷,原生家庭可能的不安宁,甚至上学机会都没有。十年前有《我奋斗了18年才和你坐在一起喝咖啡》,现在依然一样。

电影表现出来的满满少年感,压抑的氛围中有美好和温暖,不知不觉已接近中年,少年的美好总是很能触动人。男女主角的表演看着特别高质量特别享受,敬佩这些演员,一直在感叹人与人之间的差距,天赋和努力程度都差距巨大,脑回路上的差距比社会地位上的差距更大。

保护世界看起来是个虚无宏大的事情,但这部电影确实能做到保护世界,把社会上一些不怎么被关注的问题放大成热门话题,多少正在受校园欺凌的人会感谢这部电影,虽然按网民惯性很快会冷却,但影响力在那里,跟《我不是药神》那样。期待有越来越多被公众误解或不关心的主题电影出现,像抑郁症,同性恋等。

另一种保护世界,就在我们日常工作中,经济增长是保护世界最有效的方式,商业创造出来的低门槛工作岗位,工厂,快递,外卖,能帮助多少家庭走出困境,多少小混混走上正轨,商业就是慈善。

程序员和工程师

2019-9-28 评论(4) 分类:随记

程序员和工程师是两个不同的角色。

程序员是创作者,作品的所有者。

工程师是工程的设计者,建设者。

公司里的职位是工程师,而不是程序员。

工程师是负责把公司产品打造出来的角色,涉及到方方面面的工作,写代码,架构设计,规范制定,质量保障,进度把控,方案权衡,制度建设,上下游沟通,多团队协作,业务理解,问题定义,中长期规划。

程序员则是更纯粹一些的角色,就是通过写代码进行创作的人,与作家、画家、木匠、铁匠类似的角色。

早期只有程序员没有工程师,因为程序是一批嬉皮士的玩物,还没进入工业化批量生产。

现在可能只有工程师没有程序员,程序成了工业化社会中的一环,现代软件产品大多都需要作为一个工程去由一个团队实现。

理论上程序还是可以脱离工程存在,作为一种创作介质,程序员可以独立创造属于自己的作品,它的自由度很高,可以是引擎,工具,语言,游戏等,但它的空间越来越小了。

在做工程师的同时,可以尝试保留程序员的角色,创造自己的代表作。

信息与思考

2019-6-12 评论(17) 分类:随记

在微博上看到蔡学镛发了句话:“你总是看大量的信息,你以为你热爱学习。但事实上,大脑本身就喜爱被信息刺激,这跟你是否热爱学习无关。真正判断是否热爱学习,要看是否喜欢动脑思考,大脑本能上并不喜欢思考,因为太消耗能量和时间。 ”觉得挺有道理,对于信息和思考,想再写两句。

我们每天摄入的信息是同质化的信息。无论是刷微博,头条,知乎还是抖音,在这些平台上能获得的信息都是同质化的,你会固定关注一群人,机器推荐也会推荐你喜欢的内容,固定的信息样式配合每天新发生的事情,看起来每天看到的是不同的信息,实际上是一套样式翻来覆去,并不能得到多少有价值的信息。

可以把世上的信息分成三种,第一种是直接以文字等形式在网上提供的信息。第二种是虽然相关资料在网上能找到,但需要自行进行加工处理才能得出有用信息。第三种是网上找不到,只存在于一些人的脑里的信息。

这三种信息稀缺性递增,价值也递增,第一种是当下最廉价的,价值也是相对较低的,而我们每天刷的就是第一种信息,而且是这种信息的一小部分。

要想获得更多有用信息,就要多获取第二种第三种。第二种靠思考和输出,对获取的信息多进行整合思考得出自己的结论,第三种靠人脉关系,很多时候关键信息都掌握在少数人手里,这些少数人并没有什么动力去把这些信息公之于众,需要多跟不同的人、重要的人交流和发生连接,获取只存在于他们大脑里的信息,这也是人脉的价值。

对于思考,王兴说:“多数人为了逃避真正的思考愿意做任何事情”,可能真是因为大脑思考太耗能量了,本能上不喜欢,思考如健身,要想长期保持或喜欢上思考,一靠习惯,二靠长期激励(对其带来好处的想象),三靠即时激励。若思考能经常即时带来好的反馈和刺激,可能有助于形成习惯,写博客这种古老的方式算是一种即时激励方式,把虚无缥缈的思考变成看得见的东西,有创作的感觉,满足表达欲,若其他人看到能有互动就更好了。

用户端智能的应用实践

2019-3-25 评论(7) 分类:技术文章

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

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

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

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

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

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

绩效

2019-3-24 评论(4) 分类:互联网

一些公司会采取361的绩效考核方式,即30%优秀,60%普通,10%差。

这是一个三层阶梯的考核方式,它的问题是,梯度差太大,可能会造成不公平。

一般考核者会对团队每个人的贡献度/kpi完成情况/影响力/主观能动性等因素一起综合考虑,给出团队里的人员排名,再进行评定。

假设团队有10个人,当第三名与第四名差距很小,第九名与第十名差距很小,一念之间排名就会变化的时候,就会显得很不公平。

第三第四是综合评价差不多的两个人,却划分到差距很大的两档,第九和第十同理。而且,第四跟第九本来是差距很大的两个人,却在同一档,拿到差不多的评价和奖励。

另外一个问题,如果给人打1,这个人有可能会离开,但如果你对团队较满意,在市场上都很难招聘到比团队里靠后更好的人,那就是在浪费资源。

有没有别的方法?这里的问题是梯度差大,如果降低梯度差,比如分成10档,奖金的分配可以根据排名平滑地递减下去,会怎样。

这样刚才说的那种情况,第三四名,第九/十名之间,就算一念之间调换个位置,也不会有太大影响,第三档和第四档之间的奖金分配等差距很小,而第四和第九的分配差距是明显的,整体上是相对公平的(我们假设排名是公平的)。

但据了解似乎没有大公司采用这样的方式做绩效考核,为啥呢?可能因为太温和了,不刺激,不残酷。

这样的考核方式,难以激发进取心理和恐惧心理,多劳多得,少劳少得,没什么大不了。

排名靠前没有仪式感的激励,就像体育比赛没有金牌银牌,竞争性和冲劲会减少,排名靠后没有一个断崖式的差距,让人少了恐惧带来的狂奔。

没有具体的标签,在晋升淘汰等机制上也少了参考依据。档次过多,也会让人纠结于排名的次序上,难以解释。

从大盘上来看,绩效考核是为了激励员工把工作做得更好,公平性并不是最重要的,在大环境下要想拿到最大的公平,就是避免落入两档边缘,争取无可争议的第一。

其实体育比赛/招聘/竞标等很多事物都是这样,跃迁是这个社会竞争的普遍规则。

普陀山与佛教

2019-1-27 评论(5) 分类:随记

上个月去了普陀山,写下一些见闻和感想。

好的:

  1. 普济寺大堂里一群人念经,群诵经文听起来挺有感染力的,不断快速重复念经文,我理解是通过念诵让自己注意力不得不集中在经文上,多次重复后达到放空的效果,控制自己的思想去除杂念。
  2. 南海观音下面,有几个很像是西藏的喇嘛在打坐,独有的沧桑感和庄严感。
  3. 雕刻壁画、佛像特别多,作为外行人只看外表,大多数是很精美的。供奉的神明成百上千不重样,佛教感觉是特别复杂的宗教,听说佛法无边,修佛途径很多,所以创造出来的旁支很多,所以神佛特别多?
  4. 各路人过来烧香拜佛很多,年轻人也很多,看起来很虔诚。佛教有清规戒律,但给人印象却是可以保佑满足人们各种欲望的神佛,世俗上很实用。

不好的:

  1. 寺庙前面有人为商店拉客买香火,说“空手不入佛门”,让人特别反感的一句话,感觉是对佛教的亵渎。
  2. 普陀山交通极其不方便,出行只能靠走路和公交,没有汽车和单车,公交站的设计很奇怪,大多数站点设在离景点目的地五六百米,而不是直接设在景点旁边,让人怀疑是不是为了让人到站后走路过程中逛商店盈利。
  3. 除了交通外还有各种不方便,120块的入山门票,进入每个寺还要再排队买票,公交一小段距离要五块十块,全部不支持手机支付。
  4. 宰人店,之前只在网上听说,这次行程原因傻乎乎被一个人拉去饭店吃饭,体会到宰人的套路,菜单35块钱一份生蚝4只,结账时说他们标的是35块一只而不是一份,怒了,我说这样搞绝逼网上曝光报警,才给35元一份。之前听说在海南有几十块钱一只虾的宰客店,一模一样的套路。
  5. 无意中看到寺庙中的尼姑跟看门的人发火,凶神恶煞,一脸鄙视下人的样子,感觉对这些人来说,出家只是一份工作,跟平常人没区别,戾气都很重。

不懂佛教,带爸妈逛过很多寺庙景点,也只不过是看看样子,作为接受了多年唯物主义教育的人一直没有信仰,觉得那些“得道高僧”是装模作样糊弄大众,但最近觉得,虽然有些人确实是装模作样,但有些人“修成正果通往极乐世界”可能是真的。

人除了真正的温饱是物质需求,其他都是精神需求,住大房子、吃大鱼大肉、玩遍世界、子孙满堂、权力在握、家庭美满,虽然很多是跟物质相关,但实际都是精神需求,物质只是用来满足精神上的这些需求欲望。

佛教提倡只满足基本的温饱物质需求,住在清简的寺庙管温,吃最简单的斋饭菜管饱,其他需求全靠精神修行去满足。纯精神修行能做到什么程度呢,精神就是人脑,人脑可以控制自身的一切,例如困的时候,去想一些惊悚、愤怒之类的事情就可以立马让自己精神;做梦时经常在梦里可以随便串改记忆,可以很清晰“回忆“起某个事情,实际上它没有发生过;梦里还可以不借助任何物质外力直接达到性高潮。纯靠精神力量达到任意感受状态理论上应该是可行的,只是目前科学还未达到这种程度,不知道宗教的修行能达到什么状态,理论上都是可能的。

2018

2018-12-31 评论(9) 分类:生活

2018到处叫惨,我也叫着,不过回头想想还好,无非是股票跌一半,JSPatch平台连连被干,还没到很惨的程度。

工作上今年经历比较多的变化,再一次深刻体验到阿里文化里的拥抱变化,跟腾讯人员组织架构长年不变形成强烈对比,各有利弊,职责的变化让我能得到更多信息,看到和理解更多的事情,也多了比之前大得多的压力。当不涉及具体技术细节,在解决问题思路/方法论/套路上,很多都是共通的,今年体会到很多技术以外的方法论通用性,仿佛刚踏进职场,体验到很多。

最近感受最深的是自身的思考不足,人为了逃避思考,愿意做任何事情,工作生活中碰到的事情和问题都去思考本质原因,是挺难做到的,需要有意识锻炼形成习惯,这点做得不好。经验和信息是数据,发现和解决问题的思维能力是算法,两方面都要提升。

另一点感受是科技与人文清晰的界限,工作上的经验和思维能力都可以归为纯理性的科技理科,这方面能力再强也无法代替感性的人文艺术带来的体验,有时候工作之余听到触动人心的一首好歌,看到一部好书好电影,会有种久旱逢甘雨的感觉。对美的感受力越强,就有越丰富的体验,学理科是为了解决问题,学文科是为了增强对美的感受力,这两者都值得一直学习。

今年的贸易战和经济下滑,对我影响比较大的就是股票腰斩了,大部分钱都在股市上,回想去年年末股市顶峰期,当时在嘲笑自己胆小,面对一支自己认为永远涨的股票都不敢融资加杠杆,今年看来真是幸亏胆小,涨时想融资加仓,跌时想放着总会涨回来,小股民心态特别突出,作为厌恶赌博的人也陷入赌博的圈子,不过人在社会混很多行为都可以归为赌博。在金融公司工作,断断续续听到一些金融知识分享,感觉金融领域太专业,皮毛都还没学到,只有当韭菜的份。

没有被年末的裁员潮影响到,不过危机确实越来越近了,程序员行业在国内有明显的年龄歧视,到一定年龄达不到预期水平就会被市场抛弃,国内竞争压力很大,在大公司久了,得注意下荒野生存能力,否则到时可能会很被动。

JSPatch 8月开始遭受另一波审查升级,混淆的方案失效,苹果确实针对JSPatch做了比较厉害的扫描手段并在不断升级,今年跟审核团队沟通他们也是表示不喜欢JSPatch,还是那套审核后不能修改的说辞,就算解决了安全问题也没用,比较无奈,但热修复需求还在,JSPatch平台还是会继续找解决方案。

博客写得越来越少,没有去钻研一个个技术细节的机会,没多少技术内容可写,工作内容不适合写,纯思考的东西也不成熟,感觉现在不太敢发表一些看法,说话有压力,可以看到今年很多文章都在月末发,都是不想打破一个月一篇的惯例水出来的,以后应该不再遵循这个惯例了。

拍拖十周年,细水长流,后面还有很多个十年。小朋友三岁了,有次送她跟堂兄堂姐回老家住一段时间,小屁孩临别时开心得要命,完全不顾旁边落寞的老爹老娘的感受,堪称年度画面。这么快就长大了,可爱还是一如既往,话特别多,会说“我每天等你们上班等了好久”,不过每天下班看到我第一句话一定是“爸爸我可以看ipad吗”,(;-_-)。小孩的黄金年龄,好好珍惜。

打卡北海道,京都,大阪,硅谷,一号公路,南京,绍兴,普陀山,时不时回忆起来的画面是在北海道,厚厚积雪的街道静谧干净,很惬意,日本真是旅游体验很好的国家,去了两次还想再去。美国朝圣,看到人的多样化,勇士破旧的球馆,斯坦福的大学气息,一号公路的美景,FB小镇般的办公区,可惜没有体验到真正美国居民的生活。

对电子设备的兴趣依然很浓,SwitchAirpodsApple Watch,最佳设备是 Airpods,一般人都买了就后悔,后悔没早点买。刷塞尔达,奥德赛,刷权利的游戏,延禧攻略,毒枭,刷漫画一人之下,零星看十来本书,十几部电影,娱乐比较匮乏。

2018年中规中矩,虽然有不少不如意,但自己与家人身体都健康,自己有一些进步,还算可以了。

2019年继续加油。

30岁

2018-11-30 评论(5) 分类:随记

明天30岁生日,活了整30年。

沿着当前最普通的人生路径,过着最普通的生活,读书考试,应聘工作,结婚生子。碰到过挫折,但跟别人的对比起来挫折并不大,有各样的压力,但还在承受范围内,总的来说还是非常幸运的。在跌跌撞撞地成长中,见识,能力,思维,承受力,在不同时期不同平台都得到一定程度的锻炼,觉得还不错。

有些方面的成长严重拖后腿,情绪控制能力有倒退趋势,贪婪恐惧懒惰等人性也没见处理得比之前好。

能够理解越来越多的事情,包括信仰,活下去不是唯一的真理,可以认为人生过得开心最重要,也可以认为一切都是欲望,欲壑难填苦海无边不如修身养性六根清净,也可以认定献身一项伟大事业是值得的。以前看小说电视剧时不能理解这些行为,现在多少可以。

以前最看重自由,相信等价交换,现在这两个词很少在自己的世界里出现了,变成了责任和成长。

30年大部分体验到的是人生美好的东西,希望后续几十年也是这样。