# How to match a user with other users with similar interests based on their attributes?

Information Available

Consider, there are 'n' users and they have these attributes and values

User A:
Row   | Attribute a | Attribute b | Attribute c
Item 1|    0.593    |    0.7852   |   0.484
Item 2|    0.18     |    0.96     |   0.05
Item 3|    0.423    |    0.886    |   0.156

User B:
Row   | Attribute a | Attribute b | Attribute c
Item 7|    0.228    |    0.148    |   0.658
Item 8|    0.785    |    0.33     |   0.887
Item 9|    0.569    |    0.994    |   0.374


Items in this dataset can be described using the attributes a, b, and, c. So, the items might or might not be the same for different users but the attributes explain the taste of the user.

Currently, I have data for about 1000 users in this format and I can create a classifier for one user that says whether the user will like the given item or not.

Goal

What I want to do is to match users who have similar tastes using the info available above. I don't know much about Recommendation Systems and I'd really appreciate if someone could help me out.

One possible approach would be to create N classifiers (one per each user) and then pick M random items, and run those into the N classifiers. The outcome would be something like:

        User 1 | User 2 | ... | User N
Item 1:    1   |    0   | ... |   1    --> User 1 and N both like item 1
Item 2:    1   |    1   | ... |   1    --> All users like item 2
...      ...   |   ...  | ... |  ...
Item M:    0   |    0   | ... |   0    --> No user likes item M


where the i-th row contains the result of running i-th item in all N classifiers, and the j-th column contains the results of running all the M items in the j-th classifier.

Then you could see each user as a M-dimentional point, and use a simple classifier such as KNN with haming distance for the distance metric.

With a larger M, you'd get more accurate results, since you're using more variables to compare each user. The only caveat here is that you'd need those N classifiers to be very accurate, in order to minimize error propagation.