SlideShare a Scribd company logo
Core of Personalization at Polyvore: Style Profile 
By Jiang Zhu & Jennifer Louie 
 
Over the past year, our engineering team has undertaken the task of creating a more 
personalized experience for our users. We already have an amazing community of 
designers, artists, and fashion enthusiasts who come to Polyvore to get inspired around 
shopping. However, we felt that with a little bit of machine learning we could help users 
discover and shop for even more products that they may not have found on their own. 
 
In this blog post we’ll walk through some of the ways we are using machine learning to 
understand our users individual style, which we call a Style Profile, to recommend more 
personalized products and outfits. 
 
What is a Style Profile? 
When we first started building each user’s Style Profile, we quickly realized how tricky 
quantifying fashion can be. It’s intangible, means different things for different people and 
even when most people might own the same black shirt, they might wear it in 
completely different ways. Luckily, Polyvore is uniquely positioned to understand 
personal style through our users rich interactions on Polyvore, including: 
● Global factors: occasions, trends, seasonality and other contextual information 
● Catalog data: rich and high­quality metadata of products from our retail partners 
● Product data: product likes and dislikes, collections of products, products 
viewed and search queries 
● Shopper behavioral data: impressions, likes, outbound clicks while they are 
interacting with products, sets and other curated content 
● Community data: Our global community has generated billions of data points 
that helps us understand the relationship between retail products. Every time a 
user creates a set, they are implying that those products go together and share 
the same style.  
 
From a technology standpoint, a user’s Style Profile can be represented with a vector in 
a high­dimensional space and the component for each dimension, indicating the 
strength of their preference in a particular aspect or a combination of multiple aspects in 
fashion. The following is a simplified representation of two users’ style profile on 
combinations of color, category, material and brand: 
 
 
Figure 1: Style Profiles 
 
● Style Space Definition: a high dimensional space where any point represents 
the style of a user or product that is subject to constraints that points with similar 
style should be closer to each other than those with different tastes. 
● Style Vector Definition: the coordinates in the Style Space denote the taste 
vector for that particular user or product. 
 
How do you generate a Style Profile? 
In order to generate a Style Profile for a user, we use a special balance of different 
factors: 
● Products: We look at all the products the user engages with. Every product has 
multiple data points such as category, brand, retailer, color, material and style.  
● Categories: We look at each category and store the frequency of each attribute 
value. Users have different preferences for different categories, for example, a 
user might love bright colored tops but only like dark black shoes. Color also has 
a limited number of values so we calculate the spread of frequencies to 
determine how strong the preference is for certain colors.  
● Dislikes: If a user consistently dislikes certain categories or products with certain 
attributes, we’ll be less likely to recommend these products. On the other hand, a 
user might have both positive and negative signals for the same attributes. In this 
case, we discount the positive signals for that attribute. An interesting challenge 
we’re still tackling is understanding exactly what those negative signals. Since 
style is so intangible, it’s hard to say whether the user disliked the material, color, 
brand or the price. 
 
Figure 2: Generating Style Profiles 
 
How Does Polyvore Use The Style Profile To Generate Personalized 
Recommendations? 
Now that we’ve built a Style Profile for each user, we use it to generate three separate 
recommendation streams which we call attribute­affinity streams, collaborative filtering 
streams and co­occurrence streams. For this blog post, we’ll share a bit about 
attribute­affinity streams. 
 
Attribute­affinity streams generates recommendations based on user’s preferences on 
certain attributes of products, such as brand, color and material. We calculate this 
similarity score between the user’s Style Profile and each candidate product we 
recommend.The score is a weighted sum of matching attributes. The weight of each 
attribute is determined by its value in the Style Profile. If the score is above a certain 
threshold, we will recommend the item. If a candidate product has attributes not in their 
Style Profile we try to guess the user’s preference for it. For example, we see that a 
user has not liked or disliked any pink T­shirts, but they have liked multiple black 
T­shirts; so pink T­shirts are given a low score. If the user has likes a lot of colors 
equally, then pink will receive an average color score.  
 
If the product category is missing from the Style Profile, we try to use the parent 
category profile. For example, before recommending a pair of brown boots, even if the 
user has never liked boots, we tap into her overall preference for shoes until we get 
more signal.  
 
With the combination of these three recommendation streams, we are able to create 
Style Profiles for every user, making it easier for them to discover and shop for the 
things they love. 
 
Stay tuned for the next post, when we will talk more about how we measure users’ 
engagement of these personalized streams and what insights we’ve discovered.  
 
 
 
 
 
 
 
 
 
 
 
REMOVE: 
● Collaborative­filtering streams: generates recommendations based on similar 
user’s preferences. For example, people who like this product also like certain 
group of other products so Polyvore can recommend those similar products.  
● Co­Occurrence streams: generates recommendations by leveraging Polyvore’s 
global community by looking at which products are frequently used in different 
styles of sets and collections.  
For collaborative filtering streams and co­occurrence streams, we use techniques, 
which we will cover in subsequent posts, to generate the candidate recommendations 
and then use Style profile to rerank the results.  

More Related Content

Core of Personalization at Polyvore: Style Profile