算法介绍

云至鼎科技是如何用数据科学来制定计算策略的?

log p 1 - p = α + + Zb ... min i j a Σ Σ a ij q ij s.t. a ij   =  1  i j Σ a ij     { 0,1 } i,j a ij   <  k j   j i Σ xt ( x ,  u ,  w )   p (i → j ) =  logit  (  β 0   +  β x 1  ...  ) p ( 1 ) = β ex_cell +  α p   (   1 |  stylist   ) +  α p   (   1 |  client   ) ... ... ... c i s j

云至鼎科技致力于服务中国本土的高端制造企业,帮助国货出海。我们正在改变企业开发“好”产品的方式。利用我们的算法程序和平台应用开发极具潜力的产品,来规避选品风险,扩张海外业务,提高利润!我们的数据来源于全球尤其是美国市场,从超过10亿个产品中,挖掘出能够带来丰厚利润的市场和产品机会,并增加了我们自己的前沿算法,根据企业需求,可以设置品类、价格区间、销量范围、材质功能等近20个过滤器,在这个信息全面的大数据仓库中找到最佳的产品机会。

我们的商业模式采用了前所未有的数据科学,这不仅体现在推荐系统中,在人工计算、资源管理、库存管理、算法时尚设计等许多其他领域亦是如此。我们所做的一切都深深地扎根于实验和算法开发。欢迎浏览本页面,了解有关示例的详细信息。

这些数据是什么样的呢?除了从用户那里获取丰富的反馈数据外,我们还收到大量关于商品和用户的前期数据。我们的买家和设计师会捕获尺寸和样式的细节,并且用户在注册时也会填写个人资料并进行校准,这使我们能够以最少的努力获取最有用的数据。

在纵观整个流程之前,我们先来浏览一下装运请求的填写,看看此过程涉及的众多算法中的一些算法是如何起作用的。

用户体验第 1 部分:个人资料和请求

如前所述,用户在首次注册时会填写一份“样式个人资料”(可以随时更新)。然后,我们就可以轻松制定交付策略:使用一种算法来填充日历,用户可以从中选择交付日期。

仓库作业

装运请求由分配给仓库的算法进行处理。该算法根据每个仓库相对于用户的位置以及不同仓库中的库存与用户需求的匹配程度,为每个仓库计算一个成本函数。

针对每一位用户执行这组成本计算,以创建成本矩阵。

将用户与仓库对应分配是一个二元优化问题。

全局最优解包含该特定用户的仓库分配。

然后,将装运请求发送到“人机”样式算法。

智能机器

首先,机器执行各种算法来生成按等级排序的库存清单。

过滤步骤根据注意事项移除一些样式(用户已经购买过的,或具有用户要求避免的属性的样式)。

对于剩下的每一种样式,机器随后会尝试评估这个特定用户喜欢某个特定样式的相对可能性。这是一个难题,我们有许多不同的方法来解决它——这里只讨论其中几种。但总的来说,请注意,我们会用不同算法的匹配得分多次标记每个物品,然后对它们进行排序。

在某些方面,这个问题是经典的协同过滤问题:基于不同用户对不同样式的反馈,我们必须填充(稀疏)矩阵中的空白,从而预测为尚未收到样式的用户发送样式的结果。因此,我们“确实”使用一些标准的协同过滤算法(例如,那些喜欢您喜欢的东西的人也喜欢…)。

不过,与大多数协同过滤问题不同的是,我们拥有来自用户自我描述和服装属性的大量明确数据,这有助于解决冷启动问题;不仅如此,如果我们使用考虑这些数据的算法,还可以提高准确性。

其中一种方法是混合效应建模,由于我们的问题具有纵向性质,这种方法特别有用:它可以让我们既从个体又从整体上了解(并跟踪)用户喜好随时间的变化情况。

除了许多可用的显式特征以外,我们还可以从其他数据(结构化和/或非结构化)推断出一些与用户和样式特别相关的潜在(未声明)特征,并将其用于改进性能。

举例来说,一位新用户可能会告诉我们,她穿中号衬衫,但她对中号衬衫的偏好究竟在小中号到大中号之间的哪个范围呢?同样的问题也适用于我们库存中特定样式的服装。(请注意,为简单起见,在这里我们将“合身”视为一维的,但实际上,在云至鼎科技,我们将其当作多维问题来处理。)

通过用户的“合身”反馈和购买历史记录,我们可以了解特定的用户和样式在这一范围内的具体位置,然后就可以将这些潜在特征用于混合效应模型及其他地方。

让我们跳出经典协同过滤的框架进一步分析问题,我们还需要研究大量的照片和文本数据:库存样式照片,以及我们从用户那里收集的大量书面反馈和需求说明。

有时,我们很难用语言来描述用户的风格偏好,但当用户看到商品时就知道是否喜欢了——鉴于此,我们的机器会查看用户喜欢的衣服的照片,并在库存中搜索视觉上相似的物品。我们使用训练过的神经网络来生成“锁定”图片的向量描述,并预先计算库存中每个物品的向量,然后计算这两种向量之间的余弦相似度。

我们使用自然语言处理技术,根据用户的需求说明以及其他用户对同一物品的文本反馈对物品进行评分。

在对商品选项进行排序并将其提供给专业设计师参考时,我们会分析所有这些算法分数以及许多其他类似因素。

匹配算法

一旦完成机器排序,装运请求就会被路由到人工环节。

人类比机器更具多样性。机器都是相同的——只需选取一台即可。但人类设计师却不同,他们往往只适合一部分用户,而非所有用户。鉴于此,我们用算法来优化这一匹配关系。

我们首先计算每个可用的设计师与当前期间请求发货的每个用户之间的匹配分数,这是一个复杂的函数,它反映了用户与设计师之间的历史记录(如果有),以及用户所陈述的和潜在风格偏好与设计师的风格偏好之间的相似性。

设计师分配优化问题与上述仓库分配问题类似,以下几点除外:(a) 这里只需要考虑那些等待发货的用户,(b) 我们必须更频繁地重新运行优化问题,以考虑设计师工作队列的不同大小。

拥有智能工具的智能人类

机器非常适合执行机械计算相关的任务,但也有一些其他任务需要即兴发挥、社会规范知识,以及与用户沟通的能力。这些任务属于人类的职权范围,也就是设计师的用武之地,他们可以执行只有人类才能完成的计算类型。

在开始设计装运样式时,设计师会在一个定制界面中完成一项任务,此界面可以帮助设计师快速深入地了解用户。

我们的计算团队在这个界面进行了许多不同的测试,从而帮助我们理解设计师是如何做决定的。

这些知识在很多方面为我们提供帮助:改进我们的算法设计,改进设计师培训程序,以及不断改进设计师用来设计包装箱的界面。

最后,设计师完成库存清单中的各项选择,并写下一份个人记录,描述用户在特定场合如何装饰这些物品,和/或用户如何将它们与橱柜里的其他衣服进行搭配。

到此,造型设计过程就完成了,接下来,我们准备处理货物装运。

智慧物流

这个处理步骤涉及各种运筹学问题。

比如,给定要装运的货物,拣货员穿过仓库去装箱的最佳路线是什么呢?

拣选路径路由问题是 NP 困难旅行商问题的一个实例。在实践中,我们甚至进一步研究了可以同时拣选的最优装运分组。

然后按照用户要求的交付日期将货物交付给用户。

用户体验第 2 部分:试穿和反馈

但这仅仅只是开始。

用户满怀希望地打开包装盒,高兴地保留了想要的物品,并把其余的退回,然后告诉我们她对每件衣服的看法。她和算法优化团队之间有一种互利关系,她向我们提供一些非常有见地的反馈,这不仅有助于我们提高数据和算法优化的精度以便于以后向她提供更好的服务,也可以更好地为其他用户服务。

总结

我们回顾一下填写装运请求的过程:用户创建一份“样式个人资料”并请求装运,我们将这些信息与仓库进行匹配,并采用样式算法与设计师相结合的方式来选择样式,设计师写下一份个人记录,我们交付货物,用户保留自己喜欢的物品,退回其余物品,并向我们提供反馈。

但这只是一次货物装运,我们可以把整个系统作为一个整体来考虑。在这个层面上,业务的其他两个方面变得清晰起来:

(1) 我们必须通过为用户购买和/或设计新的服装来不断补充库存,这为我们从丰富的数据中获益提供了绝佳的机会;

(2) 我们必须预测用户的需求,从而确保在正确的时间拥有足够的适当资源。

首先,我们来看看如何预测用户需求,然后再考虑库存管理和新样式开发。

状态机

我们看待这个需求预期问题(以及相关问题)的一种方式是考虑每一位用户在每个时间点的“状态”。他们是新用户吗?他们是通过介绍还是自己来的?他们的衣橱快满了吗?他们是否正处于人生转变后添置新衣的阶段?或者只是想尝试一下新事物?根据他们的状态,他们可能会有不同的装运需求、不同的电子邮件联系需求,等等。

我们跟踪每一位用户的每一个接触点——我们发送的每一件物品,得到的每一个反馈,每一个引荐,每一封电子邮件等。

我们试图通过这些数据了解用户的状态及其在不同状态下的需求。然后,我们可以检测状态的变化并考虑可能的触发因素。这个过程本身就能让我们更深入地了解如何为用户提供更满意的服务。

一旦我们定义和理解了这些状态,并检测和了解用户在各种状态之间的转换,就可以开发状态转换矩阵和马尔可夫链模型来研究系统级的影响。

需求建模

这些马尔可夫链模型的用途非常广泛,其中之一是预测未来的需求,由于我们通常需要在货物到达仓库前几个月购买存货,因此这一点非常重要。此外,我们还必须确保在合适的时间拥有适当数量的资源和设计师。

库存管理

通过用户需求消耗的库存最终必须通过购买新的存货来抵消。其中一个挑战是寻找正确的购买时机,这样,我们就可以为设计师保持足够的库存,同时将订货成本与库存持有成本(与库存曲线下的区域相关的运营成本与资本的机会成本)的总和降至最低。

满足未来的需求只是我们库存管理面临的挑战之一:我们还必须适当地将库存分配到不同的仓库,并偶尔清理旧库存,为新款式商品腾出空间。我们可以使用算法来帮助处理这些过程。

(请注意,实际情况比这个简单的例子要复杂得多,因为我们必须深入了解每个仓库中不同类型和风格的服装的可用性。但为了看上去整洁美观,我们依然使用简单图示。)

何种样式的服装要购买多少?哪些物品应该送到哪个仓库?什么时候应该清理哪些库存物品?

我们通过以下方式来回答这些问题:使用系统动力学模型,将其与历史数据进行拟合,并用它对我们预测中量化的不确定性进行稳定优化。

新款开发

仓库容量方面的挑战并不是库存置换的唯一考虑因素:我们还想以不断改进库存的方式购买和开发新服装,帮助设计师给广大用户带来更大的乐趣。

通过为我们行业客户的独家品牌设计新样式,可以提供绝佳的机会为特定的用户群体量身定制新设计,而这些用户群体往往无法得到其他品牌的充分服务。

我们从遗传算法中获得灵感来把握这个机会:我们使用重组和突变以及适应度测量——与大自然通过自然选择来进化的机制相同。

第一步是将每种样式视为一组属性(“基因”)。

然后,我们以这种方式考虑各种各样的样式,并考虑我们为每种样式提供的用户反馈(“适应度”)。

现在,我们考虑通过重组现有样式的属性并可能稍微进行修改来创建新样式。请注意,可能的样式组合数量惊人 (∏ki)。

在接下来的步骤中,我们在某种程度上偏离了标准遗传算法:我们不是简单地根据适应度来选择样式,然后释放随机的重组和突变作为下一代样式;而是在一定程度上更加注重将其作为库存物品的原因。

我们首先开发一个模型,以确定给定的属性集在多大程度上适合目标用户。然后使用这个模型来突出显示我们认为被用户高度喜爱的各种属性集。

接着,算法团队与设计师一起审查和完善这个集合,并最终确定下一代样式。

工厂生产这些新样式,并提供给我们的样式算法,最终送到乐于购买的用户手上,这一进化循环过程不断持续下去。

我们的算法团队确实有很多事情要做。

到目前为止,我们的算法团队已经接触了一些项目:通过样式算法、Merch 算法和用户算法服务服装、家具、情趣行业。

数据平台

数据平台团队提供数据和计算基础设施,以及一组内部 SaaS 产品,使领域数据工程师能够有效进行分析、编写算法并将其用于生产。该平台可以很好地封装数据分布、并行化、自动扩展、故障转移等属性,从而使数据工程师可以将精力集中在“科学”方面,同时还能享受可扩展系统带来的好处。数据平台工程师专注于平台构建,也就是说,他们没有业务逻辑和业务需求的负担,那是全栈数据工程师的工作,其核心思想是“工程师不应编写 ETL”。数据平台团队使数据工程师能够进行从概念到生产的所有算法开发。

DOC_1066 lda2vec s j (1) , s j (2) , s j (3) s j 服装向量 j c i (1) , c i (2) , c i (3) c i i 用户向量 A B TX c 1 feb14 用户数据 装运请求 款式选择 设计师注释 用户反馈 仓库作业 用户 (1) 新款开发库存管理 (2) 状态机需求建模 仓库作业 人工计算匹配算法推荐系统 物流优化 min i j x Σ Σ d ij  x ij s.t. x ij     { 0,1 } x ij   ≤ |S|  - 1    V, S    i,j   S, ij Σ x ij   =  2   i j Σ where d ij  = | p i (y)  -  p j (y) | + | p i (x)  -  p j (x) | +  β ij if    k  s.t. (  p i (x)  >  γ k  ) & (  p i (x)  <  γ k+1  ) &         (  p j (x)  >  γ k  ) & (  p j (x)  <  γ k+1  ) then     β ij   = 2  min ( (  p i (x)  -  γ k  ), (  γ k+1  -  p i (x)  ),                (  p j (x)  -  γ k  ), (  γ k+1  -  p j (x)  ) ) else    β ij   = 0 and 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 where x k   =   some factor (e.g. season, recently emailed, phase of moon) p   ( trans. i → j  )   =  logit  (  β 0   +  β 1   x 1   +  β 2   x 2   +  ...  ) client states i Σ demand t   = n i,t  p   ( demand |  ) q ij   =  f  ( shipping_cost ij , shipping_time ij , inventory_match ij , ... ) 0.235 0.172 0.624 0.382 0.832 用户 i 仓库 j 成本 q ... 0.347 0.825 0.722 ... 0.533 0.874 0.193 ... ... TX CA WI 分配a 0 1 0 ... 1 0 0 ... 0 0 1 ... ... TX CA WI min i j a Σ Σ a ij q ij s.t. a ij =  1 i j Σ a ij { 0,1 } , i,j ... a ij <  k j j i Σ COST MATRIX OPTIMIZATION SOLUTION 求解此用户行的缺失元素... ? 0.83 ? 0.54 ? 0.27 ? 0.92 ? 0.13 ? ? 0.85 0.76 ? 匹配反馈 0.47 0.23 ... 0.59 0.14 ... 0.62 0.90 ... 显式用户特征 0.21 0.74 0.53 0.26 0.85 ... ... ... ... ... 显式样式特征 c i s j ? ? ? ? ? ... ... ... ... ... 潜在样式特征 ? ? ... ? ? ... ? ? ... 潜在用户特征 m ij = f ( fix_history ij , feedback ij , style_profile_alignment ij , ... ) 匹配得分 m 0.235 0.624 0.172 ... 0.825 0.347 0.722 ... 0.193 0.874 0.533 ... ... 设计师 j 用户 i 分配 a 0 1 0 ... 1 0 0 ... 0 0 1 ... ... min i j a Σ Σ a ij m ij s.t. a ij = 1 i j Σ a ij { 0,1 } , i,j ... a ij < k j j i Σ P   (   correct_prediction   )   =  β  ex_cell +  α P   (   1 |  stylist   )   +  α P   (   1 |  client   ) A B log          =    α    +    Xβ    +    Zb    ,         ~  N (0, Σ)  p 1 - p { { 固定效应 随机效应 匹配得分依据 协同过滤 混合效应建模 卷积神经网络 基于需求说明的 NLP 如:潜在尺寸 S M L 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 prod ingestion API load_my_data(params…) run_my_algorithm(params..) deploy_to_production(params...) 余弦相似度 0.62 用户喜欢的“确定”图片 ... 向量描述 库存中的服装图片 ... 向量描述 17 42 35 86 59 17 42 35 86 59 激动地开始 穿衣搭配! 我马上就要 出席一个 美好的派对 啊!我的衣橱 快满了! 时间 事件 状态 1 状态 2 状态 3 状态 2 时间 需求 仓库 CA 仓库 TX 仓库 WI 仓库 PA 仓库 GA 仓库 补货 分配 清理 发货 退回 (1) 新样式开发库存管理 模型 xt ( x ,  u ,  w )   wherex = inventory levelsu = purchase, allocation and clearance      decisionsw = demand forecast total cost TC carrying cost h ordering cost K 订单数量 单件成本 TC* Q* Q*   demand h 1/2 ( ) 2.14 h/w 1.27 1.32 h/w 9.53 1.87 h/w 3.93 1.52 h/w 8.42 1.17 h/w 2.55 2.83 h/w 2.84 1.72 h/w 4.42 1.19 h/w 1.93 1.73 h/w 6.14 1.32 h/w 9.23 1.52 h/w 7.26 2.31 h/w 3.24 1.52 h/w 8.42 1.52 h/w 7.23 1.52 h/w 8.42 衣橱 仓库 初始种群 选择 推荐 突变 下一代种群

这里,我们仅仅是分享云至鼎科技研发团队的各种数据科学应用。可以肯定的是,我们很难将范围限制在上述几个场景中,我们还将开发更多的项目。然而,我们所谓的应用数据科学,在很长一段时间内都是作为一个多样化的微观经济理论体系存在的。由于缺乏数据和计算资源来实际应用这些概念,它们在教科书之外的使用中历来受到限制。目前,将这些概念局限于理论的最后堡垒是人和文化(众所周知,组织很难改变)。但是,云至鼎科技坚信,这样的障碍是可以突破的。也许我们所做的唯一特别的事情就是,通过独特的商业模式从我们的行业客户那里获取丰富的数据,然后营造一个可以使数据科学家成功的环境。从这里开始,好奇心、创造力和产生影响的愿望为将来铺平了道路。