理解和应用基于树的方法进行预测因子筛选和建模
了解如何:
- 使用分区、引导森林和提升树的模型
- 了解决策树的优缺点
- 优点:发现非线性关系,获得易于理解的结果,筛选大量因素
- 缺点:每次处理一个响应,形成 if-then 语句而非数学公式,高可变性可能导致相似数据的模型出现重大差异
- 构建 JMP 分区分类树,使用分割来定义预测变量和分类响应之间的关系
- 定义样本数量、树(模型)的大小和采样率,以使用随机森林技术构建 Bootstrap Forest 模型
- 定义层数、每棵树的分割数、学习率和采样率,以构建提升树模型,将较小的模型组合成最终模型
- 解释结果并调整模型
- 指定并运行利润矩阵报告以识别分类响应的错误分类,并使用混淆矩阵和决策矩阵解释结果
注:17:00 和 38:00 处包含问答环节
预测模型和机器学习回复:理解和应用基于树的方法进行预测筛选和建模感谢两位非常详细的分析,我需要一些时间来处理你们的所有建议,稍后会回复。 我知道我的数据集中存在很多挑战,其中一个挑战是它不平衡,它是大量历史数据和添加的一些实验的混合体。 我们开发人员希望从所有数据中获取信息,而不是扔掉任何东西。 这些实验可能看起来像异常值,但实际上并非异常值,它们是具有有意义结果的单点。 由于我的数据集将在欧洲发现峰会上展示,因此我们可以在其上线时进一步讨论。 BR
回复:理解和应用基于树的方法进行预测筛选和建模@彼得_赫什:我不确定你这句话的含义“基于树的模型非常容易受到异常值的影响” ,因为基于树的方法对异常值相当稳健,或者至少异常值的影响可以忽略不计。 这方面已经有很多例子和出版物,这也是为什么这种类型的模型经常被使用和著名的原因,因为它们的“简单性”和低预处理/清理步骤(不需要对异常值进行大量工作,以及处理缺失值、没有分布假设等...)。 异常值对回归模型和随机森林的影响的比较(以及应用于两种算法的处理异常值的不同技术的好处(剧透:这对随机森林算法没有太大影响))可以在这里看到:如何使您的机器学习模型对异常值具有鲁棒性 - KDnuggets
@彼得_赫什@乔治然而,选择基于树的模型还需要考虑其他事项,以下是一些:
- 过拟合这主要发生在决策树和提升树中(如果没有进行适当的验证)。 随机森林往往不太容易过度拟合,因为引导过程:有一个个体树的独立训练,每个都适合训练数据的引导样本。 通过引导过程,某些样本不会“用于”创建单个树(称为“袋外”(OOB)样本),但可用于估计模型中的误差(因此充当“验证”,对模型未见的数据的误差进行估计)。
- 相关性/多重共线性: 吨不同的基于树的模型以不同的方式处理变量之间的多重共线性或相关性。 如果您的数据集中具有很强的相关性/多重共线性,您可能会遇到一些差异:当查看决策树特征重要性图(或梯度提升树)时,您可以看到仅选择“最佳”特征(具有最佳分割属性的特征),而其他特征(与第一个特征相关)是未选择且特征重要性为 0(或接近 0)。 这是正常的,因为决策树使用所有预测变量并尝试确定每个级别的最佳分割,因此“更差”和相关的特征将被丢弃。因此,重新加载决策/提升树可能会导致存在相关性/多重共线性的不同模型(因为它可能并不总是每次选择相同的特征/变量)。 当查看随机森林特征重要性图时,您可以看到所有特征都有一个分数,甚至是相关的特征。 这是由于特征装袋,即为森林中的每个决策树随机选择特征,从而使每个特征在各个树中都有相同的“机会”被选择。 因此,重新加载该模型应该会得到非常相似的模型。
- 噪音(或偏差/方差权衡):B osted 树比随机森林更准确。 在提升树中,每棵树都经过迭代训练以纠正先前树的错误,因此该算法能够捕获数据中的复杂模式。 然而,如果数据有噪声,提升树可能会过度拟合并开始对噪声进行建模。 因此,根据数据集大小和数据中的噪声,可以在提升树和随机森林之间做出选择:第一个非常准确,但对噪声不鲁棒(像决策树一样低偏差、高方差),而在比较 RF 不太准确/精确,但对噪声更稳健(偏差与森林中的每棵树相同,由于装袋过程,方差低于决策树或提升树)。
除了前面的几点之外,您还必须考虑您的目标(预测/解释?)、用于评估模型在此数据集上的性能的指标的影响、数据集的大小和维度(变量数量与变量数量)。观察数量)、数据的代表性等......
如果您使用的是小型数据集(可能有噪音),那么随机森林可能是比提升树/决策树更安全、更稳健的替代方案。
除了什么@彼得_赫什建议,如果您的提升树的折叠/验证列具有不同的性能,则表明您的数据子集可能具有异常值,因此尝试在多元平台中查看距离(Jackknife/Mahalanobis)可以启用您可以发现并识别该子集中的常见观察结果。
抱歉回答太长了,希望对你有帮助
回复:理解和应用基于树的方法进行预测筛选和建模@乔治很好的问题。@Victor_G有一些很好的解决方案,包括模型平均或 k 折集成建模。听起来您的数据有很多噪音,模型随着额外的运行而变化。如果没有一些额外的因素或运行来帮助更好地理解数据的可变性,此时模型可能不是很有用。
测试这一点的一种方法是为保留验证创建多个验证列。如果使用不同验证列的这些模型彼此显着不同,则表明数据的随机子集不能代表整个数据。这意味着如果不进行一些更改,您将很难建立准确的预测模型。
基于树的模型非常容易受到异常值的影响,因此在运行模型之前检查异常值可能是个好主意。
希望这对我们有所帮助,让我们知道事情进展如何。
回复:理解和应用基于树的方法进行预测筛选和建模@乔治关于你的问题我可能有一些想法:
- 尝试 K 折交叉验证(使用“分析”->“预测建模”中提供的“模型筛选”平台)来评估模型的稳健性。 您将获得每次折叠的结果,因此无论训练或验证集中有哪些运行,都可以更轻松地评估您的模型是否稳健。
您可以保存每个模型的公式(在 K-1 折叠上进行训练,在 1 折叠上进行验证),然后可以对在不同折叠上创建的这些单独模型进行集成或平均,但需要保留一些数据完全出局,因为在这里您将平均在数据和验证集上创建的不同模型,因此为了对模型进行公平评估,需要创建一个独立的测试集并完全“删除”测试数据以避免任何信息/数据泄漏或过度拟合。
- 如果您想对模型进行可重复的测试(或“修复”最终模型),您可以通过键入任意数字来修复随机种子:这样,使用脚本和固定随机种子重新加载模型将使您始终能够有相同的结果。
- 最后,您还可以尝试创建不同的提升树(或其他基于树的模型),通过优化超参数或对其值(深度、最小尺寸分割等)进行一些差异,以便进行优化模型或个人模型中的一点多样性,然后通过集成或平均将它们组合起来。
希望这几个想法可以帮到你
回复:理解和应用基于树的方法进行预测筛选和建模@彼得_赫什,感谢您发布这个精彩的视频! 在我的例子中,我有可变数据,并且使用决策树会导致不同运行的不同模型,正如您所说,决策树有这个“缺点”。 在您的情况下,您使用了验证列,这意味着培训和测试的选择不再是随机的。 在我的例子中,使用“保留部分”是运行之间“噪音”的另一个来源。对于如何获得更稳定的模型,或者如何定义/修复最终模型,有什么想法或策略吗? 我使用提升树,因为它在模型比较中表现最好。提前致谢!