木尧大兄弟 2017-08-25
数据科学可从被 Google 收购的大数据竞赛平台 Kaggle 说起,Kaggle 是规模很大的数据科学家社区,创立于 2010 年,专注于数据科学、机器学习竞赛的举办。
在 C 端,它很快吸引了大量数据科学家、机器学习开发者的参与。在 B 端,Kaggle 的模式也对接了大批优秀企业,为现实中的各类商业难题探寻算法和解决方案。
而它基于社区提供的招聘服务以及名为 Kaggle Kernels 的代码分享工具也是社区运营的关键竞争力。
大家经常会说 Kaggle 是玩数据的平台,ML 的开发者们展示功力、扬名立万的江湖。如果是学习数据科学刚入行,想要找工作,可先在 Kaggle 上参加几次竞赛。
如下图,是 Kaggle 的两个习题:
回归分析预测房价。这是预测美国中西部一个只有十万人左右的大学城。数据给出 79 个解释变量,如质量打分、形状(规则/不太规则/很不规则)、居住面积、路面(铺碎石/柏油路)等,通过这些分析解释变量,就可以预测房价。
如图,Y 轴是销售价格,X 轴是从 1-10 的质量打分,可以看出,当质量打分增加,售价也同时以递增的速度增加。
分类问题。这个是对谷歌的视频打标签,使用 Youtube-8M 作为训练数据,视频是百万量级,每个视频对应 3-5 标签,总共标签数是 4000 左右。
从给定的训练集中抽象出一些模型来,移动到测试集。问题产出是针对每一个视频,可以预测一列标签,可以根据置信度对标签进行排序。
在 Kaggle 数据竞赛中,数据都是预处理好的,基本变成行和列的表格状数据。所以可以省掉很多原始数据预处理的过程。
如下图,是基本的数据科学流程:
开始要先搜集原始数据(CRM、历史交易等),还有网站分析或对用户 APP 行为进行埋点,根据这些埋点追踪用户的行为。
之后,对原始数据进行预处理,也叫数据清洗,因为原始数据会有很多冗余、重复信息、变量缺失以及错误。基于清洗过的数据集,可以做一些探索性分析和机器学习。
在数据科学的探索与分析方面,尿片和啤酒是很经典的案例。很多分析师会对商品信息进行归类以及监督商品的相关度。
一般情况,大多数的商品相关度都很低,约在 0.1 左右,啤酒跟尿片的相关度是 0.3 左右。针对这个奇怪的现象,分析师们做了分析,发现很多父亲晚上去超市给婴儿买尿片的同时也会买啤酒来自己喝。
这样一来,超市排放商品时可以把相关度比较高的商品放在一起,方便顾客挑选。所以对数据科学来讲,通过数据分析、建模可以得到一些可以让人信服的信息,便于做决策辅助。
另外就是生成分析型和智能化数据产品:
数据科学家可划分为 Analytics 和 Machine Learning 两类,但是也有很多人兼顾两个角色,相互转换。
Analytics 更多时候是问题导向,如购物平台上用户在工作时间和下班后消费习惯的差异。最初可以针对总体综合信息进行分析,然后在结果的基础上做更细化的分析。可把用户按照城市、地理位置、用户使用的客户端来分类细化。
这里整个过程是交互式的,就是不断提出新问题,通过分析解决问题,然后再提出新的问题,最终目的是做决策辅助。
Machine Learning 主要是指标驱动,如提高广告平台上用户的转化率。转化率就是从用户点击广告到生成转化或用户访问网站和下载 APP。
通过应用新模型或对现有系统当前参数进行改良来提升指标,最终目的是生成智能化的产品,当然中间还要考虑规模化和自动化。
Stitch Fix 的商业模式
Stitch Fix 的商业模式和 Netflix 早期的商业模式很相似,在约 2004、2005 年的时候,Netflix 的商业模式主要是用户可以在网上建一个自己想看的电影队列,建成这样一个队列以后,Netflix会把电影寄到用户的家里。
Stitch Fix 采用直邮的模式,只不过它是电商+直邮+推荐。现在,Stitch Fix 是一个在线个性化服装推荐的公司。用户注册后,系统会推荐一些衣服寄到家里,用户可以根据自己的兴趣偏好决定要不要购买这些衣服。
Stitch Fix 主要解决用户的以下购物痛点:
Stitch Fix 的业务模式
如下图,从用户方面看 Stitch Fix 的业务流程:
从用户的角度看,用户需要填写个人风格问卷。问卷涉及购买衣服时会考虑到的常规问题,如颜色、价格、尺寸等等。
Stitch Fix 会搜集用户个人风格问卷,结合算法和造型师的建议进行推荐。之后,用户会收到五件不同的衣服,可在方便的地方试穿及与其他衣服进行搭配,喜欢留下来,不喜欢退回。
Stitch Fix 在做推荐衣服或人和货匹配时,采用的是人机协同方式,不是纯粹靠机器算法,也不是纯粹靠人工,优势互补实现 1 +1 > 2 的效果。
如下图,是人机协同推荐衣服:
通过算法:
如下图,是人和算法协同工作:
构建人和算法协同系统,让两者优势互补,真正实现1+1>2。人可以处理系统中非结构化数据,如文本数据、照片等。
也可以和用户进行感情沟通,如造型师和用户之间,多做情感沟通,大家会更加信任。还可以有更多的创造性,这样算法就可免于被边缘的情况。
如上图,左边是计算机,右边是人,计算机可处理比较繁重的重复性计算,另外计算机的短期记忆与长期记忆都是人所不能媲美的。
人能很好处理非数据化结构、对照片进行美化及建立更好的人机关系。还可以处理敏感度,例如,这样一句话:把话筒放在地上,上面还有一本书。其中“上面”大家都知道是地上,但是这样的场景让机器学习的话是很难的。
如下图,是 Stitch Fix 的数据团队概况:
Stitch Fix 团队约 80 人左右,主要分为客户、推荐、库存和数据平台四个小团队。数据平台团队的大数据架构和自动化分析流程,支撑其他三个团队,这三个团队和事业部一一对应。
客户团队主要是做精准营销、需求预测、用户画像、客服分析。需求预测方面主要考虑用户稳定增长,需求的季节性以及订阅式用户。
推荐团队主要做人货匹配、用户造型师匹配、Human Computation 和造型师行为分析。
当用户发出请求,会把造型师匹配给用户,Human Computation主要是在虚拟环境下,研究造型师的行为,如一些历史购买或退回的数据,基于这些数据抽样,构造虚拟环境提供给造型师挑选衣服。
在已知购买和退回的情况下,控制展示造型师的信息。同时研究不同展示的情况下对造型师的成功率产生的影响。造型师行为分析则通过日志,对造型师的实际拣选行为进行分析。
库存团队主要做库存预测、基于算法清仓和打标签。
库存随时性很大,有仓库库存商品,还有从库存寄到用户家,在用户家里停留,以及用户不买的产品退回来的商品,所以要对库存进行预测。还有对商品打标签,有了标签数据就可以做更好的匹配。
智能化物流—仓库分配
Stitch Fix 采用的是单一仓库发货,单一包裹的方式。
如下图,是选仓发货:
Stitch Fix 有五个仓库,当用户发来请求,首先进行仓库的选择。在选仓的同时考虑运费、投递时间、库存匹配等。仓库不断有商品出售,因此库存会不断消耗,不同库存和用户维度在实时变化。
智能化物流—造型师匹配
如下图,是用户造型师匹配表:
基于交易历史、用户对造型师打分和两者资料的匹配情况。它会考虑到用户跟造型师的属性,如用户是妈妈,会尽可能推荐一位也是妈妈的造型师。
智能化物流—人货匹配
如下图,是基于用户和过去产品交易的特征建模:
人货匹配可以理解为比较传统的机器学习算法,一种方法是协同过滤。协同过滤不用用户特征和产品特征,只需用户和过去产品交易的特征。
另一种方法是基于用户特征和产品特征建模,用户特征部分 Stitch Fix 有用户问卷;产品特征部分,通过逻辑回归,支持向量机,深度神经网络学习得到。
如下图,是用户问卷特征:
图中可以看到,对一个用户会搜集他的数据,包括年龄、位置、职业,还有用户的身材尺寸,颜色偏好等等。
Stitch Fix 还设计了一个样式彩虹概念,把每个用户样式、偏好放在七维空间,七维包括经典、浪漫、波希米亚风、前卫、闪亮、休闲和制服式等。
除此之外可以根据交易历史得到隐式尺寸,如用户尺寸是从小到大,在不同范围里会通过模型预测一些隐式尺寸来把用户放到同一个范围内。
如下图,是产品特征:
产品特征是通过深度神经网络学习得到的,通过分析图片,对每一个产品的图片放到深度神经网络中,生产一些进程,把每一件产品进程可计算产品相似度矩阵,这样就可以用邻近法进行推荐。
在算法方面,Stitch Fix 主要是在开源库的基础上自研,这样的模式比较像脸书。
如下图,Stitch Fix 主算法 Mixed-effect logistic regression 混合效应逻辑回归:
在矩阵中,每一行代表一个用户,每一列代表一个产品。还有用户特征、产品特征以及一些匹配反馈。之后通过建模预测这些数据,这个模型就是带有混合效应的逻辑回归。
对于推荐算法而言,最需要考虑的是以什么指标排序?比如用交易数据、购买率?
Naïve 的方案是忽略造型师选择,对交易数据建模。
交易数据就是每一个用户,每次邮寄的物件产品,哪些被购买、哪些被退回。这样做的好处是用传统机器学习就可以解决问题,交易数据的数据量不是很大。
但是,我们如果真的用这样的方式,就会遇到很多问题。如删除数据:
当用户有特殊请求时,如有用户不喜欢无袖,造型师就不会推荐,这部分数据在交易数据中就体现不出来,对于这样的用户就没办法估计这些产品在这些用户推荐的成功率。
购买率不一定是好的排序指标
如下两图,是两件衣服购买率的比较:
图中可以看到第一件是覆盖率比较低的,大圈是所有用户群,在所有用户群中只有很小一部分用户挑选了这个产品,因为这个产品是比较前卫的,虽受众较小,但知道应该选给谁,购买率很高。
第二件比较中性、百搭,给谁都可以,但是造型师不太清楚哪些是购买客户。所以选中用户圈覆盖很大,但高覆盖率下是低购买率。
如下图,如果用购买率做指标需要把第一件排前:
这样做排序还需要注意一个很重要的因素就是造型师选择过程中会有选择性偏差,解决这个偏差可以采用 Heckman 两阶段模型。
本文主分享了数据科学的一些心得体会以及 Stitch Fix 的一些关键技术。如果读者对数据科学感兴趣,个人建议有三个词:兴趣、实战、分享。
以上内容根据王建强老师在 WOTA2017 “大数据应用创新”专场的演讲内容整理。