Beispiel #1
0
            public double Estimate(long itemID)
            {
                IRunningAverage average = new FullRunningAverage();

                double[] similarities = similarity.ItemSimilarities(itemID, toItemIDs);
                for (int i = 0; i < toItemIDs.Length; i++)
                {
                    long toItemID           = toItemIDs[i];
                    Tuple <long, long> pair = new Tuple <long, long>(toItemID, itemID);
                    if (rescorer != null && rescorer.IsFiltered(pair))
                    {
                        continue;
                    }
                    double estimate = similarities[i];
                    if (rescorer != null)
                    {
                        estimate = rescorer.Rescore(pair, estimate);
                    }
                    if (excludeItemIfNotSimilarToAll || !Double.IsNaN(estimate))
                    {
                        average.AddDatum(estimate);
                    }
                }
                double averageEstimate = average.GetAverage();

                return(averageEstimate == 0 ? Double.NaN : averageEstimate);
            }
Beispiel #2
0
            public double Estimate(long itemID)
            {
                Tuple <long, long> pair = new Tuple <long, long>(toItemID, itemID);

                if (rescorer != null && rescorer.IsFiltered(pair))
                {
                    return(Double.NaN);
                }
                double originalEstimate = similarity.ItemSimilarity(toItemID, itemID);

                return(rescorer == null ? originalEstimate : rescorer.Rescore(pair, originalEstimate));
            }
Beispiel #3
0
 public double Estimate(long userID)
 {
     // Don't consider the user itself as a possible most similar user
     if (userID == toUserID)
     {
         return(Double.NaN);
     }
     if (rescorer == null)
     {
         return(similarity.UserSimilarity(toUserID, userID));
     }
     else
     {
         Tuple <long, long> pair = new Tuple <long, long>(toUserID, userID);
         if (rescorer.IsFiltered(pair))
         {
             return(Double.NaN);
         }
         double originalEstimate = similarity.UserSimilarity(toUserID, userID);
         return(rescorer.Rescore(pair, originalEstimate));
     }
 }