Constructor, create a DataManager with a mode: experiment,
autotest, or server, instantiate an algorithm and start
a DBManager which is reponsible for dynamic database access.
Check this user's ratings records and load into cache if not done yet
Upon return from this method, the user's record is guaranteed to be in memory
and will not be evicted until you call decUserCount() on the UserInfo structure.
Collaborative filtering algorithm using Bayesian clustering, to divide
users into different "classes," and recommend items based on membership
in these classes.