def testOverfit(self): """ See if we can get a zero objective on the hinge loss """ m = 10 n = 20 k = 5 u = 0.5 w = 1 - u X = SparseUtils.generateSparseBinaryMatrix((m, n), k, w, csarray=True) eps = 0.001 k = 10 maxLocalAuc = MaxLocalAUC(k, u, eps=eps, stochastic=True) maxLocalAuc.rate = "constant" maxLocalAuc.maxIterations = 500 maxLocalAuc.numProcesses = 1 maxLocalAuc.loss = "hinge" maxLocalAuc.validationUsers = 0 maxLocalAuc.lmbda = 0 print("Overfit example") U, V, trainMeasures, testMeasures, iterations, time = maxLocalAuc.learnModel( X, verbose=True) self.assertAlmostEquals(trainMeasures[-1, 0], 0, 3)
def testOverfit(self): """ See if we can get a zero objective on the hinge loss """ m = 10 n = 20 k = 5 u = 0.5 w = 1-u X = SparseUtils.generateSparseBinaryMatrix((m, n), k, w, csarray=True) eps = 0.001 k = 10 maxLocalAuc = MaxLocalAUC(k, u, eps=eps, stochastic=True) maxLocalAuc.rate = "constant" maxLocalAuc.maxIterations = 500 maxLocalAuc.numProcesses = 1 maxLocalAuc.loss = "hinge" maxLocalAuc.validationUsers = 0 maxLocalAuc.lmbda = 0 print("Overfit example") U, V, trainMeasures, testMeasures, iterations, time = maxLocalAuc.learnModel(X, verbose=True) self.assertAlmostEquals(trainMeasures[-1, 0], 0, 3)
def testLearnModel(self): m = 50 n = 20 k = 5 X = SparseUtils.generateSparseBinaryMatrix((m, n), k, csarray=True) u = 0.1 w = 1 - u eps = 0.05 maxLocalAuc = MaxLocalAUC(k, w, alpha=5.0, eps=eps, stochastic=False) U, V = maxLocalAuc.learnModel(X) maxLocalAuc.stochastic = True U, V = maxLocalAuc.learnModel(X) #Test case where we do not have validation set maxLocalAuc.validationUsers = 0.0 U, V = maxLocalAuc.learnModel(X)
def testLearnModel(self): m = 50 n = 20 k = 5 X = SparseUtils.generateSparseBinaryMatrix((m, n), k, csarray=True) u = 0.1 w = 1-u eps = 0.05 maxLocalAuc = MaxLocalAUC(k, w, alpha=5.0, eps=eps, stochastic=False) U, V = maxLocalAuc.learnModel(X) maxLocalAuc.stochastic = True U, V = maxLocalAuc.learnModel(X) #Test case where we do not have validation set maxLocalAuc.validationUsers = 0.0 U, V = maxLocalAuc.learnModel(X)
maxLocalAuc.t0 = 1.0 maxLocalAuc.t0s = 2.0**-numpy.arange(7, 12, 1) maxLocalAuc.validationSize = 5 maxLocalAuc.validationUsers = 1.0 os.system('taskset -p 0xffffffff %d' % os.getpid()) logging.debug("Starting training") logging.debug(maxLocalAuc) #modelSelectX = trainX[0:100, :] #maxLocalAuc.learningRateSelect(trainX) #maxLocalAuc.modelSelect(trainX) #ProfileUtils.profile('U, V, trainObjs, trainAucs, testObjs, testAucs, iterations, time = maxLocalAuc.learnModel(trainX, testX=testX, verbose=True)', globals(), locals()) U, V, trainMeasures, testMeasures, iterations, time = maxLocalAuc.learnModel(trainX, verbose=True) p = 10 trainOrderedItems = MCEvaluator.recommendAtk(U, V, p) testOrderedItems = MCEvaluatorCython.recommendAtk(U, V, p, trainX) r = SparseUtilsCython.computeR(U, V, maxLocalAuc.w, maxLocalAuc.numRecordAucSamples) trainObjVec = maxLocalAuc.objectiveApprox(trainOmegaPtr, U, V, r, maxLocalAuc.gi, maxLocalAuc.gp, maxLocalAuc.gq, full=True) testObjVec = maxLocalAuc.objectiveApprox(testOmegaPtr, U, V, r, maxLocalAuc.gi, maxLocalAuc.gp, maxLocalAuc.gq, allArray=allOmegaPtr, full=True) itemCounts = numpy.array(X.sum(0)+1, numpy.int32) beta = 0.5 for p in [1, 3, 5, 10]: trainPrecision = MCEvaluator.precisionAtK(trainOmegaPtr, trainOrderedItems, p)