写点什么

用数据的心智经营一家公司

2017 年 6 月 06 日

首先,请允许作者引用狄更斯的名言开头,相信很多人都非常熟悉:

这是最好的时代,这是最坏的时代, 这是智慧的时代,这是愚蠢的时代; 这是信仰的时期,这是怀疑的时期; 这是光明的季节,这是黑暗的季节; 这是希望之春, 这是希望之冬。

为什么引用这样的话开头?众所周知,从 1969 年英美等发达国家年率先进入信息时代来,科技开始改变人类生活方方面面,其步伐越来越迅猛,而中国的起步是在 1984 年才起步,整整落后了 15 年的时间,在此前的时光里,大多数中国企业都处于学习国外先进技术的阶段。而今天,让我们看到希望和苗头的,恰恰是大数据的蓬勃发展和人工智能的突破,而在其中引领风潮的,正是一群理性且实干、时尚且睿智的数据科学家们。

以前囿于数据的匮乏、计算机性能的低下,数据科学这个概念只能流于形式,局限在象牙塔和专业理论中。而如今,随着大数据之风兴起,CPU 和 GPU 等处理芯片的普及,数据科学可以有机会走出以前的限制进入实际应用领域,数据科学家们也终于有机会抛头颅脸,扬名立万。

目前,所能限制我们的,就只剩下人的陈旧思想和制度的拘泥形式挡道。今天小编给大家详细介绍国外一家创新公司如何将应用数据科学技术和理论到实际问题,希望能够引起国内实业家的共鸣,大胆创新,将数据科学在国内肥沃的土壤上落地发芽,而这家公司就是 Stitch Fix。

Stitch Fix 是一家零售公司,也是一家技术公司。创立于 2011 年 2 月,从 475 万天使 A 轮开始,到 2014 年 6 月融完了 C 轮后,一共融资 4675 万美元,其商业模型采用了前所未有的数据科学,不仅仅是推荐系统,还有基于人的计算建模、资源管理、库存管理、算法化时尚设计和其他多种功能领域,发展迅猛。

许多人都有选择困难症,买衣服就是其中之一。Stitch Fix 公司创始人 Katrina Lake 说道:“我们的世界从不缺少衣服、包包和鞋子,但要找到最合适自己的,才是最大的挑战。“于是,她结合自己的专业背景,组织了一群数据科学家、IT 工程师、时尚造型师和零售业精英,开创了这一家公司,为大众寻找自己喜欢的服饰。那么这家公司是怎么解决消费群体这样的不确定性需求的呢?又如何管理仓库的进货出货?如何匹配合适造型师給到消费客户意见?小编将在接下来的章节一一为大家讲解。

总体介绍

在进入正题前,我们需要了解 Stitch Fix 如何給客户服务。

如果你注册成为 Stitch Fix 的客户,你首先需要填写相应的表格,可以详细也可以粗略填写。当然最主要的是包含了你的形体基本数据,大体喜欢的穿衣风格以及你的购物预算这三方面。问题可以细致到你的身高体重、出去约会次数、喜欢哪种风格的首饰、喜欢哪种风格的衣服穿在身上的各个部位等等,网上注册则会要求做一些选择题,哪些是你喜欢的风格、颜色,哪些又是你不喜欢的,接下来你需要填写你的收货日期并预先支付 20 美元的购买押金。

接着,等到了收货日期到,你将会收到一份包裹,里面有各种衣服服饰,如牛仔裤、毛衣、外套等等,额外还有一张小纸条写着推荐这些衣物给你的原因,教你怎么穿衣搭配才好看,喜欢的衣物你可以留下,不喜欢的可以免费退回,同时会让你填写反馈表格,然后你就可以登陆他们官网为你所留下的衣服付账。之后当你有下次需求时都可以在官网了预定下次收货时间和留下此次购买衣服理由。

以上是客户的视角所能看到的,那么下面将介绍的是 Stitch Fix 所运行的主要环节和技术。

选定送货仓库

在给客户送货之前,Stitch Fix 中心首先会选定一个仓库送货,目前 Stitch Fix 在美国总部一共有五个仓库,在选定仓库过程是由一个算法所决断,这个算法计算了一个代价公式,基于每个仓库与客户的位置关系以及库存与客户所需的匹配度计算。

(点击放大图像)

对每一个客户都计算一遍后就会生成一个代价矩阵,这样,选定送货仓库的问题就变成了一个最优化问题,这样就只需要运用数学理论里最优化的解决方法就可以求得全局最优解(当然也会参考客户的特殊需求)。

(点击放大图像)

评分排序

选定仓库后,Stitch Fix 后台系统会上罗列出该仓库的所有库存清单,首先会经过一个过滤算法(基于客户所填信息)先去除掉客户已经购买过的或者已经咨询过不需要的库存。针对淘汰后留存的每一款服饰,机器会尝试评估这个客户喜欢这款商品的相关概率。这是一个非常困难的问题,Stitch Fix 尝试过很多种方法来实现,下面介绍了其中几种,但总的来说,他们是从不同算法上对每一款商品进行多次打分后排序。

这个问题是经典的协同过滤问题:在基于之前所收集的不同客户对不同风格商品的回馈历史数据,他们填充一个稀疏矩阵(横列是所有客户,竖列是仓库里的所有商品,每个单元格填写的是客户对商品的相关系数,大部分还是未知,所以称之为稀疏矩阵),之后他们将根据一些明确的数据(可以在注册或者历史购买中所填写的偏好以及这款商品受到其他与该客户相似的其他客户的历史反馈)来预测一款与从没收到过这款商品的客户之间的相关系数。更多的,他们采用了一些标准的协同过滤算法(例如根据和你有同样喜欢其他款商品的人对这款商品的喜欢程度去推算)。

从而,他们设计了混合效应模型,在数据科学里这是非常有用的,因为该问题的纵向因素是:它让公司能够既从个体又从整体上学习(与追踪)到客户随着时间的兴趣爱好变化。同时,他们也利用第三方源的相关特征,从(结构化/非结构化)数据获取并使用,进而提高算法效率。

(点击放大图像)

有时候通过文字很难去描述一个客户的风格喜好,但当客户看到商品的时候就会知道到底喜不喜欢它,所以Stitch Fix 也关注客户喜欢看的图片(例如从Pinterest),也在他们库存里搜索视觉类似的商品。借此训练一个神经网络去生成向量来描述这些图片,然后在之前库存的每一款商品上提前计算出来向量与这些向量之间求它们的余弦相似度作为分数。

(点击放大图像)

同时也适用自然语言处理技术来根据客户的购买需求文字对产品打分。

(点击放大图像)

最后根据以上多种打分机制,综合考虑,选择出满足一定分数的商品出来并排序输出商品图片和客户资料到Stitch Fix 时尚造型师团队去。

匹配时尚造型师

时尚造型师的选择也是一个类似之前的最优化问题。当然人类更为复杂,机器只会选择一样,但是时尚造型师会根据客户具体需求再次进行多种选择,所以他们对这个匹配也进行了优化。

为了完成这点,他们首先计算了在当前时期每一个时尚造型师和那些有需求的客户之间的匹配分数,这个匹配分是一个复杂的函数,根据的是客户和时尚造型师之间的历史数据、客户状态及喜好还有时尚造型师的设计风格之间的相似度。

(点击放大图像)

此时,时尚造型师指定优化问题接近于之前提到的仓库指定问题,期望能做到:

(a)需要只考虑那些等待发货的客户(b)我们必须频繁优化该问题从而解释造型师工作队列的多样化。

因此,Stitch Fix 也给这些时尚造型师打造了一个基于客户构建的计算平台去更快更深刻地理解客户。这个平台会记录一些重要的数据,例如时尚造型师都给那些客户选择了那些服装搭配,决策时所采用的服装的共同点和不同点,最后再追踪结果返回数据等等,这些测试和记录,都会帮助我们理解时装造型师怎么决策。

(点击放大图像)

最终,时装造型师拍板从库存里做的选项,写一份私信给客户在具体的场景或者只是试衣间里描述如何去搭配这次包装里的各种服装,于是这样就确定好了需要派发的衣服。

仓库取货路径问题

在确定好应该挑选的商品后,因为仓库比较大,还需要规划取货路径。这是一个经典的算法问题,是一个NP-hard 旅行商问题,已有方法求得这类问题的次优解。现实里,Stitch Fix 还会进一步考虑这个问题,去尽可能先计算出可以最轻易提取产品的路径。

(点击放大图像)

形成体系

当然,Stitch Fix 的货品就这样从仓库派送到对应的客户,而这也才是Stitch Fix 所做的步骤中刚刚起步的一小节而已。

客户打开盒子后看到很高兴的会保留,发送回不喜欢的衣服,然后告诉Stitch Fix 对每件服装的看法。她和Stitch Fix 有一个共生的关系,她给了非常有见地的反馈,使得Stitch Fix 不仅能以此反馈更好的服务下一次,也提供了数据去让Stitch Fix 更好地服务于其他相似客户。

(点击放大图像)

以此生意开始流转,数据也在其中不断迭代增加及使用。抽象着看,Stitch Fix 将系统作为一个整体考虑。 站在这样的一个层面,业务的另外两个方面变得清晰:

(1)Stitch Fix 必须通过为客户购买和/ 或设计新服装来持续补充库存,这丰富的数据提供了极好的机会;

(2)Stitch Fix 必须预测客户的需求,以确保在适当的时间有足够的适当资源。

(点击放大图像)

库存管理

如果你觉得完成以上后台及系统Stitch Fix 就觉得完成整个运营那你就大错特错了。Stitch Fix 还考虑了其他两个重要的问题:库存管理和新风格发展。在库存管理这一块,他们采用了状态机的理论知识来支撑。

像这类给客户选货供货送货的买卖,会涉及到公司应当考虑给仓库入什么货、入多少货这类需求预期问题,其中的解决方法之一是考虑每个时间点的每个客户的“状态”。他们是新客户吗?他们是通过转介还是自己到达?他们的衣柜几乎满了吗?他们是否在生活改变后建立他们的衣柜?还是只想尝试新的东西?根据他们的状态,他们可能会有差异的装运需求,不同时间和类型的电子邮件保持联系的渴望等等。

(点击放大图像)

因此Stitch Fix 跟踪每个客户的每个接触点 - 发送的每一次包裹,每一个收到的反馈,每个提交,每封电子邮件等等这些信息数据记录在案。

(点击放大图像)

使用这些数据,可以试图去了解客户的状态及其在这些不同时期的需求。然后可以检测状态的变化,并考虑可能的触发器。这个过程本身可以导致洞察,从而帮助公司去保持客户的快乐消费体验。

(点击放大图像)

一旦定义和理解这些状态,并检测和理解客户之间的过渡,就可以开发状态转换矩阵和马尔可夫链模型,使Stitch Fix 能够达到研究系统级的效果。

(点击放大图像)

这些马尔可夫链模型的许多用途之一是预测未来的需求,这是很重要的。因为公司往往需要在购买库存月份前维持库存量,还必须确保我们在正确的时间拥有适当数量的资源。

(点击放大图像)

通过客户需求的库存损耗最终必须通过购买新库存来抵消,其中还有一个挑战是如何确保购买时机,以便为时装造型师保持足够的库存可用性,同时最小化订购成本和承载成本(与库存曲线下面积相关的运营成本和机会成本)。

(点击放大图像)

满足未来需求只是库存管理挑战之一:还必须适当地将库存分配给不同的仓库,偶尔捐赠旧库存,为新风格商品腾出空间。这里Stitch Fix 使用新的算法来帮助进行这些过程。请注意,现实情况比这个简单的例子更复杂,因为必须深入了解每个仓库中不同类型和样式的服装的可用性,但仍旧会遵循一些简单的规则来指导清货。

(点击放大图像)

有多少样式要购买?哪些物品应该去哪个仓库?什么时候应该捐赠什么库存?通过使用系统动力学模型来回答这些问题,将其与历史数据进行拟合,在给定的量化后的不确定性里,用上述结果来进行鲁棒性优化。

(点击放大图像)

新风格发展

容量挑战不是库存更换的唯一考虑因素:Stitch Fix 还想以不断改进库存的方式购买和开发新服装,这样可以有机会帮助时装造型师为广泛的客户群带来更大的乐趣,为独家品牌设计新款式提供发展基础,也为特定客户群定制了新设计,因为这些客户群往往不满足其他品牌。

而Stitch Fix 通过遗传算法的灵感来把握住这个机会:使用了重组和突变以及适应性测量,“物竞天择,适者生存”的核心思想。他们是这么做的:

第一步是将每种服装的各类基本属性分解看待,每种商品的一组属性视为其“基因”,商品就成为了一类有”基因“的”生物“。然后,以这种方式考虑庞大的样式集,并考虑为每个“生物”提供的客户反馈(即是该“生物”在这样的环境下的“适应性”)。继而考虑通过重组现有样式的属性并可能稍微改变它们来创建新样式。 注意,可能的组合的数量非常大(Πki)。

在下一步中,Stitch Fix 偏离了一个规范的遗传算法:不是简单地选择基于适应性,然后释放随机重组和突变作为下一代风格,而是再有点更挑剔出究竟是什么理由使它能进入库存中。开发一个给定的属性集合可能适合目标客户的模型,然后使用这个模型来突出具有高的可能性的各种属性集。最后时装造型师一起审查和完善这个集合,并最终生产下一代风格。

(点击放大图像)

以上就是Stitch Fix 所做的创新和突破,这些成果脱离不了他们对一个数据平台的建设打磨。

数据平台

数据平台团队提供数据和计算基础设施以及一系列内部SaaS 产品,允许垂直领域中的数据科学家工作,高效地进行分析,编写算法并将其投入生产。 该平台很好地封装了数据分布,并行化,自动扩展,故障转移等属性。这允许数据科学家主要集中在科学方面,但仍然享受可扩展系统的好处。 而且,数据平台工程师专注于构建平台。 也就是说,他们没有负担的业务逻辑和要求,他们没有上下文。 这是全栈数据科学家的工作, 其核心思想是“工程师不应该写ETL”,Stitch Fix 的数据平台团队使数据科学家能够从概念到生产一整条路线上进行算法开发。

(点击放大图像)

以上就是作者想要给大家所介绍的融合数据科学和零售业的新型公司。TalkingData 作为中国最大的独立第三方大数据公司,我们的愿景是帮助传统企业转型升级为数据驱动型公司,就如同作者今天所介绍的公司一样。如果你是一名传统企业家,你是有兴趣, 你有勇气,你有追求,你有突破传统的思想和重新定义一切的决心,请和我们联系,我们将竭尽全力帮助你公司成为下一家 Stitch Fix——去用数据的心智经营一家公司。

部分内容和图,摘自此

作者介绍

叶杰生,TalkingData 数据科学组,主要职责是负责挖掘与处理 TalkingData 的地理位置数据以及开发相关位置服务,后期与数据管理组和数据收集组同事联合开发了 WI-FI 采集器-来来,熟悉掌握 scala 编程语言、spark、hadoop、jenkins、zepplin 等大数据处理相关开源工具,熟悉机器学习相关算法理论,关注大数据、人工智能以及深度学习等领域,目前转入总部 6 负责 AI、IOT 相关研究,探索数据到智能的可行方案。

2017 年 6 月 06 日 17:412250

评论

发布
暂无评论
发现更多内容

架构师训练营第五周总结

睡不着摇一摇

架构师一期

图解 | 一图摸清Android系统服务

哈利迪

android

第五周学习总结

alpha

极客大学架构师训练营

第五周作业

alpha

极客大学架构师训练营

架构师训练营 - 第五周总结

一个节点

极客大学架构师训练营

架构师入门感悟一

莫问

架构师训练营week1学习总结

花果山

极客大学架构师训练营

【建议收藏】10个适合程序员逛的在线社区

田维常

食堂就餐卡系统设计

DL

第一周UML图

Geek_9527

架构方法学习总结

Sandman

极客大学架构师训练营

食堂就餐系统

梧桐

Architecture Phase1 Week5:Summarize

phylony-lu

极客大学架构师训练营

极客大学 - 架构师训练营 第五周

9527

图解 | Android系统的启动

哈利迪

android

第1周作业:食堂就餐卡系统设计

Steven

技术选型一第五周作业「架构师训练营第 1 期」

天天向善

架构师训练营 -week05- 总结

lucian

极客大学架构师训练营

LeetCode题解:50. Pow(x, n),迭代分治,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

架构师训练营第 1 期 -week5

习习

Architecture Phase1 Week5:HomeWork

phylony-lu

极客大学架构师训练营

正式“退休”的Flash,未来我们会怀念它吗?

脑极体

架构师训练营 - 第五周作业

一个节点

极客大学架构师训练营

1024,属于程序员的一天

白色蜗牛

编程 程序员 Java 分布式 1024

LeetCode题解:50. Pow(x, n),递归分治,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

图解 | 一图摸清Android应用进程的启动

哈利迪

android

架构师2期week1作业

M.

架构师训练营 -week05- 作业1

lucian

极客大学架构师训练营

架构师训练营 1 期 - 第五周作业(vaik)

行之

极客大学架构师训练营

微服务监控:SpringBoot-Micrometer-Influx

LanLiang

监控 Influxdb springboot metrics

技术选型一第五周总结「架构师训练营第 1 期」

天天向善

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

用数据的心智经营一家公司-InfoQ