I'm designing a web service that will predict and recommend new items a user might like based on their expressed preferences on previous items (simple thumbs up/down interface).
I was told to look into decision trees, since they're a simple way to group things based on their characteristics, and they can be easily used to classify new items. But after having done some reading and looked at a number of examples, I'm wondering if they're the best solution in this instance.
Some problems I see:
- There are thousands of items in the database, which means there are potentially thousands of items on which to split the tree. Running all of these splits and then calculating which ones provide the most gain (loss of entropy) seems inefficient to me.
- The tree would be changing constantly. Most of the examples I've looked at build a tree with an initial sample set of data, and then run new items through it to classify them. While I might be able to keep a stable tree in memory after awhile, it would need to be updated pretty frequently for the first few users.
- The tree is stored in memory, not a database. This could lead to issues if a server dies or goes offline. Also, I'm planning to user multiple machines to host the project, so there'd need to be some sort of shared memory space they could all access.
- I don't have any categorical or descriptive data on each of the items to help with the decisions. The entire tree would have to be "did they like this other item or not?" I'm not sure if that poses any problems, but I haven't seen any other examples that use that sort of data for building the tree.
This is my first attempt at machine learning, so it could be that these are all trivial problems compared to using other solutions, and I should just stick with decision trees. But if there's another solution that seems more appropriate, or if you can address some of these concerns, I'd love to hear it!