One of the reasons I created Go2.me was as a test platform for a new social scoring algorithm I've developed called "Time-Score". You'll note that Go2.me calculates the most popular links on the site and updates it real-time.
Each time a user interacts with content on Go2.me, the site accumulates points as follows:
- Sharing a Link - 2 points.
- Favoriting an Link - 2 points.
- Commenting on a Link - 7 points.
- Viewing a Link - 1 point.
By time-weighting the scores, actions taken today are twice as valuable as actions taken yesterday (we say the "half-life" of a link-score is 1 day). So, if 100 people visit a link today, it will rise to the top of the popular list (with over 100 points). By the same time tomorrow, the score will have decayed to just over 50 points if no further people visit the link. Each day, it will be cut in half, so that after a week, it will effectively have less than 1 point, and more recently active links will rise to the top of the popularity list.
This ensures that the most popular links have to continually get the attention of the Go2.me audience to stay at the top. This scoring algorithm also applies to every tag applied to Go2.me links. For example, the most popular videos are shown using the same scoring algorithm.
I'm applying for a patent for this algorithm now, as I think it has several advantages over other scoring algorithms that I've seen or implemented in the past:
- Real-time updates - Scores are instantaneously updated and can be compared against all other scoring values in the database.
- No Batch Processing - The scoring decay function (half-life) does not require any batch processing of older scores to normalize them for subsequent days.
- Combines scoring events at distinct times - There is a well defined relation to combine scores at different times, based on the characteristic half-life of the score.
Since most sites don't publish how they do popularity ranking, I can't be sure if my algorithm is unique. Blog posts about Reddit's algorithm indicate some similarity - but they lack a mechanism to combine scoring events at different times (they calculate all events as if they occurred at the time the post was first submitted).
The code for the Time-Score algorithm is quite simple. I have granted a royalty-free license for all non-commercial users. If you're interested in licensing this technology for your commercial application, please contact me at firstname.lastname@example.org.