我正在尝试通过使用不同的模型参数进行测试来提高我的交替最小二乘(ALS)模型的性能,但是该模型的性能似乎很低。
由于在评估角度,交替最小二乘模型与其他模型相对不同,因此我需要设置我的自定义评估和交叉验证方法,以使GridSearchCV函数正常工作。 为了提高性能,我尝试为测试功能设置不同的param_grid和模型,但显然根本没有结果。我的猜测是自定义参数无法正常工作。作为参考,我查看了Jbochi的代码(https://gist.github.com/jbochi/2e8ddcc5939e70e5368326aa034a144e),以设置折扣累积增益(DCG)以测量我的模型得分以及从sklearn.model_selection(如在LeavePOutByGroup类中看到的)到函数Predefinedsplit的操作。设置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,相反,我几乎没有任何改进。 这就是我得到的(浮点数显示了使用ALS模型测试的每组参数的mean_test_score):
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模型尝试另一个评估指标?如果是这样,哪个?