Skip to content

[BUG] Hyperparameter tuning for next item recommenders #643

@logrkn

Description

@logrkn

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions