# Machine learning algorithms/approaches for class recommendations?

I am asking a theoretical question about machine learning in terms of clustering. Is it possible, given a set of data of classes that students have taken in a semester to recommend additional classes that students should take if they selected some classes?

I am thinking along the line of forming clusters of classes and figuring out if a particular set of picked classes match with a pre-existing set of classes. Then, recommend the class that are in the set. But I am new to machine learning, and so welcome any other suggestions of algorithms.

In addition, this is not particularly theoretical, so feel free to ignore: but does anyone know any particular software that can accomplish this? I know LensKit is a software to handle recommendations but it seems to need ratings (which I do not have).

I welcome any mathematical manipulations that can turn clusters into "ratings." Thanks.

Actually the simplest approach would be Association Rule Mining, aka Frequent Itemset Mining (FIM). "Clustering" is an attempt to uncover structure, but not so much to make recommendations. It's explorative, not predictive; the clusters will most often be something rather obvious to the domain expert.

FIM will learn rules of the form that students, which have taken class A and B, have also taken class C with x% probability, i.e.

$${A,B} \rightarrow {C} \text{ with confidence }x\%$$

You really need to go through some introductory course. APRIORI is discussed everywhere, and is an obbvious fit here. In particular as you don't have quantities to predict (you don't have users that take class A 5 times and class B 2 times and thus are likely to buy -2 times class C...) Depending on your data, FPGrowth or Eclat algorithms may be more performat though.

• this seems closest to what I was looking for. – Quanquan Liu Oct 15 '13 at 23:28

Clustering is seldom, if ever, used for recommendations, since it is too crude. The most common techniques used are:

• matrix factorization; read, for example, "Matrix Factorization Techniques for Recommender Systems" by Koren, Bell, and Volinsky. If you use R, there is are packages NMFN and gnmf for non-negative matrix factorization. In your case, this will be the matrix of 0's and 1's. There are many modifications and versions of this technique.
• KNN. For each class, find classes highly correlative with it. Then predict the probability for this class as a linear regression (or, in your case, logistic regression) of the correlative classes, with relaxation.
• Restricted Boltzmann Machines. This is relatively hard to understand or implement. Read, for example, "Restricted Boltzmann Machines for Collaborative Filtering" by Salakhutdinov, Mnih, and Hinton. There are no Restricted Boltzmann Machine packages on R.
• Often, a combination of different approaches (blending) is used, providing better results than each one separately. For example, Netflix uses a blending of Matrix Factorization and Restricted Boltzmann Machines.