There are two primary paradigms for the discovery of digital content. First is the search paradigm, in which the user is actively looking for specific content using search terms and filters (e.g., Google web search , Flickr image search , Yelp restaurant search , etc.). Second is a passive approach, in which the user browses content presented to them (e.g., NYTimes news , Flickr Explore , and Twitter trending topics ). Personalization benefits both approaches by providing relevant content that is tailored to users’ tastes (e.g., Google News , Netflix homepage , LinkedIn job search , etc.). We believe personalization can improve the user experience at Flickr by guiding both new as well as more experienced members as they explore photography. Today, we’re excited to bring you personalized group recommendations.
Flickr Groups are great for bringing people together around a common theme, be it a style of photography, camera, place, event, topic, or just some fun. Community members join for several reasons—to consume photos, to get feedback, to play games, to get more views, or to start a discussion about photos, cameras, life or the universe. We see value in connecting people with appropriate groups based on their interests. Hence, we decided to start the personalization journey by providing contextually relevant and personalized content that is tuned to each person’s unique taste.
Of course, in order to respect users’ privacy, group recommendations only consider public photos and public groups. Additionally, recommendations are private to the user. In other words, nobody else sees what is recommended to an individual.
In this post we describe how we are improving Flickr’s group recommendations. In particular, we describe how we are replacing a curated, non-personalized, static list of groups with a dynamic group recommendation engine that automatically generates new results based on user interactions to provide personalized recommendations unique to each person. The algorithms and backend systems we are building are broad and applicable to other scenarios, such as photo recommendations, contact recommendations, content discovery, etc.
Figure : Personalized group recommendations
One challenge of recommendations is determining a user’s interests. These interests could be user-specified, explicit preferences or could be inferred implicitly from their actions, supported by user feedback. For example:
Ask users what topics interest them
Ask users why they joined a particular group
Infer user tastes from groups they join, photos they like, and users they follow
Infer why users joined a particular group based on their activity, interactions, and dwell time
Get feedback on recommended items when users perform actions such as “Join” or “Follow” or click “Not interested”
Another challenge of recommendations is figuring out group characteristics. I.e.: what type of group is it? What interests does it serve? What brings Flickr members to this group? We can infer this by analyzing group members, photos posted to the group, discussions and amount of activity in the group.
Once we have figured out user preferences and group characteristics, recommendations essentially becomes a matchmaking process. At a high-level, we want to support 3 use cases:
Use Case # 1 : Given a group, return all groups that are “similar”
Use Case # 2 : Given a user, return a list of recommended groups
Use Case # 3 : Given a photo, return a list of groups that the photo could belong to
One approach to recommender systems is presenting similar content in the current context of actions. For example, Amazon’s “Customers who bought this item also bought” or LinkedIn’s “People also viewed.” Item-based collaborative filtering can be used for computing similar items.
Figure : Collaborative filtering in action
By Moshanin (Own work) [ CC BY-SA 3.0 ] from Wikipedia
Intuitively, two groups are similar if they have the same content or same set of users. We observed that users often post the same photo to multiple groups. So, to begin, we compute group similarity based on a photo’s presence in multiple groups.
Consider the following sample matrix M ( G i -> P j ) constructed from group photo pools, where 1 means a corresponding group ( G i ) contains an image, and empty (0) means a group does not contain the image.