我正在使用非负矩阵分解和非负最小二乘法进行预测,并且我想评估预测的好坏取决于数据量给出。例如原来的数据是如何评估来自不完整数据的预测,其中并非所有数据都不完整
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部电影的用户。然后我想知道我可以根据用户通常观看的1部电影来预测每个用户有多好。我得到了很多电影的预测。然后绘制ROC和Precision-Recall曲线(使用预测的top-k)。我会用用户实际观看的n部电影重复所有这一切。我会在每个n的情节中得到一条ROC曲线。当我开始使用时,例如用户实际观看的4部电影,以预测他观看的所有电影,但他只观看了4部电影,结果变得非常好。
我之所以这样做,是为了查看我的系统需要多少“观看的电影”才能做出合理的预测。如果在已经观看3部电影的情况下它只会返回好的效果,那么在我的应用程序中就不会那么好。
嗨,是的,我想看看重建有多好,我将把我的答案放在我的帖子中作为编辑。 – Puckl
我想,你不想测量重建误差。您需要的是您在编辑中的上述说明 - 就像ROC曲线(这是AUC总结的内容)。要回答你的问题,照常运行测试。但是,对于恰好在火车组中有1个项目的用户,2个项目,3个项目等,单独计算AUC。您应该清楚地了解性能如何随着评分而变化。 –
谢谢,我会试试这个! – Puckl