2012-03-29 56 views
2

我有一个图像压缩算法,我可以训练它,然后用一些测试图像输入它。 虽然这段代码似乎有问题。 为了测试这个,我试着给它和我一起训练过的测试图像(即测试集==训练集)。现在我所拥有的一般问题如下算法的训练阶段的完整性检查

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

我怀疑的是,我应该得到同样的结果,好像我从来没有受过训练的算法(即刚刚与原始数据进行了测试,没有任何培训的话)

你认为这种情况是什么? 为了确保算法训练阶段合理完成,您建议采用哪种常规类型的测试(如完整性检查)?


谢谢你的答案。该算法使用上下文树减法,其计算概率为0或1,在某个点的grayescale images.It使用上下文之前,这个特定的点来估计其概率(0/1)。压缩比率(位/字节)是衡量结果的善良。 首先,我在单幅图像(x)上运行ctw,压缩率为0.75,然后使用例如6幅图像进行训练,并使用与训练集不同的相同图像(x)进行测试。但训练后的压缩比是0.80位/字节。图像是2048 * 2048灰度。 得到这些结果后,我尝试通过交叉验证来测试ctw的正确性,并得到了我之前解释过的奇怪结果。

我希望这些信息对我有所帮助。

谢谢

回答

1

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

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

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

2

您的怀疑不正确。一个ML算法通常应该在用于训练的集合上给出非常好的结果(在某些情况下是完美的),除非该算法完全不适合该任务,或者如果构思严重并且不会收敛。

很难说,因为我不知道你是如何教授压缩算法。您是否使用原始文件大小和输出文件大小的比率作为结果“良好”的衡量标准?你如何根据此调整算法,以及如何确保调整会引起收敛,并且不会产生随机效应?

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