Imagine you just finished watching a great movie on Netflix, and immediately afterwards you receive the following recommendation for your next movie:
If you’re into old Chinese movies, then you’re in luck. But if not, you’ll probably be frustrated and turned off by this terrible recommendation.
This example shows how important the use of personalization is and how it impacts your users’ feelings and thoughts about your product.
Recommendation engines are a very effective way to personalize your product and are the core of every big content provider – from movies (Netflix) to social networks (Facebook, Twitter) to retailers (Amazon, EBay).
Our goal at Soluto is to help everyone enjoy their mobile device. Our product offers both technical support as well as a content database of articles and guides that teach users how to troubleshoot problems, use special features, and feel more empowered with their device. One way to achieve this is by sending these articles and guides to our users via notifications. This is our primary method of actively exposing users to our content.
Our team is responsible for how our content items get sent to users. We use KPIs (read more here: KPIs) to measure our team’s performance, e.g. number of active users in the past week.
First we had to define our KPIs:
- Open rate – % of content items opened from all notifications being sent
- Engagement score average – An engagement score is a numeric value that estimates how much a user was interested in a given content item (more on that in the next part). The engagement score average is the average of all engagement scores of items viewed by users.
- Uninstalls of our application
- Unsubscribes from notifications in our application
Brainstorming – how can we make an impact on our users
At first we had to think about which areas of our service can benefit from greater personalization in order to have more impact. Since notifications are our main tool, we divided those areas to the following:
- Frequency – how often do we send notifications? Some users might like receiving lots of tips so they can learn as much as possible. On the other hand, some users may have very little interest in what we have to offer.
- Timing – when to send a notification? Some users are more likely to open notifications in the morning, while others at night. Moreover, understanding when a user has some free time may improve the likelihood of them reading and enjoying the content.
- The content – what content item to send to a user via notification? We want to identify which content items within our database are most likely to be valuable for each particular user.
- The notification – Before a user sees the content item, they are exposed to the notification. We want to grab their attention in order to influence them to open the item and gain from the value it has to offer. There are different parameters we can play with when sending a notification:
- Text – some users might prefer more concise text while others might prefer a more detailed explanation of the content
- Image – some like them, some don’t. Also, different types of images are more tempting to some users than others
- Other components – such as an animated gif instead of an image, buttons in the notification and more (newer operating systems offers more options)
When we began, we had lots of different content items available. Our method of exposing those items to users was by randomly picking a content item and sending it to a user every 7 days, while making sure not to send a user the same item twice. The notification consisted of text only.
We try to be as lean as possible, so we decided to start with just one of the different areas where we can make impact. We chose to focus on value – i.e. identifying and sending content that was most valuable to each user. For that, we began working on our recommendation engine.
Getting started with recommendations
When starting our journey into the world of machine learning, we were somewhat familiar but had little experience in the field. For anyone interested in diving into machine learning, I highly recommend andrew ng Machine Learning course in Coursera. Another interesting (and high level) article on how Netflix addresses this issue can be found here The Netflix Recommender System.
After some reading, including visiting other companies in this field, we started working on our own recommendation engine.
The two main methods of recommendation are:
- Collaborative filtering – Focus is placed on the similarity between users. So, if user X likes content items c1, c2 and c3, and user Y likes c1 and c2, it’s most likely that user Y will also like content c3.
- Content based filtering – Focus is placed on the similarity between content items. We recommend Items similar to those that a user liked in the past.
These are just the basic ways for recommending content. There is also a hybrid method that combines these 2 methods. More information can be found here: recommender_system_wikipedia.
On the next part we’ll explain more on how we created our own recommendation engine, what we’ve learned so far, and what are our goals moving forward.
Writers of this blog: Amir Pupko and Bar Levy