extern double movievotePrediction Config pcfg unsigned long int
extern double movie_vote(Prediction. Config *pcfg, unsigned long int M, PTree & support. M, movie-vote. C ARM code 1 unsigned long int U, PTree & support. U) { auto double MU=Users. get_rating(U, M)-2, VOTE=DEFAULT_VOTE, VOTE_sum=0, VOTE_cnt=0, Nb, Mb, ds. Sq, UCor=1, support. Usize=support. U. get_count(), support. Msize=support. M. get_count(); struct pruning *internal_prune; external_prune *external_prune; auto PTree sup. M=support. M, sup. U=support. U; sup. M. clearbit(U); sup. U. clearbit(M); } /* External pruning: Prune Users sup. M */ external_prune = pcfg->get_movie_Prune_Users_in_Sup. M(); if (external_prune->enabled) { if(sup. M. get_count()>external_prune->params. Ct) do_pruning(external_prune, M, U, sup. M, sup. U); sup. M. clearbit(U); sup. U. clearbit(M); if((sup. M. get_count()<1)||(sup. U. get_count()<1)) return VOTE; } /* External pruning: Prune Movies sup. U */ external_prune = pcfg->get_movie_Prune_Movies_in_Sup. U(); if (external_prune->enabled) { if(sup. U. get_count()>external_prune->params. Ct ) do_pruning(external_prune, M, U, sup. M, sup. U); sup. M. clearbit(U); sup. U. clearbit(M); if((sup. M. get_count()<1) || (sup. U. get_count()<1) ) return VOTE;
auto PTree. Set & U_ptree_set= Users. get_ptreeset(), & M_ptree_set=Movies. get_ptreeset(); sup. U. clearbit(M); sup. M. clearbit(U); movie-vote. C ARM code 2 auto PTree sup. U_1=sup. U&(~U_ptree_set[(U*3)+0])&( U_ptree_set[(U*3)+1])&( U_ptree_set[(U*3)+2]), sup. U_2=sup. U&( U_ptree_set[(U*3)+0])&(~U_ptree_set[(U*3)+1])&(~U_ptree_set[(U*3)+2]), sup. U_3=sup. U&( U_ptree_set[(U*3)+0])&(~U_ptree_set[(U*3)+1])&( U_ptree_set[(U*3)+2]), sup. U_4=sup. U&( U_ptree_set[(U*3)+0])&( U_ptree_set[(U*3)+1])&(~U_ptree_set[(U*3)+2]), sup. U_5=sup. U&( U_ptree_set[(U*3)+0])&( U_ptree_set[(U*3)+1])&( U_ptree_set[(U*3)+2]), sup. M_1=sup. M&(~M_ptree_set[(M*3)+0])&( M_ptree_set[(M*3)+1])&( M_ptree_set[(M*3)+2]), sup. M_2=sup. M&( M_ptree_set[(M*3)+0])&(~M_ptree_set[(M*3)+1])&(~M_ptree_set[(M*3)+2]), sup. M_3=sup. M&( M_ptree_set[(M*3)+0])&(~M_ptree_set[(M*3)+1])&( M_ptree_set[(M*3)+2]), sup. M_4=sup. M&( M_ptree_set[(M*3)+0])&( M_ptree_set[(M*3)+1])&(~M_ptree_set[(M*3)+2]), sup. M_5=sup. M&( M_ptree_set[(M*3)+0])&( M_ptree_set[(M*3)+1])&( M_ptree_set[(M*3)+2]), sou. M, sou. U, som. M, sp. U; auto double thr 1, expnt 1, thr 2, expnt 2, s, S, ss, sn, s. M, s. U, c, C, wt, XBal. VT, wt_const=16; //SAMPLE-stat d. MNsds pruning config parms hijacked for ARM parm use. internal_prune = pcfg->get_internal_prune(movie_d. MNsds); thr 1=internal_prune->threshold; expnt 1=internal_prune->exponent; internal_prune = pcfg->get_internal_prune(movie_Nsds_Msds); thr 2=internal_prune->threshold; expnt 2=internal_prune->exponent;
- Slides: 4