public int ProcessTags(List <UserTagReport> tags, List <User> Users, ExperimentOptions Options, int RealTag, bool isTraining)
        {
            int PredictedTag;

            if (isTraining)
            {
                PredictedTag = RealTag;
            }
            else
            {
                if (Options.maxTrust)
                {
                    PredictedTag = (from report in tags orderby Users[report.UserID].PredictedTrust descending, report.RandomColumnValue select report.Tag).ToArray()[0];
                }
                else
                {
                    double sum1 = 0, sum2 = 0;
                    int    t;
                    foreach (var report in tags)
                    {
                        t     = Users[report.UserID].PredictedTrust;
                        sum1 += t * report.Tag;
                        sum2 += t;
                    }
                    double a1 = (sum1 / sum2 - 1) / (DataSimulation.DefaultGroupSimulationOptions.TagOccupancies.Length - 1 - 1);
                    PredictedTag = policy.ConvertOccupancyValueToTag(a1, DataSimulation.DefaultGroupSimulationOptions.TagOccupancies);
                }
            }

            return(PredictedTag);
        }
Example #2
0
        double lamda_user    = 0.95; // forgetting for user. 1:remember everything 0:remember nothing

        public int ProcessTags(List <UserTagReport> tags, List <User> Users, ExperimentOptions Options, int RealTag, bool isTraining, List <double> SectionRValue, List <double> SectionSValue)
        {
            int PredictedTag;
            int CurrentSection = tags[0].Section;

            double user_tag;
            int    user_id;
            double user_trust;
            double rsum = 0;
            double ssum = 0;
            double mxt = -1;
            double sro, sso, r, s, E;
            double MaxVoteTag = 1;

            if (isTraining)
            {
                PredictedTag = RealTag;
            }
            else
            {
                sro = SectionRValue[CurrentSection - 1];
                sso = SectionSValue[CurrentSection - 1];

                for (int i = 0; i < tags.Count; i++)
                {
                    user_id    = tags[i].UserID;
                    user_tag   = tags[i].Tag;
                    user_trust = Users[user_id].PredictedTrust;

                    r = user_tag;
                    s = param.maxTagOptions - user_tag + 1;

                    if (!Options.maxTrust)
                    {
                        rsum += r * user_trust;
                        ssum += s * user_trust;
                    }
                    else
                    {
                        if (user_trust > mxt)
                        {
                            mxt  = user_trust;
                            rsum = r;
                            ssum = s;
                        }
                    }
                }

                rsum += lamda_section * sro;
                ssum += lamda_section * sso;

                E            = rsum / (rsum + ssum);
                PredictedTag = policy.ConvertOccupancyValueToTag(E, DataSimulation.DefaultGroupSimulationOptions.TagOccupancies);
                SectionRValue[CurrentSection - 1] = rsum;
                SectionSValue[CurrentSection - 1] = ssum;
            }

            return(PredictedTag);
        }