模型构建过程是交互式的时进行回测或交叉验证


9

我有一些预测模型,我想对其性能进行回测(即,获取我的数据集,将其“倒带”到上一个时间点,并查看该模型的预期性能)。

问题是我的某些模型是通过交互过程构建的。例如,按照弗兰克·哈雷尔(Frank Harrell)的回归建模策略中的建议,在一个模型中,我使用了受限制的三次样条来处理特征与响应之间可能的非线性关联。我根据领域知识和关联强度的单变量度量来分配每个样条的自由度。但是,我要允许模型的自由度显然取决于数据集的大小,在进行回测时,数据集的变化很大。如果我不想在每次对模型进行回测时都分别手动选择自由度,那么我还有其他选择吗?

再例如,我目前正在通过发现具有高杠杆作用的点来进行离群值检测。如果我愿意手工进行此操作,则只需查看每个高杠杆数据点,仔细检查数据是否干净,然后过滤掉或手工清理。但这依赖于很多领域知识,因此我不知道如何使过程自动化。

我将不胜感激建议和解决方案,无论是(a)解决模型构建过程中交互部分自动化的一般问题,还是(b)针对这两种情况的具体建议。谢谢!

Answers:


4

仅供参考,这可能更适合SE.DataScience,但是暂时,我将在这里回答。

在我看来,您可能处在只能选择编写实现您的解决方案的脚本的情况下。从来没有使用过花键,我对花键的了解完全是理论上的,所以请多多包涵,让我知道我有没有看到的东西。

从广义上讲,您似乎需要解决几个不同的问题才能实现此目的。

1.)以动态方式确定模型参数。您之前已经提到过,您已经结合使用领域知识和单变量测度。在我看来,这似乎是您应该能够启发式处理的东西。您必须在开始时就程序要实施的一组规则达成一致。这可能不是一件微不足道的任务,因为您将不得不认真思考这些规则的潜在含义。这可能需要您重新访问过程的每个步骤,并不仅对决策进行分类,而且还要对这些决策背后的原因进行分类。

2.)实际执行您的程序。为了使您的性能测试适当动态,并易于维护和修改,您将必须考虑如何构建它。您可能希望对主模型的预测性能估算使用某种形式的循环,最好采用用户定义的长度,以便将来具有更大的灵活性。您可能还想为程序要执行的每个动作编写单独的函数,因为这样可以更轻松地测试功能,以及以后维护和修改程序。您至少需要可能的功能来选择数据集(即,仅在回测时已经“过去”的时间段),清理和验证(您必须真正考虑的功能),

您关于异常值检测和处理的问题也属于这两个问题,我将通过在主程序循环中编写较小的循环来实现,该循环将继续“清理”并重新调整模型,直到达到您满意的程度为止它(再次,您必须定义自己)。

如果这听起来像是一项艰巨的任务,那是因为它确实如此。人们已经编写了整个软件库(有时非常有利可图),以执行此类任务。除此之外,如果不进一步了解您的过程,数据结构和到目前为止完成的编程语言,就很难提供任何更具体的建议。

如果有任何一项对您有用,并且您希望我进行任何扩充,请发表评论,让我知道,我会很乐意这样做。


我不需要任何实际编写代码的帮助,谢谢-我们的回测基础结构已经到位并且非常强大。我只是对可能使用的统计程序感兴趣。关于启发式自动化模型构建的交互部分:关于这一点有什么文章吗?在文献中我还没有提到这种过程。您提到“人们已经编写了整个软件库”,您有参考吗?
本·库恩

@BenKuhn-根据您的评论,我对您遇到的确切困难尚不清楚;请帮助我更加清楚。启发式方法在自动化模型构建中的使用非常广泛。我现在能想到的最基本的应用是逐步的逐步回归。缺乏模型的确切细节,我无法指出可能对您有帮助的确切文献,但是粗略的Google搜索带来了几篇文章,探讨了自动选择参数的方法,尤其是平滑和受罚样条曲线的方法。看到我的下一个评论以获取一些链接
2015年


@BenKuhn-当您说可能要使用的统计程序时,您是什么意思?在我看来,通过使用滚动测试或扩展数据选择窗口的火车测试采样,可以相当简单地处理回测。直到回测之前,您已获取的所有数据都将是您的训练集,而您期望在下一个时间段内有机会重新调整模型之前看到的数据将是您的测试集。可以使用所有常用的预测性能和拟合优度来进行实际评估。
哈布2015年

@BenKuhn-实施实际的业务知识部分将要求您将其编入代码,并确保在必要时可以提供进行此类确定所需的数据。另外,我使用术语“软件库”作为一个笼统的术语,涵盖从扩展到现有建模库的所有内容,这些库旨在为某些应用程序自动建立模型,一直到工业级,专有专家和决策支持系统。
哈布2015年

3

与其尝试找出如何使手动模型调整工作自动化的方法,不如通过研究需要较少调整的低方差学习者来共同解决这个问题,即使这样做会以增加模型偏差为代价。您希望对自己的回测结果充满信心,这很大程度上归因于您预测中的样本方差低,并在已经具有样本方差本身的学习者的基础上引入一些自动调整过程,从而不利于该目标。似乎尾巴在这里摇晃着狗,但是任何需要大量仔细调整(手动或自动)的东西都不是真正诚实的回测环境IMO的理想选择。


为什么自动调整(在每个回测时间点运行单独的调整)不会成为“真正诚实的回测环境”?
本·库恩

不幸的是,通过降低样条曲线来减少方差将导致无法接受的预测能力损失。当您建议使用低方差学习器时,您是在想什么吗?如果没有,您在想什么?
本·库恩

@BenKuhn-我同意安德鲁(Andrew)的担心,即回溯测试是否真的是对模型的样本外预测能力的“诚实”测试,如果没有其他原因,除了您似乎已经在模型上开发了调整参数这一事实之外,整个数据集可供您使用;即使您“逆时针”并动态地重建模型,您将通过参考整个数据集来开发这样做的方法,因此存在存在模型仍然过拟合的风险,即使重新训练了可用数据的子集。
哈布2015年

1
ŤŤ

1
在一个像金融一样嘈杂的领域中,您要确保如果历史的发展有所不同(但仍来自某些基础分布),您仍然会得出类似的模型。如果您有信心自己的流程对抽样方差的鲁棒性超过我的看法,那您会很好。但是以我的经验,自动调整过程对采样方差非常敏感。
安德鲁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.