I have a large sparse matrix representing attributes for millions of entities. For example, one record, representing an entity, might have attributes “has(fur)”, “has(tail)”, “makesSound(meow)”, and “is(cat)”.
However, this data is incomplete. For example, another entity might have all the attributes of a typical “is(cat)” entity, but it might be missing the “is(cat)” attribute. In this case, I want to determine the probability that this entity should have the “is(cat)” attribute.
So the problem I’m trying to solve is determining which missing attributes each entity should contain. Given an arbitrary record, I want to find the top N most likely attributes that are missing but should be included. I’m not sure what the formal name is for this type of problem, so I’m unsure what to search for when researching current solutions. Is there a scalable solution for this type of problem?
My first is to simply calculate the conditional probability for each missing attribute (e.g. P(is(cat)|has(fur) and has(tail) and … )), but that seems like a very slow approach. Plus, as I understand the traditional calculation of conditional probability, I imagine I’d run into problems where my entity contains a few unusual attributes that aren’t common with other is(cat) entities, causing the conditional probability to be zero.
My second idea is to train a Maximum Entropy classifier for each attribute, and then evaluate it based on the entity’s current attributes. I think the probability calculation would be much more flexible, but this would still have scalability problems, since I’d have to train separate classifiers for potentially millions attributes. In addition, if I wanted to find the top N most likely attributes to include, I’d still have to evaluate all the classifiers, which would likely take forever.
Are there better solutions?
This sounds like a typical recommendation problem. For each attribute use the word ‘movie rating’ and for each row use the word ‘person’. For each person, you want to find the movies that they will probably like but haven’t rated yet.
You should look at some of the more successful approaches to the Netflix Challenge. The dataset is pretty large, so efficiency is a high priority. A good place to start might be the paper ‘Matrix Factorization Techniques for Recommender Systems’.