-
Notifications
You must be signed in to change notification settings - Fork 161
Open
Description
I'm trying to do hyperparameter tuning for a next item recommender using yoochoose data (code below) but get the following error:
ValueError: model must be a NextItemRecommender but '<class 'cornac.hyperopt.RandomSearch'>' is provided
What is the correct approach for tuning next item recommenders?
import cornac
from cornac.data import Reader
from cornac.datasets import yoochoose
from cornac.eval_methods import NextItemEvaluation
from cornac.metrics import NDCG
from cornac.models import GRU4Rec
from cornac.hyperopt import Discrete, Continuous
from cornac.hyperopt import RandomSearch
buy_data = yoochoose.load_buy(reader=Reader(min_sequence_size=2, num_top_freq_item=30000))
item_set = set([tup[1] for tup in buy_data])
test_data = yoochoose.load_test(reader=Reader(min_sequence_size=2, item_set=item_set))
next_item_eval = NextItemEvaluation.from_splits(
train_data=buy_data[:10000],
test_data=test_data[:10000],
exclude_unknowns=True,
verbose=False,
fmt="SITJson",
)
ndcg20 = NDCG(20)
gr = GRU4Rec(layers=64, loss="bpr-max", n_sample=2048, n_epochs=5, seed=123, verbose=False)
rs_gr = RandomSearch(model=gr,
space=[Discrete(name="layers", values=[64, 128, 256])],
metric=ndcg20,
eval_method=next_item_eval,
n_trails=10)
cornac.Experiment(eval_method=next_item_eval,
models=[rs_gr],
metrics=[ndcg20],
show_validation=False).run()
Metadata
Metadata
Assignees
Labels
No labels