This article was written by Clinton Regan and originally appeared on the Alteryx Data Science Blog here: https://community.alteryx.com/t5/Data-Science/Building-a-Recommendation-Engine-with-Alteryx-Python/ba-p/800204
Imagine you serve content to your customers and want to move from a static set of suggestions to a more personalized selection of options. Our Community site wanted to do exactly this, and with a bit of data science plus Alteryx Designer, we built a solution in under 30 days.
Our Community website contains mountains of great content created by Alteryx as well as by users. There’s something for everyone, but finding that something can be challenging. A personalization system that recommends content based on similar visitors’ patterns of interests and behavior could highlight the content that best suits a visitor’s needs.
We decided to implement the well known PageRank algorithm to analyze the pattern of articles our users navigate. Using anonymized historical data of page views, the network of behavior — in other words, how visitors typically move among various content items — can be quantified. The algorithm then compares an individual’s navigation behaviors to these patterns to recommend paths based on what other visitors choose and find useful.
To better anticipate each user’s behavior, we created personas that represent typical patterns of navigation among content items in the Community. These personas, when matched as closely as possible to an individual Community user’s activity, ensure that the user sees the most relevant recommendations based on the patterns of other users in the same persona.
We created this analysis in an Alteryx workflow, meaning it takes just a click to schedule the workflow to run and update recommendations on a daily basis. This easy automation ensures our recommendations stay current and incorporate the latest content.
Note that although this recommendation system was created in Designer’s Python Tool using the NetworkX library, there is also a Network Analysis Tool in Designer that could be used in your own recommendation generation project.
From a Quick Test (Beta) to Full Production
We tested the concept on a limited basis within a newly launched, personalized year-end summary of each user’s key statistics for Community activity during the prior year. In addition, the summary included recommendations for content items that might be of interest based on similar users’ activity during the same period.
We validated whether users visited the content items outlined by their specific recommendations and then used the results to assess and fine-tune the recommendation engine. Excitingly, we found that many users utilize the recommendations provided to explore areas and topics in Community that they don't normally visit. By tuning the personalization vector in the PageRank algorithm, we struck a balance between recommendations for new and familiar types of articles that optimizes users’ overall engagement with the widget.
Incorporating User Feedback
We launched the recommendation widget on the Community home page in March 2021 and invited feedback on it. A few users observed that they received recommendations for older, potentially outdated content. This issue is a known problem with PageRank. It prioritizes pieces of content based on total number of user visits (i.e., it is “excessively biased towards old nodes”). Naturally, older content has likely been visited more often than newer content. We made an adjustment to the algorithm to ensure users would be recommended fresher content, despite its potentially lower number of visits.
We also plan to add a thumbs up/down feature that will let visitors say whether a specific recommendation was good or not. That additional data will help us understand which recommendations are useful and help us better highlight relevant content based on a user’s persona.
For Your Consideration
We’re excited to share this content – and hope our recommendation engine has placed it at the top of your reading list. Are you helping your customers find the right content with personalized recommendations? How have you fine-tuned your recommendations? We’re proud of how rapidly we were able to develop and release this new tool for our Community.