我是机器学习的新手,这可能是一个愚蠢的问题。
我已经实现了我的模型及其工作。我有一个关于在测试数据上运行它的问题。它是一个二元分类问题。如果我知道测试数据中类的比例,我如何使用它来提高模型的性能或模型所做的预测。所以假设 75% 属于 1 类,25% 属于 0 类
任何帮助是极大的赞赏
我是机器学习的新手,这可能是一个愚蠢的问题。
我已经实现了我的模型及其工作。我有一个关于在测试数据上运行它的问题。它是一个二元分类问题。如果我知道测试数据中类的比例,我如何使用它来提高模型的性能或模型所做的预测。所以假设 75% 属于 1 类,25% 属于 0 类
任何帮助是极大的赞赏
不,您的模型不应该知道您的测试数据,如果您在训练中包含有关测试数据中内容的线索,您将执行称为 Data Leakage的操作。
数据泄漏会导致过度拟合,这会在特定测试集上为您提供良好的结果,但不会推广到其他数据。
比方说,您在生产中部署此模型并将其从未遇到过的真实数据输入其中,由于我提到的这两种现象,预测将低于您在训练/测试阶段的预期。
我建议您在训练阶段对模型进行更多调整,也许更多地清理您的数据,如果目标类不平衡(例如,您的训练数据集中有 90% / 10% 的比例),请执行称为OverSampling 和 UnderSampling的操作,选择更好的功能等等。
总之:调整你的模型以对你的测试数据有良好的预测,特别是,这不是好的做法,并且会导致在看不见的数据上创建一个糟糕的模型。
如果您的结果与预期不同,您应该查看个别错误并使用这些错误来纠正机器学习。如果你使用百分比,算法可能会学习到与它应该学习的完全不同的东西。
但是,如果您确实需要通过此类统计数据(例如,因为您的机器学习应该了解它自己的错误以及如何自主纠正它们),我建议您为您的学习能力增加另一个维度 - 例如“信心”,当事情变得更糟时,参与的节点会增加,结果会更好,而参与的节点会减少。置信度低的节点可能会更快地改变或完全停止它们的活动。具有高置信度的节点将不太容易更改。
由于您没有详细说明您使用的是哪种学习算法,因此节点可以是从表中的数据点到模拟神经元的任何东西,也可以是单独的连接。
更高一级,您的模型可能包含一个模块,用于跟踪置信度变化之间的联系。这将允许避免一次增加总是伴随其他地方减少的循环,反之亦然。或者实际上错误的电路会产生错误的信心并破坏模型其余部分的学习......因此,如果一个领域的信心增加 5 次会导致下一轮另一个领域的信心降低 6 次(即,更糟糕的长期结果) ,置信度变化可能会有所不同。这个模块显然也会学会更好地选择什么时候影响什么——以正常的方式。
在该模块使学习比通常的方法更快之前,需要进行一些微调。为大量的测试集做准备——或者你的不同模型使用相似数据相互对抗的游戏,并且可能使用进化方法进行微调。
您还应该确保找到一种方法来使用非典型数据测试人工智能 - 以及一种方法来查看奇怪的结果是否正确,就像人类进行测试然后得到解决方案一样。