In the literature there is some research covering how to map many entity types with arbitrary relationships using matrix factorization, a technique known as collective matrix factorization. Our first attempt was a very simple approach: concatenating many different types into the same interaction matrix and running standard matrix factorization.
So, in the figure above, instead of representing a user by how much they listened to every artist (the blue-dotted line), they can be represented by a vector of D numbers (the blue solid line). And instead of representing an artist by which users listened to them, they can be represented by another vector of D numbers (the red solid line). These vectors map the user’s music taste and the artist’s music style into the same sized vectors. To recreate an estimate of how many hours the blue user listened to the red artist, we can simply take the dot product of the red and blue vectors.