def _buildRandomWalkScore(self,d):
		
		epsilon = 0.00001
		#TO CHECK : Should P be computed based on the cosine similarity matrix ??? I don't think so!
		#P = matrix(toolBox.randomWalkTransitionProbability(self.UI))
		#P = matrix(toolBox.AtoP(toolBox.cosineSimilarity(self.UI)))
		P = matrix(toolBox.transitionProbability(self.UI))
		Phi = self.ItemPrior
		W = repeat(array([Phi]), Phi.shape[0], axis=0)
		#TO BE TESTED
		#W = 1.0/W
		W = exp(-500*W)
		
		P = matrix(array(P)*W)		
		R = matrix(zeros((self.nbItems, self.nbItems)), dtype=float64)
		U = matrix(eye(self.nbItems, self.nbItems,dtype=float64))
		#U = U / self.nbItems
		diff = 1000
		#count = 20
		print 'Convergence ...'
		while (diff > epsilon) :#and (count > 0):
			sys.stdout.write('.')
			oldRSum= sum(R)
			R = d*P*R + (1-d)*U
			diff = abs(oldRSum - sum(R)) / sum(R)
			#count-=1
			print diff
		
		#for i in arange(R.shape[0]):
		#	R[i,i] = 1
		print R
		print sum(R,0)
		self.R = array(R)
    def _buildRandomWalkScore(self, d):

        epsilon = 0.00001
        #TO CHECK : Should P be computed based on the cosine similarity matrix ??? I don't think so!
        #P = matrix(toolBox.randomWalkTransitionProbability(self.UI))
        #P = matrix(toolBox.AtoP(toolBox.cosineSimilarity(self.UI)))
        P = matrix(toolBox.transitionProbability(self.UI))
        Phi = self.ItemPrior
        W = repeat(array([Phi]), Phi.shape[0], axis=0)
        #TO BE TESTED
        #W = 1.0/W
        W = exp(-500 * W)

        P = matrix(array(P) * W)
        R = matrix(zeros((self.nbItems, self.nbItems)), dtype=float64)
        U = matrix(eye(self.nbItems, self.nbItems, dtype=float64))
        #U = U / self.nbItems
        diff = 1000
        #count = 20
        print 'Convergence ...'
        while (diff > epsilon):  #and (count > 0):
            sys.stdout.write('.')
            oldRSum = sum(R)
            R = d * P * R + (1 - d) * U
            diff = abs(oldRSum - sum(R)) / sum(R)
            #count-=1
            print diff

        #for i in arange(R.shape[0]):
        #	R[i,i] = 1
        print R
        print sum(R, 0)
        self.R = array(R)
	def train(self):
		#Split this methods into two parts to be able to quickly output Weight matrix for different values of alpha and teta
		
		#Cosine computation
		#self.computeSim('cos')
		
		#Compute cost matrix
		self.Ctot = array(self.computeCostMatrix())
		
		#Compute afinity matrix
		self.P = toolBox.transitionProbability(self.UI)
    def train(self):
        #Split this methods into two parts to be able to quickly output Weight matrix for different values of alpha and teta

        #Cosine computation
        #self.computeSim('cos')

        #Compute cost matrix
        self.Ctot = array(self.computeCostMatrix())

        #Compute afinity matrix
        self.P = toolBox.transitionProbability(self.UI)
Example #5
0
	def train(self):
		'''Different ways of computing the transition probability matrix can be considered'''
		#TO FIX : Should P be computed from the similarity matrix or directly as transition probability from the graph ? 
		
		if (self.sim == 'cos'):
			self.Sim = toolBox.cosineSimilarity(self.UI)
			self.P = toolBox.AtoP(self.Sim)
		if (self.sim == 'cp'):
			self.Sim = toolBox.cosineSimilarity(self.UI)
			self.P = toolBox.AtoP(self.Sim)
		if (self.sim == 'bn'):
			self.P = toolBox.transitionProbability(self.UI)
    def train(self):
        '''Different ways of computing the transition probability matrix can be considered'''
        #TO FIX : Should P be computed from the similarity matrix or directly as transition probability from the graph ?

        if (self.sim == 'cos'):
            self.Sim = toolBox.cosineSimilarity(self.UI)
            self.P = toolBox.AtoP(self.Sim)
        if (self.sim == 'cp'):
            self.Sim = toolBox.cosineSimilarity(self.UI)
            self.P = toolBox.AtoP(self.Sim)
        if (self.sim == 'bn'):
            self.P = toolBox.transitionProbability(self.UI)
        self.P = transpose(self.P)
	def train(self):
		print "Start training..."
		#debug_here()
		#self.Cost = repeat(reshape(self.ItemPrior, (self.ItemPrior.shape[0],1)), self.ItemPrior.shape[0], axis=0)
		self.Cost = repeat(reshape(self.ItemPrior/mean(self.ItemPrior), (1,self.ItemPrior.shape[0])), self.ItemPrior.shape[0], axis=0)
		print self.Cost.shape
		#debug_here()
		if (self.sim == 'cos'):
			self.Sim = toolBox.cosineSimilarity(self.UI)
			self.Pref = toolBox.AtoP(self.Sim)
		if (self.sim == 'bn'):
			self.Pref = toolBox.transitionProbability(self.UI)
		
		#self.P = toolBox.BRWWR_Comp(self.Pref, ones(self.Pref.shape), self.theta)
		self.P = toolBox.BRWWR_Comp(self.Pref, self.Cost, self.theta)
		
		#Transpose P to get a correct random walk with restart
		self.P = transpose(self.P)
    def train(self):
        print "Start training..."
        #debug_here()
        #self.Cost = repeat(reshape(self.ItemPrior, (self.ItemPrior.shape[0],1)), self.ItemPrior.shape[0], axis=0)
        self.Cost = repeat(reshape(self.ItemPrior / mean(self.ItemPrior),
                                   (1, self.ItemPrior.shape[0])),
                           self.ItemPrior.shape[0],
                           axis=0)
        print self.Cost.shape
        #debug_here()
        if (self.sim == 'cos'):
            self.Sim = toolBox.cosineSimilarity(self.UI)
            self.Pref = toolBox.AtoP(self.Sim)
        if (self.sim == 'bn'):
            self.Pref = toolBox.transitionProbability(self.UI)

        #self.P = toolBox.BRWWR_Comp(self.Pref, ones(self.Pref.shape), self.theta)
        self.P = toolBox.BRWWR_Comp(self.Pref, self.Cost, self.theta)

        #Transpose P to get a correct random walk with restart
        self.P = transpose(self.P)