Search code examples
machine-learningmahoutrecommendation-enginecollaborative-filtering

collaborative filtering approach for tips/recommendations related to registered courses


I am looking at a specific problem where I need to build a recommender. The generalized problem is as follows, Each user has registered for (say) x courses (c1, c2, c3, .. cx) Depending on each course, I need to provide (say) top 5 tips/recommendations to the user (e.g. study materials that could be useful etc) I need collaborative elements to be applied to learn what recommendations are proving helpful to users.
I looked at the recommendation engines like Apache Mahout Taste, but I am unable to model my problem in a way that it looks like the examples shown. (The extra filtering criteria where a user is associated with one or more courses and each recommendation/tip could be associated with one or more courses is throwing me off.)
Please let me know if there is any good way of modeling such a problem? Any pointers to documentation/examples would be very appreciated. I am just starting my research in this area so please bear with me if I have misunderstood any concepts.

Thanks,
Vivek


Solution

  • This may be too simple to need a recommender. If each course has a set of associated materials, then it seems clear that taking course c1 means they should have the associated materials for the course. Maybe rank from among all materials by popularity. That might be very easy and accomplish most of what you need.

    If you want to model this as CF, you can; I don't know how much data you have. If you have just a handful of users and courses it will be too sparse to give useful answers.

    Your users have relations to two things: courses and materials. You don't want to recommend courses, but rather materials. I would build two data models: one with user-course info, and one with user-material purchase info. Use the user-course data as the basis of a UserSimilarity implementation that defines user-user similarity. Then piece that together with a NearestNUserNeighborhood, a GenericUserBasedRecommender, but using the other user-material data model.

    You will be using user-user similarity based on courses to make recommendations from among materials.