我正在参加几个机器学习比赛,因为我正在努力学习这个领域 .
对于回归问题,我使用 xgboost
. 这是我使用的程序:
在特征工程之后,我像往常一样将数据分成2组,一组训练集和一组测试集 . 然后我将 xgboost
放在训练集上并在测试集上进行验证 . 以下是我得到的结果:(当我使用经过训练的算法预测提交目标时,我也会显示公共集结果,度量标准为mae) .
Iteration training score testing score public score
100 8.05 12.14 17.50
150 7.10 11.96 17.30
备注:
-
所有数据集(火车/测试/公共场所)大小大致相同,大约20万个样本 .
-
这是一个时间序列,所以我在拆分时没有改变数据,即使改组它也不会改变结果 .
-
我还尝试在临时与公共数据集接近的样本上训练我的xgboost,但结果并不好 .
-
当我在提交之前对所有数据(火车测试)进行训练时,我的公共得分提高了0.35 .
这是我的问题:
-
我们真的可以通过观察训练和测试分数之间的差异来估计过度拟合吗?或者它只是过度拟合的指标?
-
为什么我的提交分数通过增加迭代次数来改善,即使它表明我越来越过度拟合?
-
为什么提交分数的改善甚至优于测试分数的改善?
-
为什么测试分数和提交分数不是更接近?为什么我在测试和提交分数之间有系统性的差异,无论超参数或“过度拟合率”如何 .
这个陈述是否正确:如果在无用信息(训练集特定信息)上学到的有用信息的比率大于1,那么你可以继续过度拟合并仍然改进模型吗?
我希望它不会太混乱,对不起,我可能没有适当的词汇 . 我不得不提一下,即使是过度拟合以及测试和公共分数之间的巨大差异,我仍然是排名第二的人,有50人参与 .
3 回答
首先要了解过度拟合是什么 .
当你的测试组得分在下降(或者错误在增加)时,当训练分数增加(或者错误正在减少)时你可以看到过度适合
过度适应是指您的训练模型过于精确,并且没有概括您尝试解决的问题 . 换句话说,它对培训和培训来说太过FIT,因此无法解决/预测不同的数据集 .
在你的例子中,似乎火车和测试的错误都在减少,这意味着你没有过度拟合 .
过度拟合总是一件事 .
至于你目前的问题 . 如果要运行多个交叉验证,或者手动拆分数据以进行许多培训和许多测试集,您可以执行以下操作:
拆分数据进行培训和测试(50%,50%)或(70%,30%),您认为哪种方式适合您
然后,随机抽取X%你的训练数据,这将是训练集 .
使用Y%随机抽样测试数据,它将成为您的测试集
我建议X = Y = 75% . 而上述分为70%的培训和30%的测试 .
至于你的问题:
这只是过度适应的指标 .
你的例子并不合适
得分因不同数据集而异
与3相同的答案
添加图片来描述过度拟合:
复杂性有一点(10),保持训练会减少训练误差,但会增加测试误差 .
只是一些可能对你有帮助的想法......
Kaggle比赛的最终结果是私人排行榜,您的模型将在您尚未看到的数据上进行测试 . 优化您的模型以在公共排行榜(提交数据集)上进行良好预测,然后因为您过度装配并且没有交叉验证而放弃10个位置是没有用的,因此您的模型没有很好地概括 . 你必须做一些交叉验证,我建议你相信结果 .
请注意,按百分比计算,您的MAE下降幅度分别为11.8%,1.5%和1.1%,因此您的提交分数正在提高 .
有时你必须小心时间序列数据 - 哪部分数据与公共/私人排行榜数据最相似?例如,如果您有一年的数据并且您在1月至6月16日进行培训,则在7月至12月16日进行测试,然后在1月6月17日进行验证(提交),那么您可能希望提交的结果比您更好测试数据集 . 在这种情况下,您可以完全丢弃7月至12月16日的数据,并仅在1月6日16日进行训练/测试 .
如果你在第二位,你显然做得对,但请记得交叉验证 . 过去有过比赛,人们会因为他们的模特没有概括而落到数百个地方好!
查看此图片以尝试拟合数据点:
您的函数将完美地拟合给定数据点,从而导致Xi平方低于1 .
进一步看:https://en.wikipedia.org/wiki/Reduced_chi-squared_statistic
在本质上:
你的模型不会概括
在测试集上运行良好
P.S检查kaggle排行榜前后赢 . 他们评估不同的数据子集 . 大多数领先的算法在“未见过的”数据上表现不佳 .