naszilla / reczilla

RecZilla: Metalearning for algorithm selection on Recommender Systems
Apache License 2.0
22 stars 3 forks source link

k-l loss error with NMFRecommender #9

Open duncanmcelfresh opened 2 years ago

duncanmcelfresh commented 2 years ago

There appears to be an error with alg NMFRecommender, using K-L loss. Even though K-L is allowed in the alg class (defined here),

Traceback (most recent call last):
  File "/home/shared/reczilla/RecSys2019_DeepLearning_Evaluation/ParameterTuning/SearchAbstractClass.py", line 400, in _objective_function
    result_dict, result_string, recommender_instance, train_time, evaluation_time = self._evaluate_on_validation(current_fit_parameters_dict)
  File "/home/shared/reczilla/RecSys2019_DeepLearning_Evaluation/ParameterTuning/RandomSearch.py", line 42, in _evaluate_on_validation
    current_fit_parameters
  File "/home/shared/reczilla/RecSys2019_DeepLearning_Evaluation/ParameterTuning/SearchAbstractClass.py", line 292, in _evaluate_on_validation
    recommender_instance, train_time = self._fit_model(current_fit_parameters)
  File "/home/shared/reczilla/RecSys2019_DeepLearning_Evaluation/ParameterTuning/SearchAbstractClass.py", line 282, in _fit_model
    **current_fit_parameters)
  File "/home/shared/reczilla/RecSys2019_DeepLearning_Evaluation/MatrixFactorization/NMFRecommender.py", line 70, in fit
    nmf_solver.fit(self.URM_train)
  File "/home/shared/miniconda3/envs/reczilla/lib/python3.6/site-packages/sklearn/decomposition/nmf.py", line 1275, in fit
    self.fit_transform(X, **params)
  File "/home/shared/miniconda3/envs/reczilla/lib/python3.6/site-packages/sklearn/decomposition/nmf.py", line 1250, in fit_transform
    shuffle=self.shuffle)
  File "/home/shared/miniconda3/envs/reczilla/lib/python3.6/site-packages/sklearn/decomposition/nmf.py", line 991, in non_negative_factorization
    beta_loss = _check_string_param(solver, regularization, beta_loss, init)
  File "/home/shared/miniconda3/envs/reczilla/lib/python3.6/site-packages/sklearn/decomposition/nmf.py", line 219, in _check_string_param
    ' = %r' % (solver, beta_loss))
ValueError: Invalid beta_loss parameter: solver 'cd' does not handle beta_loss = 'kullback-leibler'
duncanmcelfresh commented 2 years ago

in general we should probably double-check all of the hyperparams here. this issue seems to occur because we're using coordinate decent with kl (sklearn issue)