Return to site

Stitch Fix Algorithms Tour

──这家卖衣服公司如果被算法驱动的

· 数据驱动,大数据,机器学习,案例学习

2018年12月, 一位Stitch Fix的数据科学家来到我司做了一次分享,受到他的影响,决定进一步窥探机器与算法在这家公司做了哪些事情。

在分享过程中他也提到了公司开放资料中也包括一些有意思的内容, 于是就有这篇文章。

Stitch Fix

https://algorithms-tour.stitchfix.com 这个地址是Stitch Fix官方网站提供算法概览图

在Stitch Fix, 我们致力于改变用户发现自己真正喜欢的衣服的方式。

---- 定位于 matchmaker, 每一位顾客的styles 便是Stitch Fix最为关注的。  

 

你有你的Style么?

不止是推荐

在L先生没有到来之前, 我会以为他是一位从事推荐算法的数据科学家 -- 因为按国内电商企业的架构, 对于卖衣服这件事来说,你只需要提供「大推荐」系统:

  • 一个优质的人-物(猜你喜欢列表)
  • 一个物物关联的商品关联列表(商品相似度计算或购物车分析)
  • 不断更新的新用户冷启动系统
  • 流失老用户的召回机制
 
但意外的是这家公司在此以外,还有更多更多的业务都是一些各专业的博士,却拥有相同的title - data scientist 。 他们在做着各种靠数据去推动解决的事情: 仓库库存管理,过季商品倾销,计算机图像识别,NLP语义分析(用户邮件反馈),频繁频繁的A/B Test……
 

在L先生没有到来之前, 我会以为他是一位从事推荐算法的数据科学家 -- 因为按国内电商企业的架构, 对于卖衣服这件事来说,你只需要提供「大推荐」系统:

  • 一个优质的人-物(猜你喜欢列表)
  • 一个物物关联的商品关联列表(商品相似度计算或购物车分析)
  • 不断更新的新用户冷启动系统
  • 流失老用户的召回机制
但意外的是这家公司在此以外,还有更多更多的业务都是一些各专业的博士,却拥有相同的title - data scientist 。 他们在做着各种靠数据去推动解决的事情: 仓库库存管理,过季商品倾销,计算机图像识别,NLP语义分析(用户邮件反馈),频繁频繁的A/B Test……
人与衣服的推荐过程

新用户在注册时要提供一些个人的profile信息,以便搭配师和算法更好的“工作”, 以我为例:

在注册时提供 name + zip code后 , 第二步是选择用户群: 男性成人,女性成人,孩童; 其中男性的size范围是: sizes XS-3XL, waists 24-48” & inseams 28-36”

身高

体重

生日(年龄+生日push)

职业

通程方式

是否为人父母

上下衣 的尺寸及感受

腰围肩宽的尺寸及感受

平时的穿衣风格(喜欢贴身还是宽松 casual)

平时的穿衣风格(短裤喜欢在膝盖以上 以下 etc)

 

.. .. ..

 

基本上要五分钟的一个问卷调查后, 你的个人信息就被收集了。

 

下图: 你如何看待自己的身材: SLIM (瘦子) | AVERAGE (中等) |ATHLETIC(运动员)| HUSKY (粗壮 胖子的好听版)

个人信息的第二部分是邮寄的信息, 填写自己收box的偏好。

为了调整在选择warehouse, 给不同仓库打上不同等级的score。 这一步下面叫做:

Warehouse Assignment

不同的仓库配送中心到某一客户的效力都能用这样一个函数描述:

其中参数列表包括配送成本, 时间, 匹配程度。

有了该cost function, 就能得到一个 user- warehouse 的 cost matrix。 选择最优的方案就变成了一个二次型问题。

选衣搭配

1. filter and cut

系统会维护一个全局的库存清单(inventory list),根据每个用户的profile, 初始会先进行一步 筛选 ──对于用户明确表达自己不会喜欢的风格和尺寸进行裁剪.

2. calculate the match score

这里也是推荐系统中最复杂的计算部分, Stitch Fix也尝试了很多种不同的思路, 在网页中只展示了一些细节:

This is a difficult problem, and we approach it in many different ways—only a few of which we’ll discuss here. But in general, note that we tag each item multiple times with match scores from different algorithms, and then rank them.​

提到推荐, 自然会想到 CF(collaborative filtering) problem: 给定用户对不同风格的偏好后, 我们要完成一个稀疏矩阵的生成工作, 该矩阵的每项是某类style与用户的匹配分数。

在Stitch Fix 也没有例外, 用到了标准CF算法: 根据你喜欢的style也可能会喜欢另外一些相似style的衣装。但也有所区别: SF拥有大量的用户穿衣偏好的精确描述数据(来自用户的profile填写), 以及通过其它的数据来源来对用户的隐性特征进行推断。

(例如说 用户在自己的反馈中表达穿M号的, 但实际上可能是介于M-L的区间(动态变化的)。

一些其它的数据源 ── 用户的邮件反馈信息, 平台留言信息, 用户的关联社交App中发布的与衣服相关(SF授权可获取)的图片信息 ... 因此除了上面提到的CF算法外, 还会使用图像识别技术、NLP语义处理技术(如LDA), etc

3.matchmaking

算法在这一过程中生成了每一位用户可能会喜欢的衣服列表(上衣list + 裤/裙list + ...), 然后接下来是由搭配师挑选。 搭配师根据自己对客户的"美学偏见",给客户选择好五件衣服,打包进一个box邮寄。

除了衣服之外, 搭配师还会写一个「心情寄语」, 如希望你在下个月的婚礼上大放异彩!

以传统的推荐流程来看, 当package被寄出去就结束了, 不过在SF, 这只是第一步。

Try-on and feedback

客户在收到box后, "我们"建议他/她能够主动给我们一份反馈信息: 将不满的衣服邮寄回来, 写下退回的原因 ── 这不仅帮助"我们"改进对其的下一次搭配,同时也会帮助我们改进搭配逻辑的整体效果。

To recap the process of filling a single shipment request: a client creates a Style Profile and requests a shipment, we match them to a warehouse, our styling algorithms and human stylists work together to select styles, the stylist writes a note, we deliver the shipment, and the client keeps what they like, returns the rest, and provides us with feedback.​

"我们"还必须保证库存列表的丰富性 ──通过买手购买品牌商品和SF设计师的自主设计制造, 自然也是根据用户群体数据而进行的决策。

供应链路管理: 需要考虑用户的需求和库存关系。

State Machines

SF在描述用户某一时刻的需求满足状态:

  • TA是一位新来到SF的用户吗?   0/1
  • TA是主动来的, 还是有朋友的推荐?   category:  share_from
  • TA的衣服存量是否接近饱和?
  • TA是否要为了一次演出或仪式而作准备?或者仅仅是换一批新衣服?
为了更好的服务用户,我们会记录用户收/退的每一件商品、每一次用户主动或被动与SF的信息沟通,包括不限反馈信息,邀请信息,邮件信息,etc。
 
在收集了大量用户的状态信息后, 利用Markov Chain模型来学习 system-level effects.

Data Platform team

数据平台团队提供了数据计算平台和保持基础架构稳定。

SF的data scientist的分析,模型都是在平台团队开发的SaaS产品上运行的, 例如:

数据分布、并行化、自动规一化,etc。

This allows the data scientists to focus mostly on the science aspect yet still enjoy the benefits of a scalable system. And, the data platform engineers focusing on building… well, platforms. That is, they are not burdened with business logic and requirements for which they don’t have the context. That is the job of the full-stack data scientists. At its heart is the idea that "Engineers Shouldn't Write ETL." Our Data Platform team enables data scientists to carry algorithm development all the way from concept to production.​

staticor's 结束语

我过去的工作经历来说, ETL是占据了50%以上的工作时间, 余下的时间里被各种各样的数据请求所需要。

 

我没有太多的抱怨, 坚持着为人民服务的态度而走到今天。

我过去的工作经历来说, ETL是占据了50%以上的工作时间, 余下的时间里被各种各样的数据请求所需要。

 

next step:

 

algo-tour只是对算法兴趣的起源, 接下来, 我还会阅读更多吸收更多, 分享更多。

 

 

All Posts
×

Almost done…

We just sent you an email. Please click the link in the email to confirm your subscription!

OKSubscriptions powered by Strikingly