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)
def _buildRandomWalkScore(self,d): epsilon = 0.001 #P = matrix(toolBox.randomWalkTransitionProbability(self.UI)) P = matrix(toolBox.AtoP(toolBox.cosineSimilarity(self.UI))) 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): #print P,R,U 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.001 #P = matrix(toolBox.randomWalkTransitionProbability(self.UI)) P = matrix(toolBox.AtoP(toolBox.cosineSimilarity(self.UI))) 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): #print P,R,U 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 computeSim(self, type='Cosine'): print 'Compute similarity' if type == 'cos': self.Sim = toolBox.cosineSimilarity(self.UI)
def _buildSimMatrix(self): self.Sim = array(toolBox.cosineSimilarity(self.UI))
def _buildMatrices(self): '''Different ways of computing the transition probability matrix can be considered''' print 'Compute Sim & P' self.Sim = toolBox.cosineSimilarity(self.UI) self.P = toolBox.AtoP(self.Sim)