Я пытаюсь улучшить производительность модели с переменными наименьшими квадратами (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? Если да, то какой?