Online Recommendation Systems: Getting Personal with Gremthon - Part 2

By Denise Gosnell, PhD,

In Part One of the Recommendation System Blog series, we looked at the underpinnings of an online retailer’s recommendation system using a graph database in addition to an online recommendation system of movie titles. Our visualizations however, only introduced three actors into the system; how might the problem change if we had thousands or millions of other data points to consider? And how does this system have the potential to connect you with better healthcare? In this post, we will explore how to use graph traversals and ranking algorithms to provide more complex product, or in our case healthcare provider recommendations.

Let us revisit a similar example as before, but this time, let’s look at recommendations from a healthcare system standpoint.


Rank by Most Views: GroupCount()

In this example, we want to rank providers by how many people who are similar to you, viewed the same provider you are viewing. One of the most basic ways to quickly calculate a recommendation of providers within this type of system is to do a quick group count on the set of providers who were viewed by people like you (we’ll get to how we can do that later).

In the image above, we take a set of people (shown on the left as vertices of a graph) and look at the entire set of doctors they have viewed. In this system, GroupCount() sorts the providers according to who was viewed the most. “Dr. E” is the highest recommended provider as he was viewed by 5 separate people in the system, while “Dr. B” is the least recommended provider as he was viewed by only one.

At PokitDok, we use Gremthon, a Python implementation of gremlin, to perform graph traversals. Gremthon was created by PokitDok’s Engineer #1, Brian Corbin; you can check out Gremthon on GitHub:

The Gremthon traversal to apply a group count on the providers viewed by consumers who also viewed a certain doctor would be:

What about this notion of finding people “like you”?

While there is a whole field of mathematics which examines different ways to rank the above list, let us look at applying filters for improved personal recommendations. First, the input set into this ranking system, shown in the animated gif at the top of this page, was selected according to the one doctor that you viewed and all other consumers who also viewed that doctor. If you’re willing and opt in, we can easily provide a much more personalized recommendation with a few more pieces of information, like your gender and age. Then, once you view a doctor, we can provide a more personal recommendation which ranks the doctors according to those viewed by people with similar age and gender:

With Gremthon, the graph traversal which provides recommendations from people who are either 5 years older or younger than you would be:

We can also apply filters in other areas of this traversal. For example we can apply a filter to only recommend providers that match in specialty with the provider you first viewed. When we, as patients, look for personalized health recommendations, we prefer to visit doctors who have been seen by people we know. Right now, the only way to do this is to ask around or post to social media for recommendations from friends and family. With this technology however, PokitDok, like the movie recommendation system from our last post, has the ability to recommend doctors to you based on the doctors your social media friends have previously visited (if they’re willing of course). The recommendation now looks like this:

Now, because we are HIPAA compliant, we’ll never tell you which friends went to which doctor (and we won’t know either). What we can do is give you provider recommendations based on the doctors visited by your online friend group at large. Now, you can hold off on that Facebook post for a general practitioner for that rash of yours…and instead find a recommendation based on your trusted digital network of ‘people like you’. We can give you the personalized recommendation you need... and save you some embarrassment.

About Denise Gosnell, PhD

Dr. Gosnell, a driving member of the PokitDok Data Science team since 2014, has brought her research in applied graph theory to help architect the graph database while also serving as an analytics thought leader. Her work with the Data Science team aims to extract insight from the trenches of hidden data in healthcare and build products to bring the industry into the 21st century. She also helps organize the local chapter of Charleston Data Analytics, a Meetup PokitDok now sponsors, and has represented PokitDok's Data Science Team at numerous conferences including, PyData, KDD (Knowledge Discovery & Data Mining) and the inaugural GraphDay.

Prior to PokitPok, she earned her Ph.D. in Computer Science from the University of Tennessee - where she founded a branch of Sheryl Sandberg's Lean In Circle. The goal of this impressive organization is to guide women interested in computer science careers, as TechCrunch noted, and Denise has done that and more.

View All Posts
The opinions expressed in this blog are of the authors and not of PokitDok's. The posts on this blog are for information only, and are not intended to substitute for a doctor-patient or other healthcare professional-patient relationship nor do they constitute medical or healthcare advice.

  Tags: Dev, Enterprise

Be the first to write a comment.

Your feedback