我有一个键值形式的数据集。在多对一映射中基本上有两组整数。与f(123)一样,f(123)对应于4652,f(24)对应于12等等。这个数据集的大小大约是10^7。
这个太大了。因此,我的想法是在某些模型上训练这个数据集,并且只存储经过训练的模型参数,所以当我必须回答f( 24 )时,我可以传递24作为模型的输入,并打印模型的输出。我认为数据集上的某些模型过分拟合,可能会导致高精度的结果,比如大于99%。我严格要求参数的大小小于50,000字节。
我试着制作香草神经网络,但是错误率太高了。我发现一个有趣的博客正在尝试与我的方法相同的方法。如果你在评论中有什么不清楚,请告诉我。
具体实例问题
给你一个我正在尝试的具体例子。这是DataSet,ith行在这个文件中存储f(i)。我正在尝试制作一个50k字节的代码,它可以回答查询f(i)。当然,训练是没有限制的,但是训练后文件的长度应该是50k。
发布于 2018-12-26 15:04:55
发布于 2018-12-27 08:37:02
这似乎是个有趣的问题。我以前从未遇到过这样的问题,但以下是我的观察:
希望这会有所帮助:)
发布于 2018-12-27 11:15:54
基本上,你在问题中提到的是,你只有一个输入特性和一个输出,而你的任务是回归。这里的要点是,你必须先调查你的数据,并确定它是否可以学习。稍后我将解释这一点,但在此之前,我有一个关于您考虑分离模型的建议。如果您不确定每个培训拆分是否具有与实际数据分发相同的分布,请不要这样做。似乎你想用一种错误的方式来学习合奏。没有找到好的精度的主要原因是,如果更改数据的分布,则测试数据的性能将很差。换句话说,由于训练不佳,你的模型不能很好地推广。另一方面,改变培训数据的大小并不会减少您的模型的大小,如果它们被绘制为iid,并且它们足够大以便学习。
首先,您必须找到训练数据的Bayes错误。因为您只有一个输入特性,所以可能存在很高的Bayes错误,这意味着您的输入和输出不满足功能条件,对于每个特定的输入,您应该只有一个输出。您必须调查每个输入是否只有一个输出。如果您发现有一个较大的Bayes错误,您可以确保您不能有一个良好的性能。相反,如果你看到你有较低的Bayes误差,那么你可以使用线性和非线性模型。
我的解决方案是,试着用两层神经网络来解决你的问题,找到正确的结构,首先可以很好地概括,然后,在找到一个好的模型之后,检查网络的大小。另一个解决方案可以是使用非线性SVM,如果你确信你的数据是非线性的,尽管我想如果你没有很高的贝叶斯误差,两层网络可以解决你的问题。
https://datascience.stackexchange.com/questions/43015
复制相似问题