I’ve recently found out about how facebook organized news feeds with his algorithm edge rank, thanks to this great YouTube video (in French). I know Facebook keeps secret some parts of the algorithm and I don’t understand its algorithm entirely, but, as an applied mathematician, I am appalled by how much the approach of the algorithm sucks.
My own experience as a user already made this fact obvious to me: My google chrome often suggests a translation of my facebook news feed page from Italian, Arabic or Thai! Facebook, can’t you know I don’t speak any of these languages? I never press the like button of these messages, nor do I comment them? More straightforwardly, I even tell you what languages I speak in my facebook profile!
Now, how does the current edge rank work? In short, for each comment or like, the score of a post is added a product of the affinity between the commenter and the viewer, the kind of content of the post/comment/like and the recentness of the comment. This sounds pretty much like how I talk Spanish: let’s try some words and, hopefully, people will guess what I mean… It might work, but it’s not good!
So, how would an applied mathematician tackle the problem of organizing the news feed? That’s the interesting question! Well, there are plenty of different ways. Let me tell you how I would approach this problem.
First, to compare algorithms between each other, a measure of the quality of a news feed must be defined. And, fortunately, facebook already has what it takes to do so! Yes, I’m talking of this awesome like button, and there’s also the comment section. If there are images, videos or links, the quality of the news feed can also be measured by the number of clicks made by the user. I let your imagination work out the details…
What I’m talking about here is the definition of an objective function, which is the essential first step in optimization, as you can read it in my Science4All article on linear programming.
Second, let’s get to the algorithm itself. A basic approach would be based on machine learning. You can analyze the actions of the users on past posts to classify these posts into the ones the users liked, and those he didn’t like. Now involve a bunch of parameters which could explain that, such as, the content of the post, its language, a few keywords, its date, its number of likes, the authors of the likes, its comments… and insert that into a machine learning algorithm, and you’d get a much better ranking of the posts! The parameters can then even be adjusted by studying how they affects the objective function!
Find out more in my Science4All article on probabilistic algorithms!
Now, what I’m proposing here is the very basic approach. There are plenty of ways to do much much better! But facebook isn’t even doing that…
On a side note, Google Plus is so much more awesome with its news feed! If facebook doesn’t react, I wouldn’t be surprised to see Google outrunning facebook in the long run. On another side note, the friend suggesting algorithms of these websites also seem to really suck. I can’t understand why LinkedIn suggests people I have 1 or 2 relations in common, while there are still so many people out there with whom I share over 30 relations…