I want to give users the ability to view some personalized users they might find interesting and might follow them…
I was thinking of it like that:
- Get all users he is currently following
- Get all followers that they follow
- rank them by total posts they made (DESC), filled up personal information fields
- show 5 of them on each page load
in case user has followers then an information message will appear…
Can this kind of feature be done with this algorithm or is there a better or even easier way to do it?
In your algorithm, I’m wondering why you need to sort users based on number of posts, maybe it has something to do with reputation?
Recommendation is indeed a very large, open topic, and is also a hot academic research fields. If we are working on a practical project, I think it will be nice to to stay simple and focused.
I witnessed the following two kinds of recommendations on a very popular
social website. From my experience, the recommendation output is of high quality. Here I’m brainstorming the algorithms behind. Hope it helps.
Discover persons you might know: Recommend person whose ‘following set’ intersects with your ‘following set’. It is based on the “clustering effect” of social network: The friend of your friend is more likely to be your friend.
Recommend person based on interests: If the users could be celebrities, companies, institutions, press media, etc., then recommendations like the following might be useful: “People following @Linus also follow @Stallman, @LinuxDeveloper, …”. Suppose you’ve just followed @Linus, to recommend @Stallman, @LinuxDeveloper, first we need to find out all users following @Linus, then figure out their common following list, possibly ranked by number of followers. The idea is to recommend users based on interest correlations. We calculate and discover high correlation users, assuming that users’ following list are grouped by their interests.
(I’m also thinking, algorithm 1 will discover persons that share common interests with you, if users could be celebrities, etc.. This might be preferred for some scenarios.)