def test_warp_kos_precision(): # Remove all negative examples training = train.copy() training.data[training.data < 1] = 0 training = training.tocsr() training.eliminate_zeros() model = LightFM(learning_rate=0.05, k=5, loss='warp-kos') model.fit_partial(training, epochs=10) train_precision = precision_at_k(model, training, 10) test_precision = precision_at_k(model, test, 10) full_train_auc = full_auc(model, training) full_test_auc = full_auc(model, test) assert train_precision > 0.44 assert test_precision > 0.06 assert full_train_auc > 0.9 assert full_test_auc > 0.87
def test_warp_precision_adadelta_multithreaded(): model = LightFM(learning_schedule='adadelta', rho=0.95, epsilon=0.000001, loss='warp') model.fit_partial(train, epochs=10, num_threads=4) train_precision = precision_at_k(model, train, 10) test_precision = precision_at_k(model, test, 10) full_train_auc = full_auc(model, train) full_test_auc = full_auc(model, test) assert train_precision > 0.45 assert test_precision > 0.07 assert full_train_auc > 0.94 assert full_test_auc > 0.9
def test_logistic_precision(): model = LightFM() model.fit_partial(train, epochs=10) train_precision = precision_at_k(model, train, 10) test_precision = precision_at_k(model, test, 10) full_train_auc = full_auc(model, train) full_test_auc = full_auc(model, test) assert train_precision > 0.3 assert test_precision > 0.03 assert full_train_auc > 0.79 assert full_test_auc > 0.74
def test_warp_precision_max_sampled(): model = LightFM(learning_rate=0.05, max_sampled=1, loss='warp') # This is equivalent to a no-op pass # over the training data model.max_sampled = 0 model.fit_partial(train, epochs=1) full_train_auc = full_auc(model, train) full_test_auc = full_auc(model, test) # The AUC should be no better than random assert full_train_auc < 0.55 assert full_test_auc < 0.55
def test_bpr_precision_multithreaded(): model = LightFM(learning_rate=0.05, loss='bpr') model.fit_partial(train, epochs=10, num_threads=4) train_precision = precision_at_k(model, train, 10) test_precision = precision_at_k(model, test, 10) full_train_auc = full_auc(model, train) full_test_auc = full_auc(model, test) assert train_precision > 0.31 assert test_precision > 0.04 assert full_train_auc > 0.86 assert full_test_auc > 0.84
def test_warp_precision(): model = LightFM(learning_rate=0.05, loss='warp') model.fit_partial(train, epochs=10) train_precision = precision_at_k(model, train, 10) test_precision = precision_at_k(model, test, 10) full_train_auc = full_auc(model, train) full_test_auc = full_auc(model, test) assert train_precision > 0.45 assert test_precision > 0.07 assert full_train_auc > 0.94 assert full_test_auc > 0.9
def test_bpr_precision(): model = LightFM(learning_rate=0.05, loss='bpr') model.fit_partial(train, epochs=10) train_precision = precision_at_k(model, train, 10) test_precision = precision_at_k(model, test, 10) full_train_auc = full_auc(model, train) full_test_auc = full_auc(model, test) assert train_precision > 0.31 assert test_precision > 0.04 assert full_train_auc > 0.86 assert full_test_auc > 0.84