Sounds like a classic matrix factorization task to me.
With a weighted matrix, instead of a binary one. So some fast algorithms may not be applicable, because they support binary matrixes only.
Don't ask for source on Stackoverflow: asking for off-site resources (tools, libraries, ...) is off-topic.