我正在使用非负矩阵分解和非负最小二乘法进行预测,并且我想根据给定的数据量评估预测的好坏。例如原始数据是
original = [1, 1, 0, 1, 1, 0]
现在我想看看当给定数据不完整时我能重建原始数据有多好:
incomplete1 = [1, 1, 0, 1, 0, 0],
incomplete2 = [1, 1, 0, 0, 0, 0],
incomplete3 = [1, 0, 0, 0, 0, 0]
我想对大数据集中的每个示例都这样做。现在的问题是,原始数据的正数据量不同,在上面的原始数据中有 4 个,但对于数据集中的其他示例,它可能或多或少。假设我进行了一轮评估,给出了 4 个正例,但我的数据集的一半只有 4 个正例,另一半有 5,6 或 7 个。我应该排除有 4 个正例的那一半,因为它们没有丢失数据使“预测”更好?另一方面,如果我排除数据,我会更改训练集。我能做些什么?或者在这种情况下我根本不应该用 4 进行评估?
编辑:
基本上我想看看我能重建输入矩阵有多好。为简单起见,假设“原始”代表观看了 4 部电影的用户。然后我想知道我能预测每个用户有多好,仅基于用户实际观看的一部电影。我得到了很多电影的预测。然后我绘制 ROC 和 Precision-Recall 曲线(使用预测的 top-k)。我将用用户实际观看的 n 部电影重复所有这些。对于每个 n,我都会在我的图中得到一条 ROC 曲线。当我使用例如用户实际观看的 4 部电影来预测他观看的所有电影时,但他只看了这 4 部电影,结果变得太好了。
我这样做的原因是为了看看我的系统需要多少“观看电影”才能做出合理的预测。如果它在已经观看了 3 部电影时只返回好的结果,那在我的应用程序中就不会那么好了。