I have sparsely populated matrix of users as rows with columns being categorical answers to various questions ( question are of various domain about preferences / behaviors of the users ) . answers may be be either numerical ( for example an answer to the question "what's the number of children in your household ? " ), or categorical ( "specify your education level ? BS / PHd / etc."). As mentioned the matrix is sparse , and the aim is to infer the missing entries.

do you think matrix factorization techniques ( for example ALS ) could be suitable for solving this ? ( with proper normalization of the response ) and do you suggest another learning algorithm ?

  • $\begingroup$ I think this question is too broad to have a good answer. $\endgroup$
    – Valentas
    Aug 4, 2017 at 6:47

1 Answer 1


I think ALS is very applicable here. I would imagine it would need to be fine tuned quite a bit though. Unless the questions are correlated, it might yield some weird results. Just because two people with PHD's have one child, does not mean the third would only have one child. Basically, the more the data the better. Recommending movies works so well because all the columns are related to movies, but this should work with enough data.

  • 2
    $\begingroup$ how would you handle the categorical values? $\endgroup$
    – oW_
    Mar 7, 2017 at 0:38
  • $\begingroup$ Thanks Samuel. Could you be more specific about the fine tuning necessary to avoid the "weird results" ? :) $\endgroup$ Mar 7, 2017 at 8:40
  • $\begingroup$ For recommendation systems you need to find an appropriate rank or the number of clusters you decide to derive with the algorithm. In general, from what I understand, a high rank is used for recommendation systems. This will help yield more appropriate results for the values it fills in when reconstructing your original matrix. $\endgroup$ Mar 7, 2017 at 17:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.