The approach you describe is one of many. Traditional collaborative filtering using matrix factorization will &quot;discover&quot; the features you listed, or other non-intuitive features, from patterns in the data. They don&#x27;t always need to be listed explicitly, and training individual asymmetric models (like your one NN per person) isn&#x27;t always ideal. Per person models won&#x27;t make a lot of sense unless each person has rated a large number of songs, which usually isn&#x27;t the case.<p>In general, methods like this require an epic amount of data to work well for consumers. The Netflix Prize made a dataset with 110 <i>million</i> ratings available, and that was barely enough to make impressive predictions. The issue here isn&#x27;t the statistical model being used, but the paucity of training data. If you trained this or any other model on one billion rated songs, the quality of the recommendations could blow your mind. They would however still skew toward the average musical tastes.