An integer programming clustering approach with application to recommendation systems