Exemplo n.º 1
0
 internal DataModelSimilaritiesIterator(UserSimilarity otherSimilarity, long[] itemIDs)
 {
     this.otherSimilarity = otherSimilarity;
     this.itemIDs         = itemIDs;
     this.i       = 0;
     this.itemID1 = itemIDs[0];
     this.j       = 1;
 }
Exemplo n.º 2
0
        public GenericUserSimilarity(UserSimilarity otherSimilarity, DataModel dataModel, int maxToKeep)
        {
            this.similarityMaps = new FastByIDMap <FastByIDMap <double> >();
            long[] itemIDs = longIteratorToList(dataModel.getUserIDs());
            IEnumerator <UserUserSimilarity> allSimilarities = new DataModelSimilaritiesIterator(otherSimilarity, itemIDs);

            this.initSimilarityMaps(TopItems.getTopUserUserSimilarities(maxToKeep, allSimilarities).GetEnumerator());
        }
Exemplo n.º 3
0
        public NearestNUserNeighborhood(int n, double minSimilarity, UserSimilarity userSimilarity, DataModel dataModel, double samplingRate)
            : base(userSimilarity, dataModel, samplingRate)
        {
            int num = dataModel.getNumUsers();

            this.n             = (n > num) ? num : n;
            this.minSimilarity = minSimilarity;
        }
Exemplo n.º 4
0
 public AbstractUserNeighborhood(UserSimilarity userSimilarity, DataModel dataModel, double samplingRate)
 {
     this.userSimilarity = userSimilarity;
     this.dataModel      = dataModel;
     this.samplingRate   = samplingRate;
     this.refreshHelper  = new RefreshHelper(null);
     this.refreshHelper.addDependency(this.dataModel);
     this.refreshHelper.addDependency(this.userSimilarity);
 }
Exemplo n.º 5
0
        public CachingUserSimilarity(UserSimilarity similarity, int maxCacheSize)
        {
            Action refreshRunnable = null;

            this.similarity      = similarity;
            this.similarityCache = new Cache <Tuple <long, long>, double>(new SimilarityRetriever(similarity), maxCacheSize);
            if (refreshRunnable == null)
            {
                refreshRunnable = () => this.similarityCache.clear();
            }
            this.refreshHelper = new RefreshHelper(refreshRunnable);
            this.refreshHelper.addDependency(similarity);
        }
        /**
         * <p>
         * Constructs a  based on the given {@link UserSimilarity}. By
         * setting {@code samplingRate} to a value less than 1.0, this implementation will only examine that
         * fraction of all user-user similarities between two clusters, increasing performance at the expense of
         * accuracy.
         * </p>
         */

        public FarthestNeighborClusterSimilarity(UserSimilarity similarity, double samplingRate)
        {
            if (similarity == null)
            {
                throw new Exception("similarity is null");
            }
            //Preconditions.checkArgument(similarity != null, "similarity is null");
            //Preconditions.checkArgument(!Double.IsNaN(samplingRate) && samplingRate > 0.0 && samplingRate <= 1.0,
            //                            "samplingRate is invalid: %.4f", samplingRate);
            if (!(!Double.IsNaN(samplingRate) && samplingRate > 0.0 && samplingRate <= 1.0))
            {
                throw new Exception("samplingRate is invalid");
            }
            this.similarity   = similarity;
            this.samplingRate = samplingRate;
        }
Exemplo n.º 7
0
        public GenericUserBasedRecommender(DataModel dataModel, UserNeighborhood neighborhood, UserSimilarity similarity)
            : base(dataModel)
        {
            Action refreshRunnable = null;

            this.neighborhood = neighborhood;
            this.similarity   = similarity;
            if (refreshRunnable == null)
            {
                refreshRunnable = () => this.capper = this.buildCapper();
            }
            this.refreshHelper = new RefreshHelper(refreshRunnable);
            this.refreshHelper.addDependency(dataModel);
            this.refreshHelper.addDependency(similarity);
            this.refreshHelper.addDependency(neighborhood);
            this.capper = this.buildCapper();
        }
Exemplo n.º 8
0
        protected override float doEstimatePreference(long theUserID, long[] theNeighborhood, long itemID)
        {
            if (theNeighborhood.Length == 0)
            {
                return(float.NaN);
            }
            DataModel      model      = this.getDataModel();
            UserSimilarity similarity = base.getSimilarity();
            float          num        = 0f;
            bool           flag       = false;

            foreach (long num2 in theNeighborhood)
            {
                if ((num2 != theUserID) && model.getPreferenceValue(num2, itemID).HasValue)
                {
                    flag = true;
                    num += (float)similarity.userSimilarity(theUserID, num2);
                }
            }
            return(flag ? num : float.NaN);
        }
Exemplo n.º 9
0
        public override long[] getUserNeighborhood(long userID)
        {
            DataModel          model      = this.getDataModel();
            FastIDSet          set        = new FastIDSet();
            IEnumerator <long> enumerator = SamplingLongPrimitiveIterator.maybeWrapIterator(model.getUserIDs(), this.getSamplingRate());
            UserSimilarity     similarity = this.getUserSimilarity();

            while (enumerator.MoveNext())
            {
                long current = enumerator.Current;
                if (userID != current)
                {
                    double d = similarity.userSimilarity(userID, current);
                    if (!(double.IsNaN(d) || (d < this.threshold)))
                    {
                        set.add(current);
                    }
                }
            }
            return(set.toArray());
        }
Exemplo n.º 10
0
        //零数据情况下建立用户相似度数据集
        public void CountSimilarity()
        {
            IEnumerable <User> users = db.Users;

            foreach (var user in users)
            {
                IList <SimilarityMap> smilarityMap             = new List <SimilarityMap>();
                UserExtensionInfo     currentuserExtensionInfo = db.UserExtensionInfos.Single(x => x.UserId == user.Id);
                IEnumerable <int>     otherUsersId             = SelectOtherUsers(user);
                foreach (var otherUserid in otherUsersId)       //其他用户
                {
                    UserExtensionInfo otherExtensionInfo = db.UserExtensionInfos.Single(x => x.UserId == otherUserid);
                    int           similarityDegree       = AcquireSimilarityBetween(currentuserExtensionInfo, otherExtensionInfo);
                    SimilarityMap newsimilarityMap       = new SimilarityMap
                    {
                        UserId     = otherUserid,
                        Similarity = similarityDegree
                    };
                    smilarityMap.Add(newsimilarityMap);
                }
                IEnumerable <SimilarityMap> similarity = smilarityMap.OrderByDescending(x => x.Similarity).Take(SimilarityUserSettingCount);
                int priority = 1;
                foreach (var similarityMap in similarity)
                {
                    UserSimilarity userSimilarity = new UserSimilarity
                    {
                        UserId        = user.Id,
                        SimilarUserId = similarityMap.UserId,
                        Priority      = priority
                    };
                    db.UserSimilarities.Add(userSimilarity);
                    priority++;
                }
            }
            db.SaveChanges();
        }
Exemplo n.º 11
0
 public ThresholdUserNeighborhood(double threshold, UserSimilarity userSimilarity, DataModel dataModel, double samplingRate)
     : base(userSimilarity, dataModel, samplingRate)
 {
     this.threshold = threshold;
 }
Exemplo n.º 12
0
 internal SimilarityRetriever(UserSimilarity similarity)
 {
     this.similarity = similarity;
 }
Exemplo n.º 13
0
 internal Estimator(UserSimilarity userSimilarityImpl, long theUserID, double minSim)
 {
     this.userSimilarityImpl = userSimilarityImpl;
     this.theUserID          = theUserID;
     this.minSim             = minSim;
 }
Exemplo n.º 14
0
 public CachingUserSimilarity(UserSimilarity similarity, DataModel dataModel)
     : this(similarity, dataModel.getNumUsers())
 {
 }
Exemplo n.º 15
0
 internal MostSimilarEstimator(long toUserID, UserSimilarity similarity, Rescorer <Tuple <long, long> > rescorer)
 {
     this.toUserID   = toUserID;
     this.similarity = similarity;
     this.rescorer   = rescorer;
 }
Exemplo n.º 16
0
 public NearestNUserNeighborhood(int n, double minSimilarity, UserSimilarity userSimilarity, DataModel dataModel)
     : this(n, minSimilarity, userSimilarity, dataModel, 1.0)
 {
 }
Exemplo n.º 17
0
 public NearestNUserNeighborhood(int n, UserSimilarity userSimilarity, DataModel dataModel)
     : this(n, double.NegativeInfinity, userSimilarity, dataModel, 1.0)
 {
 }
        /**
         * <p>
         * Constructs a  based on the given {@link UserSimilarity}. All
         * user-user similarities are examined.
         * </p>
         */

        public FarthestNeighborClusterSimilarity(UserSimilarity similarity)
            : this(similarity, 1.0)
        {
        }
Exemplo n.º 19
0
 public GenericUserSimilarity(UserSimilarity otherSimilarity, DataModel dataModel)
 {
     this.similarityMaps = new FastByIDMap <FastByIDMap <double> >();
     long[] itemIDs = longIteratorToList(dataModel.getUserIDs());
     this.initSimilarityMaps(new DataModelSimilaritiesIterator(otherSimilarity, itemIDs));
 }
Exemplo n.º 20
0
 public GenericBooleanPrefUserBasedRecommender(DataModel dataModel, UserNeighborhood neighborhood, UserSimilarity similarity)
     : base(dataModel, neighborhood, similarity)
 {
 }
Exemplo n.º 21
0
 public ThresholdUserNeighborhood(double threshold, UserSimilarity userSimilarity, DataModel dataModel)
     : this(threshold, userSimilarity, dataModel, 1.0)
 {
 }