分区建模:什么决定了最小分割大小?我并不是一名事实上的统计学家,但多年来在生物统计学方面积累了丰富的经验,这主要归功于使用 JMP 标准版本(当前为 v13)。 我当然无法想象使用其他任何东西并定期推广它。
我目前正在逐步定义各种连续变量的分区,以优化二项式分类变量的结果(失败与通过)。 我已经阅读和观察了有关该平台的很多内容,并且确实理解包括验证并将协变量的数量限制为实用但合乎逻辑的短列表的必要性。
然而,最小分割尺寸是我不确定的一个参数。 我的目的是定义分区,以最大限度地减少甚至完全减轻结果变量的失败。 由此产生的分区似乎在很大程度上取决于所选的最小分割大小/比例。 我的感觉是,应该选择尽可能大的尺寸(力争达到 50%),同时密切关注每次分割生成的 LogWorth 值。 我认为分割尺寸太小可能类似于面临 II 类错误的风险。 那么,除了我所建议的之外,如何确定使用什么比例呢?
另外,我假设分区模型没有考虑对多重比较进行校正,为什么当保存结果分割并执行 2x2 应急分析时,初始分割的 LogWorth 等效 p 值与 Fisher 精确结果不匹配?
数据混合和清理预测建模和机器学习回复:分区建模:什么决定了最小大小分割?亲爱的DS
再次感谢您的详细回复,这非常有用。 我必须承认,尽管我在 Filemaker 中作为一名程序员颇有成就,但我从未真正探索过 JSL,但这也许正是我需要这样做的动力。 关于 R^2,我意识到了这一点,并且确实监控了该系数的分割历史。 幸运的是,我偶然发现了很少公开的使用排除行进行验证的做法,这似乎与正常操作期间的习惯最违反直觉。
回复:分区建模:什么决定了最小大小分割?你好@34南,
XGBoost真的很强大而且很稳定。 如果您多次重新运行它,您会得到相同的答案,但对于引导森林或提升树而言,情况并非总是如此。
我找到了这个网站对于如何调整 XGBoost 和改进模型非常有帮助。 而且,由于它是为运行 Python 的人编写的,因此您应该可以开始使用。
您是否考虑过编写适合例程的脚本,以便可以自动化某些过程并可以在无人监督的情况下运行? 从长远来看可能会更快。 我在 JMP 中搜索其他基于树的平台的调整参数空间时会这样做 - 通常运行 30k 以上的计算。 根据平台的不同,它可能需要 8-10 个小时,但我只是让它运行,而我做其他事情。
您肯定需要监控 R^2 进行训练和验证,以确保不会过度拟合数据。 我现在正在尝试运行一些模型,但我发现到目前为止,在 Neural Net 和 GenReg 平台上,它返回的 R^2 验证集比训练集大,这是一个很大的警告符号。 就我个人而言,我认为这是因为我拥有的数据集以及数据的高度非正态分布。
将测试数据放在一边是一件非常好的事情 - 实际上从训练数据表中删除这些数据,这样 JMP 在运行拟合时就无法访问它们。 我之前有过这样的经验,即使我隐藏并排除了某些行,数据在交叉验证期间仍然被使用,因此当比较测试数据集的实际图与预测图时,它看起来比实际情况更好,因为一些测试数据正在用于训练。
DS
回复:分区建模:什么决定了最小大小分割?亲爱的DS
感谢您的详细回复。 不幸的是我没有专业版($$$)。 我在此期间采取的方法是指定 20% 进行验证,然后从 45% 的最小大小分割开始。 如果失败,我会将其减少 5% 到 40%,依此类推,直到实现拆分。 然后,我会以 1% 的增量对其进行微调,但将其限制在 LogWorth 值表明显着性的位置。 或者,我将分割设置为原始集中的失败计数,或稍高一点,以实现将 100% 的失败案例放置到分割定义的结果子集中之一。 我接受您关于测试集的观点,并且会尝试这样做,前提是仍有足够的数量用于验证和培训。 安装 Python 后尝试了 XGBoost,但要让它发挥作用需要一个学习曲线。
回复:分区建模:什么决定了最小大小分割?你好@34南,
您是否拥有 JMP Pro 或可以访问 JMP Pro? 我问这个问题是因为分区平台不是生成预测公式的最佳(最稳定)方法。 Boosted Tree 和 Boostrap Forest 平台要好得多。 或者,如果你可以访问更高版本,也可以运行XGBoost平台,它非常稳定。
但是,关于你关于最小尺寸分割的问题。 最小尺寸分割控制树“树桩”的复杂性。 如果拆分中的观测值数量小于您设置的值,则不会生成拆分。 当您在决策树中使用提升时,它并不是太相关,但可以用来控制它。 您不希望它太小(即 1 个观察值),也不希望它太大(例如 1000 个观察值)。 对于简单的树方法来说,一个好的典型起始点约为 5。 如果您使用的是引导森林平台之类的东西,您将需要使用 N/2 来进行分类方案,就像您正在使用的那样 - 其中 N 是观测值的数量。 您可以通过调整此参数来调整模型,然后将其与测试数据集上的不同模型进行比较。
如果您有足够的数据,我建议拆分一部分(可能是 20-25%)并将其保留为不用于训练或验证模型的测试数据集。 利用剩余数据,您可以生成包含训练和验证数据(例如 80/20)的分层验证列,以优化模型的复杂性,同时防止模型过度拟合。 生成多个模型后,您可以使用以前的测试数据来比较哪个模型实际上更能正确预测结果。 由于您正在寻找二元决策模型,您甚至可以通过查看成本敏感学习来进一步优化它。
我不是 JMP 如何计算对数价值或 Fischer 精确检验的专家,所以希望 JMP 的人可以回答这个问题,但我猜测这与整个数据集和计算对数价值与保存时的情况有关分割公式并做列联表。
希望这会有所帮助——或者至少提供一些值得思考的事情。
快乐建模!,
DS