算法训练阶段的完整性检查

时间:2012-03-29 03:02:53

标签: algorithm testing image-processing machine-learning

我有一个图像压缩算法,我可以训练,然后用一些测试图像喂它。 但是这个代码似乎有问题。 为了测试这个,我尝试给它一个我训练过的相同的测试图像(即测试集==训练集)。现在我的一般问题如下

如果您使用与其训练过的完全相同的数据测试算法会发生什么?

我怀疑我应该得到相同的结果,好像我从来没有训练过算法(即刚刚用原始数据对其进行测试而没有经过任何训练)

您如何看待这种情况? 您建议采用哪种一般类型的测试(如健全性检查)来确保合理地完成算法培训阶段?


谢谢你的回答。该算法使用上下文树设计,在灰度图像的某一点上计算出0或1的概率。在该特定点之前使用上下文来估计其概率(0/1)。压缩比(比特/字节)作为度量结果的好。 首先,我在单张图像(x)上运行ctw并且压缩为0.75然后我使用例如6张图像进行训练并使用相同的图像(x)进行测试,该图像超出训练集。但训练后的压缩比为0.80位/字节。图像为2048 * 2048灰度。 得到这些结果后,我试图通过交叉验证测试ctw的正确性,我得到了我之前解释过的奇怪结果。

我希望这些信息有助于我回答。

谢谢

2 个答案:

答案 0 :(得分:2)

你的怀疑不正确。 ML算法通常应该在用于训练它的集合上给出非常好的结果(在某些情况下,完美),除非算法完全不适合任务,或者如果它被错误地构思并且不会收敛。 / p>

很难分辨,因为我不确定你是如何教授压缩算法的。您是否使用原始文件大小和输出文件大小的比率作为结果“良好”的度量?你如何根据这个调整算法,你如何确保调整导致收敛,而不仅仅是随机效应?

就健全性检查而言,如果算法在用于训练它的集合上给出没有优于随机的结果,则该算法不起作用。相反的情况并非如此 - 训练集测试并不意味着算法运行良好。

答案 1 :(得分:1)

这完全取决于算法和您的问题。一些(例如,用最近邻方法分类)将很容易得到完美的答案。大多数人会表现出比从训练数据中获得的不同测试数据更好的表现,但并不完美。我想可能有一些地方好像你从来没有训练它,但是对于大多数没有经过任何训练的算法测试甚至不是一个定义的操作,或者它只是一个完全随机的结果。

对训练数据的测试可以是一个体面的健全性检查,以确保您的代码正常工作,因为它应该做得很好。但是最好只有一个用于测试的小型训练集/测试集,并确保它在测试集上做了合理的事情。通过分类或回归,您通常会做一些交叉验证的变体(以避免在训练集上进行测试)来进行真正的性能评估,而您可以在一些可以快速运行以测试代码的小数据集上执行此操作。

但是,我不太清楚你正在处理的设置是什么。你能解释一下吗?即算法如何使用其训练集进行图像压缩?