我的数据集由标签(因变量)和大约 20 列独立数值变量、组成。
这些样本是时间序列,我的目标是根据进行分类。
因变量只能得到两个标签:“ ”或“ ”。
不需要属于“ ”或“
我想知道以下哪种方法最适合我的情况以及为什么(如果需要,我最终应该如何设置方法和参数):
- 支持向量机:我应该使用哪个内核(线性、多项式、径向基、sigmoid)?
- 神经网络:我应该设置多少层和节点?
- 随机森林
- 应用于二元结果的非参数模型(这提供了属于每个类别的概率)
你能给我什么建议?
我的数据集由标签(因变量)和大约 20 列独立数值变量、组成。
这些样本是时间序列,我的目标是根据进行分类。
因变量只能得到两个标签:“ ”或“ ”。
不需要属于“ ”或“
我想知道以下哪种方法最适合我的情况以及为什么(如果需要,我最终应该如何设置方法和参数):
你能给我什么建议?
恕我直言,这些决定只能在对问题和手头数据有深入了解的情况下以明智的方式做出(搜索术语:模式识别/分类没有免费午餐定理)。所以我们在这里可以告诉你的都是非常一般的经验法则。
您用于训练的统计独立案例越多,您可以负担的模型就越复杂。经常选择非常严格的模型(例如线性模型),因为在给定的数据量下无法提供更复杂的模型,而且更不用说真正相信具有实际线性的类边界。
请参阅偏差方差权衡和模型复杂性,例如在统计学习的要素中
关于您的问题和数据性质的知识也可能会建议合理的特征生成方式。
如果您没有非常多的样本,但绝对需要非线性边界并因此得到不稳定的模型,那么集成模型(如随机森林)可以提供帮助。您不仅可以聚合决策树,还可以聚合所有其他类型的模型。
有传言说,对于模型的最终质量,模型的选择通常不如用户对所选模型类型的体验重要。我试图在这个问题中收集一些关于这个谣言的证据。
结论是找一个对您考虑的分类器有经验的人进行咨询,或者甚至更好地对您的数据类型进行分类(这需要更详细的描述,而不仅仅是说它是时间序列)。
注意:前三个也可以设置输出后验概率。
*我不知道有任何科学研究报告了这一点,但听过很多人报告了这一观察结果,并且有许多关于模型类型之间差异的描述,最终得出的结论是,实践中的理论差异几乎不重要.
如果不了解有关您尝试解决的确切问题的更多信息,就很难提出具体建议。但是,我将对一般时间序列预测提出一些建议。
首先,重要的是要注意,由于观察的序列相关性,观察的独立性通常是时间序列的一个糟糕的假设。此外,假设时间序列是平稳的可能是也可能不是一个好的假设。这些问题使将数据划分为训练集、交叉验证集和测试集变得复杂。如果存在显着程度的自相关,这将减少您的有效样本量并增加过度拟合的机会,特别是对于复杂的机器学习算法,例如具有许多可调权重的多层神经网络。此外,自相关会影响您拆分数据集的方式。如果您从整个数据集中随机抽样以创建交叉验证和测试集,那么您可能会在样本外误差估计中引入前瞻偏差。发生这种情况是因为样本外数据集的点在时间上与样本内数据点相邻。如果存在显着的自相关,这违反了独立性假设,并且会人为地减少您的样本外误差估计。这个问题通常会导致在特定时间点拆分数据集,以便拆分前的每个观察都是训练,而拆分后的每个观察都是交叉验证/测试。这缓解了自相关的一些问题,但如果样本内时间序列与样本外时间序列(非平稳时间序列)显着不同,则会增加其他复杂性。如果存在显着的自相关,这违反了独立性假设,并且会人为地减少您的样本外误差估计。这个问题通常会导致在特定时间点拆分数据集,以便拆分前的每个观察都是训练,而拆分后的每个观察都是交叉验证/测试。这缓解了自相关的一些问题,但如果样本内时间序列与样本外时间序列(非平稳时间序列)显着不同,则会增加其他复杂性。如果存在显着的自相关,这违反了独立性假设,并且会人为地减少您的样本外误差估计。这个问题通常会导致在特定时间点拆分数据集,以便拆分前的每个观察都是训练,而拆分后的每个观察都是交叉验证/测试。这缓解了自相关的一些问题,但如果样本内时间序列与样本外时间序列(非平稳时间序列)显着不同,则会增加其他复杂性。
考虑到上述问题,我会尽可能简单地开始,并根据需要逐步增加复杂性。我首先将我的数据集暂时拆分为样本内和样本外集,确保样本外包含与样本内集相似的循环和统计属性。然后我会使用随机森林来处理样本内数据集。不知道您的数据集的大小,20 个输入变量可能是您对自由度的保守使用。但是,由于自相关对您的有效样本量的负面影响,我会将随机森林应用于数据集以获得变量重要性的估计。了解输入的相对重要性可能会帮助您消除一些较弱的输入并释放更多的自由度。该站点是使用随机森林进行变量重要性估计的一个很好的介绍,本文讨论了进行变量排名的关键陷阱。随机森林还有一个优势,就是你可以拉出单独的决策树,并通过跟随树的分支来理解分类过程。这个检查森林的几棵决策树的过程非常有洞察力,并为最终分类算法带来更好的选择。神经网络和 SVM 比随机森林更不容易解释。与其他机器学习算法相比,随机森林还需要更少的数据预处理,这使它们成为平易近人的第一步。
Using a random forest does have the drawback that it randomly splits data into out-of-bag (OOB) and in-bag samples for each decision tree. This random splitting will lead to bias in the OOB error estimate of the forest if your time series has significant autocorrelation. However, you can confine this bias to the in-sample data set by only running the random forest on it and preserving the out-of-sample data set for actual error estimation.
随机森林可能会为您的分类问题提供足够的能力。但是,如果您正在寻找更多改进,我将继续使用随机森林认为最重要的变量构建逻辑回归。此时,您已经将样本内数据用于变量选择和通过检查决策树获得洞察力。但是,您可能可以安全地将样本内数据拆分为训练和交叉验证集,然后使用学习曲线来决定你应该使你的分类算法有多复杂。从简单的逻辑回归开始,如果您仍然通过学习曲线观察到高偏差,那么您可能会考虑转移到多节点、单层神经网络并重复该过程。或者您可以考虑使用带有 RBF 内核的 SVM。这篇文章涉及神经网络和 SVM 之间的区别。如果您确实在最终分类算法中遇到高差异,这些选择将真正取决于您的问题的具体情况和更多数据的可用性。此外,最终分类算法的复杂性将取决于交叉验证的性能,但您应该以提供合理性能的最简单解决方案为目标。