训练模型的近似文本压缩?

数据挖掘 机器学习 神经网络 深度学习 机器学习模型
2022-02-18 05:13:59

我有一个键值形式的数据集。基本上是多对一映射中的两组整数。就像 f(123) 对应 4652,f(24) 对应 12 等等。该数据集的大小约为 10^7。

这太大了。所以我的想法是在某个模型上训练这个数据集并只存储训练模型的参数,所以当我必须回答说 f(24) 时,我可以将 24 作为输入传递给我的模型并打印模型的输出。我的想法是在数据集上过度拟合某些模型可能会导致超过 99% 的高精度。我严格希望参数的大小小于 50,000 字节。

我尝试制作香草神经网络,但错误百分比太高了。我发现一个有趣的博客尝试与我相同的方法。如果您在评论中有不清楚的地方,请告诉我。

具体示例问题
给你一个我正在尝试的具体例子。这是DataSet,第 i 行将 f(i) 存储在此文件中。我正在尝试制作一个 50k 字节的代码并且可以回答查询 f(i)。当然,训练时没有限制,但训练后它应该是一个最大长度为 50k 的文件。

4个回答

您的问题可以通过hash map来解决。如果数据集非常大,可以使用近似哈希图。近似哈希图的示例是Bloom FiltersCuckoo Filters

这似乎是一个有趣的问题。我以前没有遇到过这样的问题,但是以下是我的观察:

  1. 您的方法的问题可能是因为您的数字数据中缺乏数字含义。当您的输入是例如带有数字的分类数据时,就会发生这种情况。在这种情况下,请尝试对您的输入数据进行编码,然后将它们传递给您的神经网络。如果维度太高,请尝试使用 PCA。

  2. 您要解决的问题是经典的散列问题。因此,我同意@Brian Spiering 使用近似哈希图的回答。

希望这可以帮助 :)

基本上,您在问题中提到的内容就像您只有一个输入特征和一个输出,而您的任务是回归。这里的重点是,您必须首先调查您的数据,并确定它是否可以学习。我稍后会解释这一点,但在此之前,我有一个关于你考虑分离模型的建议。如果您不确定每个训练拆分是否具有与真实数据分布相同的分布,请不要这样做。您似乎想以错误的方式进行集成学习。您没有找到良好精度的主要原因是,如果您更改数据的分布,您将在测试数据上表现不佳。换句话说,由于训练不佳,您的模型无法很好地泛化。另一方面,

首先,您必须找到训练数据的贝叶斯错误。因为你只有一个输入特征,你可能有很高的贝叶斯错误,在你的情况下,这意味着你的输入和输出不满足功能条件,对于每个特定的输入,你应该只有一个输出。您必须调查每个输入是否只有一个输出。如果你发现你有一个很大的贝叶斯错误,你可以确定你不能有好的表现。相反,如果您发现贝叶斯误差较低,则可以使用线性和非线性模型。

我的解决方案是,尝试使用两层神经网络解决您的问题,首先找到可以很好泛化的正确架构,然后在找到一个好的模型后检查网络的大小。如果您确定您的数据是非线性的,另一种解决方案可以使用SVM非线性,尽管我猜如果您没有高贝叶斯错误,两层网络可以解决您的问题。

如果xf(x)之间存在关系,那么您肯定可以获得一些有意义的结果,尤其是当您可以满足小于 100% 的情况时。

或者,也可以考虑超紧压缩,例如 PAQ8HP12,对数据进行一些预处理以使其可更好地压缩。

抱歉,无法打开您的数据集。