anchor.diff:  In recommendation evaluation, the raw data is a sequence of known rating.  A
   rating has 3 components: user, item, and a score. We use the $k-fold$ method for
   evaluation, the raw data is sliced into a sequence of (training, validation)
  -data tuple. 
  -
  -In the validation data, we construct a query for *each user*, and get a list of 
  -recommended items from the engine. It is vastly different from the 
  +data tuple.
  +
  +In the validation data, we construct a query for *each user*, and get a list of
  +recommended items from the engine. It is vastly different from the
   classification tutorial, where there is a one-to-one corresponding between the
  -training data point and the validation data point. In this evaluation, 
  +training data point and the validation data point. In this evaluation,
   our unit of evaluation is *user*, we evaluate the quality of an engine
   using the known rating of a user.
   
  -### Key assumptions 
  -
  -There are multiple assumptions we have to make when we evaluate a 
  +### Key assumptions
  +
  +There are multiple assumptions we have to make when we evaluate a
   recommendation engine:
   
   - Definition of 'good'. We want to quantity if the engine is able to recommend
   items which the user likes, we need to define what is meant by 'good'. In this
  -examle, we have two kinds of events: 'rate' and 'buy'. The 'rate' event is 
  +examle, we have two kinds of events: 'rate' and 'buy'. The 'rate' event is
   associated with a rating value which ranges between 1 to 4, and the 'buy'
  -event is mapped to a rating of 4. When we 
  -implement the metric, we have to specify a rating threshold, only the rating 
  +event is mapped to a rating of 4. When we
  +implement the metric, we have to specify a rating threshold, only the rating
   above the threshold is considered 'good'.
   
  -- The absense of complete rating. It is extremely unlikely that the training 
  +- The absense of complete rating. It is extremely unlikely that the training
   data contains rating for all user-item tuples. In contrast, of a system containing
   1000 items, a user may only have rated 20 of them, leaving 980 items unrated. There
   is no way for us to certainly tell if the user likes an unrated product.
   When we examinte the evaluation result, it is important for us to keep in mind
   that the final metric is only an approximation of the actual result.
   
  -- Recommendation affects user behavior. Suppose you are a e-commerce company and 
  -would like to use the recommendation engine to personalize the landing page, 
  +- Recommendation affects user behavior. Suppose you are a e-commerce company and
  +would like to use the recommendation engine to personalize the landing page,
   the item you show in the langing page directly impacts what the user is going to
   purchase. This is different from weather prediction, whatever the weather
   forecast engine predicts, tomorrow's weather won't be affected.  Therefore, when
  
positive.code:   },
    "preparatorParams":{
      "":{
        
      }
    },
    "algorithmParamsList":[
  
negative.code: ### Actual Result
  
  In MyRecommendation/src/main/scala/***Engine.scala***,
  we define the `ActualResult` which represents the user rating for validation.
  It stores the list of rating in the validation set for a user.
  
  ```scala
  