How and why Stitch Fix incorporates human intent into recommendations.
Presented at PyData London 2019 (https://pydata.org/london2019/schedule/presentation/32/).
2. Womens, Mens, Kids
Plus, Maternity, Petite, Big&Tall
US, and now UK!
Personal styling for everybody
Keep what you love,
send back the rest
3. Personal styling for everybody
Art + science = personalization
recommenders
100+ on Algorithms
(not just recommenders—also
demand forecasting, warehouse
layout, experimentation, etc)
Recommender = algo results that
guide human decisions
6. Me A friend
I’m in the market for a new backpack,
what should I get?
Hmm, well what are you looking for?
I love my old messenger bag, but I want a
regular backpack this time.
What do you like about your current bag?
I like that it’s waterproof, has good
pockets, fits a 15” laptop, and has lasted
for years. It looks unique too :)
Why get a new bag then?
Well it fits pretty well, but I want
something that fits even better. And it
would be fun to try a new brand.
Cool, I think you’d like this one!
General
Specific
Specific
Implicit
Explicit
7. Activity on your site
Activity on other sites
Inferences you’ve made
about them
Amazon https://pdfs.semanticscholar.org/0f06/d328f6deb44e5e67408e0c16a8c7356330d1.pdf
Implicit Explicit
GeneralSpecific
Collaborative filtering
(a la Amazon)
1 0 ... 1
1 1 ... 0
... ... ... ...
0 1 ... 1
...
...
“People who bought this
also bought…”
8. Activity on your site
Activity on other sites
Inferences you’ve made
about them
Implicit Explicit
GeneralSpecific
”20 years and [Amazon] still thinks I need
more than one vacuum.”
https://news.ycombinator.com/item?id=14705752
Problem:
Preferences change over time
Collaborative filtering
(a la Amazon)
9. Activity on your site
Activity on other sites
Inferences you’ve made
about them
Ratings
“Did you want this”
Profile questions
Implicit Explicit
GeneralSpecific
Content-based
(a la OKCupid)
OKCupid https://help.okcupid.com/article/128-how-is-match-calculated
“You’re a match!”
Preppy? Goth?
Likes/is
green?
1 1 1
1 0 1
0 0 0
10. Activity on your site
Activity on other sites
Inferences you’ve made
about them
Ratings
“Did you want this”
Profile questions
Implicit Explicit
GeneralSpecific
Problem:
Preferences may be incompatible
Content-based
(a la OKCupid)
Preppy? Goth?
Likes/is
green?
1 1 1
1 0 1
0 0 0
11. Activity on your site
Activity on other sites
Inferences you’ve made
about them
Ratings
“Did you want this”
Profile questions
Location
Time
Implicit Explicit
GeneralSpecific
Context-aware CF
(a la Netflix, Spotify)
Recommender Systems Handbook (2011) http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.423.4220&rep=rep1&type=pdf
Mobasher (KDD 2014) https://www.kdd.org/kdd2014/tutorials/KDD-%20The%20RecommenderProblemRevisited-Part2.pdf
Netflix https://help.netflix.com/en/node/100639
“People who bought this in your
situation also bought…”
1 0 ... 1 US Jan
1 1 ... 0 UK Jul
... ... ... ... ... ...
0 1 ... 1 US Sep
...
...
12. Activity on your site
Activity on other sites
Inferences you’ve made
about them
Ratings
“Did you want this”
Profile questions
Location
Time
Implicit Explicit
GeneralSpecific
Problem:
“People like you” are boring
Context-aware CF
(a la Netflix, Spotify)
“The more vanilla the release, the better
it works for Spotify. If it’s challenging
music? Nah.”
https://thebaffler.com/salvos/the-problem-with-
muzak-pelly
13. Activity on your site
Activity on other sites
Inferences you’ve made
about them
Ratings
“Did you want this”
Profile questions
Location
Time
Search terms
Config params
NLP
Selecting filters/tags
Implicit Explicit
GeneralSpecific
Solution:
Just ask!
Intent-driven
(via request note)
“I loved the distressed jeans in the last fix!
This time I’d like an upscale outfit for my
cousin’s wedding.”
14. Intent-driven
“I loved the distressed jeans in the last fix!
This time I’d like an upscale outfit for my
cousin’s wedding.”
Use with classic recommenders
or other algos
Allows “growth mindset”
for your model of user
Enables stylist + algo to
make good decisions on
behalf of client
Smarter explore-exploit
17. 17
Back-endFront-end Data
Filter to category:
Shirts
View recs
API
Filters
For each item
Predicted performance
Predicted demand
Dimensions (fit, color, etc)
Predictions
Architecture: before
Filtered
preds
++
+
-
+++
--
18. 18
Back-endFront-end Data
Filter to category:
Shirts
View recs
API
Filters
For each item
Predicted performance
Predicted demand
Dimensions (fit, color, etc)
Predictions
Challenge: wrong problem?
Filtered
preds
++
+
-
+++
--
19. 19
Does this meet our
revenue and margin
objectives?
Can we sell through what
we’re stocking without
missing opportunity?
Welcome to the present, we’re running a real business
Is there the right diversity
across price points,
aesthetics, fits, etc?
Is it seasonally relevant for
next season?
20. 20
Reframing: Constrained optimization
Jeff Schecter's Multithreaded blog post
Choose merch to
stock
our decision
Maximize predicted
performance
what we care about
(objective function)
in order
to
Receipts cover a
breadth of merch
and clients
Financial targets
are achieved
Supply is matched
to demand
while
ensuring
constraints
21. 21
Back-endFront-end Data
Target margin?
Target % blue?
Target % slim-fit?
$xx
yy%
zz%
Get recs
API
User
intent
Solver
engine
Optimizer
constraints
Optimal
solution
Q2 performance ++
Margin on target
Great for all body types
Intent-
driven
recs
For each item
Predicted performance
Predicted demand
Dimensions (fit, color, etc)
Preds
Architecture: after
22. 22
Back-endFront-end Data
Target margin?
Target % blue?
Target % slim-fit?
$xx
yy%
zz%
Get recs
API
Solver
engine
Q2 performance ++
Margin on target
Great for all body types
Challenge: speed
For each item
Predicted performance
Predicted demand
Dimensions (fit, color, etc)
Batch ETLs for
model training,
offline prediction
This might be slow, so
rest should be fast
23. 23
Back-endFront-end Data
Target margin?
Target % blue?
Target % slim-fit?
$xx
yy%
zz%
Get recs
API
Solver
engine
Q2 performance ++
Margin on target
Great for all body types
Challenge: UX
For each item
Predicted performance
Predicted demand
Dimensions (fit, color, etc)
Help user encode intent
Build trust that recs
satisfy intent
Encourage iteration
to refine intent
24. 24
Back-endFront-end Data
API
Parallel: Maps
Graph nodes and edges
Predicted travel times
User settings/prefs
start
destination
Get route
Routing
engine
Best route
Batch ETLs for
model training,
offline prediction
User
intent
Optimizer
constraints
Preds
Optimal
solution
Intent-
driven
recs
Iteration
25. Intent-driven algos
enable DS to
separate prediction task
from recommendation task
App
Rec
engine
Batch
preds
modular and composable
algos, teams, etc
Batch
preds
Batch
preds
Batch
preds
Rec
engine
App
App
26. Intent-driven algos
require DS to
process user input during
online computation
use task queues (eg celery),
sanitize input,
handle novel data
App
Rec
engine
Batch
preds
Batch
preds
Batch
preds
Batch
preds
Rec
engine
App
App
27. Intent-driven algos
enable users to
ask different questions and
get different answers
Intent
iterative, conversation-like Recs
AlgosUser
28. Intent-driven algos
require users to
understand how to have a
conversation with algos
Intent
support structured thinking,
connect recs to intent
Recs
AlgosUser
29. Preferences change over time
Preferences may be incompatible
Why classical
recommenders fail
Intent-driven algos
Collect specific as well as
general preferences
Enable many outcomes for
the same user
Algos guide user behavior
Users guide algo behavior
(human in the loop)