Recommender system that matches similar customers with similar highly rated products? I have a dataset of 1,000 customers that bought 20 distinct phones and rated them 1-5. I have several demographic attributes for these customers (gender, age). My website offers 100 distinct devices, each with several attributes (screen size, case material, operating system, price).

For new customers, I want to recommend a ranked list of 5 devices they might enjoy. This might be based on 1) the new customer having a similar demographic profile to the 1,000 customers that gave ratings and 2) devices that were highly rated or had similar attributes to the devices that were highly rated by a similar customer.

All the examples I’ve found show how to make recommendations to similar customers for products that were rated highly by customers of similar profiles. I want to do this without limiting recommendations to the products that were rated. Instead, I want to build a system that might recommend phones I have ratings for, and also phones that haven’t been rated (ex: the phone is new, I need to get rid of inventory, or I want them to try something they might enjoy more) based on their similarity to other highly rated products by similar customers.

What is a good approach to build a recommended system for this scenario? I’ve read about content-based, collaborative filtering, and hybrid recommenders, but I can’t find a good example of this scenario. Is there a name for the type of system I am describing here?
You want to do three things:


Cluster similar customers based on their profiles and their preferences for certain devices
Cluster similar devices based on ratings but also device attributes
Create a recommender system based on clusterings 1 and 2


Here is how I would do it:


Cluster customers via usual means (PCA, K-Means, etc.) based on their demographics
For each cluster develop a model that predicts the "rating" of a device based on the devices attributes (e.g. via ensemble learning, association rules, etc.). Then use the model to predict the rating of a new device for each cluster!
Implement a simple recommender based on the cluster membership and a relevant device set based on ratings, this works because of step 2 each device now has a ranking. If you want to "manipulate the customer" further you can add simple rules to add devices below the relevant rating threshold if they satisfy certain criteria (price, "is on sale", etc.).


Voila!