A switching multi-level method for the long tail recommendation problem