Hi all,
Recently I've been working on recommendations, specially related to social networks. One of my tasks is to investigate, create and analyze a recommendation engine capable of generating suggestions of friends, study groups, videos and related content to a registered user in a social network.
The social network that I am working on is called AtePassar, a brazilian social network for people who wants apply for positions at brazilian civil (government) services. One of the great features of this social network is because people can share their interests about studies and meet people all around Brazil with same interests or someone that will apply for the same exam as him. Can you imagine the possibilities ?
It is a social network for students into a virtual space where there are several relations of friendship, studies and even exam partners.
Since we believe in interaction between people and discovering of relevant content a real need for users inside a social network, specially finding tasted-like users which indicate the similarity of their needs and opinions, we decided to build a recommender system capable of recommending new users based on similar interests such as common friends, common videos both have watched or study groups where both have joined in, etc. We also have developed a study group recommender, which suggests relevant study groups based on the friends' study groups that they are participating and the active user is not. Finally, we also have developed a video recommender, providing suggestions for classes (on-line video classes) relevant for the users based on what his friends has already watched.
As you may have noticed that we focus on more in the collaborative filtering process, where we are more interested on finding similar users and bring unknown items closer to the active user's historical preferences as possible recommendations.
One of our priorities in this recommendation process is to always explain to the users the reason of the recommendation is presented to them. We believe it is really important for the user to know the relevance of the recommendation and even for us to improve the level of acceptance of the recommendation. If you receive a recommendation and that recommendation is joined with extra information that 4 friends of you also liked that item, it can be more meaningful than only receiving the recommendation without knowing the reasons.
Another priority for us is to provide recommendation to all users, even new users who has started using the AtePassar network and don't have sufficient information in his profile (friends, studygroups, etc) to bring relevant recommendation. I've developed a simple algorithm that it is a solution for this common problem in recommendations called 'cold start'. Cold Start happens specially for new users, where there is not enough user and item information and therefore it's hard for the recommendation system to produce recommendations. We decided to bring the most accepted recommendations from users in our social network (the most popular) and populate them as possible suggestions for new users. We know this is not the best solution, because it is not personalized, but it can bring recommendations out-of-the box in cases where we are newbies in the social network.
We are doing a poll to know from Atepassar users to know more about whether they are liking the suggestions our system is providing. More than 60% of the ones who have answered the poll said that they like most of suggestions provided. We are working harder to even improve this recommendation process bringing more content to be recommended and the utility by considering extra information in the user's profile.
Here a brief introduction (video) to the social recommender engine running at AtePassar Social Network.
In the next posts I will bring more information in a detailed view of development and explain more about recommender engines, the area I am working on also in my master thesis. I've been using also a open-source recommendation engine in this work, it is beginning but we are improving in small steps bringing new releases every month. Until now, our framework called Crab is only working for Collaborative-filtering recommendations (written in Python) and we are planning for the next releases bring Content-based ones and distributed algorithms using map-reduce features, etc.
If you want to take a look at our recommendation engine, please check it out here in this link (It is hosted in my personal GitHub repository). In a previous post in my blog I introduced the framework and I am planning to write a series of posts to deep into recommendation engines, explaining on how to use it, evaluations, etc.
I also wrote an introduction for recommendation engines if you're starting now in this machine learning field. You can check it out here.
I hope you enjoyed,
Marcel Caraciolo
AtePassar Social Network |
Since we believe in interaction between people and discovering of relevant content a real need for users inside a social network, specially finding tasted-like users which indicate the similarity of their needs and opinions, we decided to build a recommender system capable of recommending new users based on similar interests such as common friends, common videos both have watched or study groups where both have joined in, etc. We also have developed a study group recommender, which suggests relevant study groups based on the friends' study groups that they are participating and the active user is not. Finally, we also have developed a video recommender, providing suggestions for classes (on-line video classes) relevant for the users based on what his friends has already watched.
As you may have noticed that we focus on more in the collaborative filtering process, where we are more interested on finding similar users and bring unknown items closer to the active user's historical preferences as possible recommendations.
Recommendations SideBar |
One of our priorities in this recommendation process is to always explain to the users the reason of the recommendation is presented to them. We believe it is really important for the user to know the relevance of the recommendation and even for us to improve the level of acceptance of the recommendation. If you receive a recommendation and that recommendation is joined with extra information that 4 friends of you also liked that item, it can be more meaningful than only receiving the recommendation without knowing the reasons.
Another priority for us is to provide recommendation to all users, even new users who has started using the AtePassar network and don't have sufficient information in his profile (friends, studygroups, etc) to bring relevant recommendation. I've developed a simple algorithm that it is a solution for this common problem in recommendations called 'cold start'. Cold Start happens specially for new users, where there is not enough user and item information and therefore it's hard for the recommendation system to produce recommendations. We decided to bring the most accepted recommendations from users in our social network (the most popular) and populate them as possible suggestions for new users. We know this is not the best solution, because it is not personalized, but it can bring recommendations out-of-the box in cases where we are newbies in the social network.
We are doing a poll to know from Atepassar users to know more about whether they are liking the suggestions our system is providing. More than 60% of the ones who have answered the poll said that they like most of suggestions provided. We are working harder to even improve this recommendation process bringing more content to be recommended and the utility by considering extra information in the user's profile.
Here a brief introduction (video) to the social recommender engine running at AtePassar Social Network.
In the next posts I will bring more information in a detailed view of development and explain more about recommender engines, the area I am working on also in my master thesis. I've been using also a open-source recommendation engine in this work, it is beginning but we are improving in small steps bringing new releases every month. Until now, our framework called Crab is only working for Collaborative-filtering recommendations (written in Python) and we are planning for the next releases bring Content-based ones and distributed algorithms using map-reduce features, etc.
If you want to take a look at our recommendation engine, please check it out here in this link (It is hosted in my personal GitHub repository). In a previous post in my blog I introduced the framework and I am planning to write a series of posts to deep into recommendation engines, explaining on how to use it, evaluations, etc.
I also wrote an introduction for recommendation engines if you're starting now in this machine learning field. You can check it out here.
I hope you enjoyed,
Marcel Caraciolo