Рекомендательное тестирование точности системы с использованием GridSearchCV - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь улучшить производительность модели с переменными наименьшими квадратами (ALS), тестируя с использованием различных параметров модели, но производительность модели, по-видимому, очень низкая.

Поскольку модель с переменными наименьшими квадратами относительно отличается отВ других моделях с точки зрения оценки мне нужно было настроить собственный метод оценки и перекрестной проверки, чтобы функция GridSearchCV работала правильно.Чтобы улучшить производительность, я попытался настроить другую param_grid и модель для функции тестирования, очевидно, без каких-либо результатов.Я думаю, что пользовательские параметры не работают должным образом.Для справки я посмотрел фрагмент кода Jbochi (https://gist.github.com/jbochi/2e8ddcc5939e70e5368326aa034a144e), чтобы настроить накопленный дисконтированный коэффициент усиления (DCG) для измерения оценки модели и функцию Predefinedsplit из sklearn.model_selection (как вы можете видеть в классе LeavePOutByGroup), чтобыустановить параметр cv.

class LeavePOutByGroup():
    def __init__(self, X, p=5, n_splits = 3):
        self.X = X
        self.p = p
        self.n_splits = n_splits
        test_fold = self.X.groupby("fullvisitorid").cumcount().apply(lambda x: int(x / p) if x < (n_splits * p) else -1)
        self.s = PredefinedSplit(test_fold)

grid_search = GridSearchCV(rec_pipeline, param_grid,
                           cv=LeavePOutByGroup(train_set, p=5, n_splits=3),
                           scoring=ndcg_scorer, verbose=1)
grid_search.fit(train_set)

Я ожидал, что mean_test_score значительно изменится при изменении параметров модели, вместо этого я почти не получил улучшений. Это то, что я получил (float показывает среднее значение_test_score для каждогонабор параметров, протестированных с помощью модели ALS):

cvres = grid_search.cv_results_
for mean_score, params in zip(cvres["mean_test_score"], cvres["params"]):
    print(mean_score, params)

Вывод:

0.012434668656604229 {'als__factors': 20, 'als__regularization': 0.001, 'matrix__confidence': 10}

0.011882640120018911 {'als__factors': 20, 'als__regularization': 0.001, 'matrix__confidence': 40}

0.01271910407436217 {'als__factors': 20, 'als__regularization': 0.0001, 'matrix__confidence': 10}
...

0.011947024379421394 {'als__factors': 100, 'als__regularization': 0.0001, 'matrix__confidence': 10}

0.010698034031201297 {'als__factors': 100, 'als__regularization': 0.0001, 'matrix__confidence': 40}

0.010091750744302954 {'als__factors': 100, 'als__regularization': 0.0001, 'matrix__confidence': 100}

Мой вопрос: есть ли какой-либо другой подход, который я могу попробовать для решения проблемы плохой производительности?Ваш опыт в этом? Или я должен просто попробовать другой показатель оценки для моей модели ALS? Если да, то какой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...