我正在使用 奇异值分解 (SVD) 学习有关 Python 中电影推荐的矩阵分解的教程: 这里
使用 SVD,使用 SVD 将数据集近似为三个组成部分:
M ≈ U ⋅ S ⋅ Vt
现在,我想在这个矩阵上使用训练/测试验证集,因为你需要找到 M 的最佳 k(数字)近似值。
如何在经过训练的模型上应用单独的测试集来获得未见过的测试集的预测? 这个的数学/算法是什么? 谢谢
拟合任何机器学习模型的标准程序如下:
因此,根据您的情况,您应该执行以下步骤:
train_test_split
,如此处k
值运行 SVD,并评估这些近似值在验证集上的性能,并选择 RMSE 值最低的 k
(如教程中所述)如果您的数据集很小,而不是拆分为 3 个数据集,您可以拆分以进行训练和测试,并使用 交叉验证 来微调您的
k
。
通常不会这样写,但为了简单起见,我将如何回答你的问题:
A
train 矩阵被分解为三个矩阵的乘积:
A
火车= U @ S @ VT
一旦确定 A 的最佳 k(数字)近似值。
A
火车 ≈ U
k @ S
k@ VT
k
要查找火车组的投影或新坐标,请执行以下操作:
A
火车 @ VT
k.T
或 A
火车.T @ VT
k
要查找测试集的投影或新坐标,请执行以下操作:
A
测试 @ VT
k.T
或 A
测试.T @ VT
k
希望有帮助!