User login

Blogs

For almost a year, Sugestio has been generating personal recommendations for the users of Pianofiles, an online community where users can share their music scores. Users receive suggestions for new songs based on their personal collection of music sheets on the website. To make this process of discovering new music even more attractive for the users, the personal recommendations are now enriched with a video. In this video, the recommended song is played on a piano. This gives users the opportunity to listen to the song and evaluate the recommendations before they add the score to their wishlist.

In a previous blog post, we discussed multiple approaches to recommending cultural events. The results from our experiment will be put to use in the near future. Most cultural venues, big or small, have some kind of online presence to advertise upcoming events. Currently, only the biggest venues are able to create engaging online communities for their visitors. User profiles are thus scattered across multiple databases and smaller players have little information on their visitors. Together with CultuurNet Vlaanderen and LodgON, Sugestio is working on a user-managed, centralized profile for the entire cultural sector in Flanders. The CultureFeed project will provide a single sign-on process and privacy-friendly profile management to make it easier for cultural venues to offer a personalized experience to first-time or infrequent visitors. Through easy to use widgets and CMS modules, CultureFeed can be integrated into their websites or mobile applications.

Sugestio is conducting an experiment regarding cultural event recommendations in collaboration with CultuurNet Vlaanderen. Everyone that has an account on the website is able to participate. Users that click the Like or Share button at least fifteen times over the course of one month, will receive a personalized set of events that fit their taste. They then have the opportunity to fill out a survey that includes questions on satisfaction, item diversity and surprise effect. Users are randomly divided into groups, with each group receiving recommendations from one particular algorithm. The set of algorithms includes collaborative filtering, content-based techniques and combinations thereof. The results of the experiment will help us choose the most appropriate algorithm for this type of setting.

Established algorithms like Collaborative Filtering recommend content based on the behavior data of all your users. This way, updating the recommendations for a single user requires too much time and processing power to keep up with their current actions. The easy solution is to update recommendations periodically for all users, but this leaves them lagging way behind. Now, the latest version of our API can recommend content to your users based on their most recent activity. To use this new feature, add the parameter *engine=instant* to your API calls:

GET /sites/{account}/users/{userid}/recommendations.xml?engine=instant

While this technique may be somewhat less accurate, recommendations do update in near real time. Combining these instant recommendations with periodically calculated ones gives you the best of both worlds.

Applications that want to use the recommendation service have a unique account key and a secret key associated with them. This website allows you to create one or more key pairs. Register here to try Sugestio free for thirty days.

After logging in, go to My Projects and click on "more details" to get some basic account information. We also keep a log of your service calls. We log requests that return either 202, 400 or 404 HTTP response codes. This way, you can check if all the data made it through okay, and you can review information on failed requests.

For free Developer accounts, we offer both personal recommendations and similar item recommendations based on standard collaborative filtering techniques. This algorithm requires only user behaviour (rating data) as input, so it is not really necessary to submit metadata about items or users. (but you may certainly do so, if your application involves rich content!)

While your developer account is active, our server will periodically update your recommendations based on the latest consumption data. Collaborative Filtering looks for users that exhibit similar behaviour, and recommends items that the user has not yet discovered. Let's assume that you have submitted the following five star ratings:

User A, item 1: 4 stars

User A, item 2: 5 stars

User A, item 3: 5 stars

User B, item 2: 4 stars

User B, item 3: 4 stars

User B, item 4: 5 stars

Users A and B are quite similar, having both given positive ratings to items 2 and 3. User A also liked item 1, which user B has not yet discovered. The next time recommendations are generated, user B will get item 1 in his list of recommended content. User A will get item 4 in theirs.

Sugestio has extensive procedures for selecting the most appropriate algorithm for each customer. During an offline evaluation phase, we examine historical consumption behavior, like purchase history or clicking behavior. If items have metadata such as tags or categories associated with them, we try to determine if this information can be used in the recommendation process.

Evaluation procedure

Consumption data is first sorted by timestamp. This ordered dataset is then split into a training set and a test set by selecting a time boundary. Records with a timestamp older than the time boundary are part of the training set. The test set consists of all consumption data with a timestamp after the time boundary. Subsequently, each recommendation algorithm has to predict the user behavior in the test set, based on the training set as input information. The generated suggestions are then evaluated based on commonly used metrics like precision, recall, F1 and root mean square error (RMSE). Finally, we compare the performance of the different algorithms and select the optimal solution.

Cold start problems

New websites or applications don’t have a lot of historical data to work with, leading to unreliable results when applying this standard evaluation procedure. The Sugestio team has a background in recommendation research and has worked with publicly available datasets such as Netflix, Movielens, Jester and Bookcrossing. From our experience with these datasets and from projected user behavior, we can make an educated guess as to which algorithms will perform well. When sufficient data has been collected, the standard evaluation procedures can be applied.

In recent years, a variety of techniques have been proposed for calculating personal recommendations, including collaborative filtering, content-based methods and knowledge-based techniques. To improve performance, these algorithms can be combined in hybrid recommenders. The Sugestio team is also doing research on various hybrid recommendation techniques. Here, we provide a brief overview of the state of the art.

A merging solution is a simple technique that combines the recommendations of multiple recommenders. Top-N recommendation lists of the various algorithms are joined to create a new list consisting of a mix of these suggestions. A more intelligent way to combine the recommendations of different algorithms is by using a weighting scheme. These weighting solutions combine the scores of several recommender systems into a final recommendation score based on weights expressing the confidence in the various algorithms. These algorithm weights may be altered during operation to fine-tune the hybrid recommender. Instead of combining the recommendations, switching solutions select the best recommendation algorithm depending on the available data. This hybrid recommender might select a content-based algorithm for sparse profile data and switch to a collaborative filter when more data becomes available. Cascade solutions consist of multiple algorithms refining each other. This technique could be applied to restaurant recommendations: a collaborative filtering algorithm determines the best restaurants according to the personal profile of the end-user. Next, a knowledge-based filter eliminates irrelevant restaurants based on the kitchen type, geographical location, price range, etc.

Getting started with Sugestio is easy with our developer libraries. We currently have implementations in PHP, Java, .NET (C#) and Python. Because we use OAuth to secure our recommendation service, our libraries can leverage established open source projects such as oauth-php or Simplegeo's python-oauth2. This keeps development short and simple. Our Python client is under 100 lines of code!

Sugestio libraries are available under the permissive MIT license. Keep track of new releases by following us on GitHub.

Delivering a personalized experience to your website visitor or application user is quickly becoming all-important. At the same time, users are becoming more mobile, consuming more services while on the move. Cultural events and recreation are just two domains where location-awareness can create enormous added value. The latest version of our API lets webmasters and developers bring Location into play by letting them narrow down personal recommendations and similar items to a specific geographic region. The area of interest is defined by three parameters:

Latitude and longitude - recommendations must be near these decimal degree coordinates.

Radius - recommendations must be within this radius of the given coordinates.

Unit - unit of the radius, e.g., miles or kilometers.

Offering location-based recommendations is easy with our developer libraries. Do you have a website or mobile application that would benefit from location-based recommendations? Find out how to get started with Sugestio!