PLS平台未经验证改装+如何使用bootstrap?你好,
1) 我正在做 PLS,我有 42 个观察结果。 可能的预测变量的数量范围从 24 到 79 到 240,具体取决于我预选变量的数量。 我的 Y 是绝对值,要么是 2,要么是 3。 运行平台启动后,我进入 NIPALS/SIMPLS 部分,无论我使用哪种类型的验证(Kfold、保留、e 保留)或我选择多少个因素 - 我总是收到错误 - “最佳模型有0因素,改装未经验证”。有什么建议我可以做些什么来解决这个问题吗? 我真的很想使用 PLS,但是没有任何验证的建模只是过度拟合......
2)一旦得到结果,我就有了预测公式。 引导它的程序是什么? 我对引导结果的程序有很多不确定性;我希望 JMP 已经将引导引入到验证过程中。 我假设我需要对引导系数进行平均,但会引导该表重新运行,整个模型包括。 k 倍验证(如果有效的话)? 如果是这样,我应该使用中心和缩放数据还是原始系数? 我必须手动输入结果作为公式,所以我假设我应该引导原始系数,但是会使用中心缩放数据运行模型并提供原始系数,还是使用原始系数运行模型? 从过程的角度来看,整个过程对我来说相当不清楚,即一步一步发生什么才能达到我想要的结果;任何帮助/见解将不胜感激!
谢谢,
乌列尔。
预测建模和机器学习回复:PLS平台未经验证改装+如何使用bootstrap?你好@utkcito ,
现在我明白了“bootstrap”最初的含义——运行 bootstrap 平台是一个很好的方法,但您还需要使用神经网络、GenReg、boosted trees 运行预测模型,甚至获得 XGBoost 插件 -在验证测试集上比较不同的预测公式。 执行此操作时,您需要确保并调整您的设置,以便获得最佳的配合 - 默认配合并不总是那么好。
但是,树方法的一个好处是它是一种聚合方法,使用许多不同的决策树来建立模型。 如果这些因素的贡献不是很重要,它们将自动被推低,并且不会显示出对整个模型有很高的贡献。 尽管如此,由于随机启动和决策过程,引导森林和提升树方法并不是特别稳定——当您运行相同的设置数百次时,您会发现实际上得到的答案和公式略有不同。 这就是为什么最好在输出报告中引导“SS”或“部分”(例如,在引导森林中),以便更好地估计该因素在模型中的实际强度。
话虽这么说,您需要确保使用交叉验证方法来确保不会过度拟合。 而且,对于相对较短的数据表(没有那么多测量),如果不使用留一法,就很难做到这一点,除非您使用我在之前的回复中提到的自动验证方法。 K 折交叉验证对您来说可能也是一个好方法。
我不确定您的输入数据是什么样的,但听起来几乎就是 JMP 所说的“功能数据”,例如光谱或其他规则间隔的数据,其中每个波长(或 x 值)与其邻居相关。 您可能想要研究使用函数数据浏览器来生成更好的预测变量子集。 或者,PCA 也是降低预测变量维数并使用较小的正交向量集对数据进行建模的好方法。
至于你的观点:
1) 是否存在理论(生物、化学、物理)原因来包含 *2 阶乘方法中如此多不同的交叉项? 如果您没有理论上的理由将它们包含在内,那么它就没有多大意义,并且您可能会引入错误的预测变量。
2) 在 PLS 平台中,查看报告中“解释的变化百分比”下的累积 Y 响应也很重要。 如果你的预测变量的线性组合不能解释 Y 中的大部分响应,那么你解释的变异百分比将会非常低,这表明你的预测变量在解释 Y 中的变异的线性组合方面并没有做得特别好,并且不同的平台可能会运作得更好。 由于响应测量如此之少,尝试拟合如此大量的预测变量可能会导致过度拟合,因为您没有足够的自由度。 除了 PLS 之外,您可能还需要考虑查看多元分析下的因子分析平台。 我认为你的细胞因子变量可能太多了,你失去了自由度。 想象一下,有两个点并拟合一条直线,或者有三个点并拟合一条抛物线 - 您会得到完美的拟合,因为这正是拟合这些多项式所需的最小点数,但是,您会失去任何自由度,并且无法再估计误差或适合的质量。 我认为这就是 PLS 平台中正在发生的事情。
3)社区页面是最好的。 我总是检查它们,特别是当我在 JMP 中编码时检查 JSL 脚本。 几乎总是有一段别人已经解决的代码片段正是我工作所需要的。 我也喜欢回答问题并看看我能提供什么帮助,尤其是当我开始学习新东西时。
祝你好运!,
DS
回复:PLS平台未经验证改装+如何使用bootstrap?嗨,DS,
1)我有24到237个变量的原因正是因为它取决于我做了多少变量选择。 24是在bootstrap forrest之后,然后我可以做*2阶乘。 237是整套细胞因子。
2)“预测变量也需要与响应共变,否则你会得到这个错误 - 这意味着你的预测变量没有线性组合来解释你的响应的变化“你能解释更多吗? 我认为协方差是相互之间的,即它们是多重共线性的,并且 PLS 通过创建构成该协方差的因素来使用变量之间的协方差。 当你说他们必须与回复。 我很难想象,在 24、79 或 237 个细胞因子变量中(它们实际上是纵向测量的平均值、中位数和 IQR),它们的线性组合无法解释反应的任何变化(ICU 中的危重疾病);事实上,他们已经在其他设置中这样做了,所以我不明白为什么 JMP 会这样做。
3)感谢您对如何操作引导的解释,它更有意义,我尝试了它并且它有效。 我总是感到惊讶的是,JMP 的正式文档几乎没有什么帮助,关于它如何工作以及如何使其工作的细节很少,而论坛、教程等实际上有多大帮助。
多谢!
乌列尔。
回复:PLS平台未经验证改装+如何使用bootstrap?你好@utkcito ,
首先,PLS 可能不是用于数据的最佳平台。 最好将其作为 GenReg 或 Stepwise 运行,以查看哪些预测变量在模型中实际上很重要。 我确实觉得很奇怪,你的预测变量数量从 24 到 240 不等。 由于相对于可能的预测变量数量而言,观察结果如此之少,因此您确实应该进行一些预测变量筛选,以确保不会在模型中添加太多不必要的因素。 PLS 可以处理这个问题,但预测变量也需要与响应共变,否则你会得到这个错误——这意味着你的预测变量没有线性组合来解释你的响应的变化。 但是,如果您必须使用 PLS 并且没有其他选择,那么您可能需要考虑将您的响应从分类(2 或 3)更改为序数(2 或 3)。 也许能够找到更好的数值解。 我还强烈建议研究并使用自动验证检查大量预测变量的方法。
其次,当 JMP 执行任何拟合时,我相信在后台它总是使用中心化和缩放的数据来获得更好的估计值,然后返回计算实际估计值。 因此,最终引导程序是什么并不重要,但是它可能更有意义或更容易解释实际估计引导程序而不是中心化和缩放的数据。 是的,引导估计将使用您正在进行的验证重新运行拟合。
最后,为了引导估计值,您需要右键单击 JMP 报告中的列估计值,然后选择引导。 如果速度快,则可能输入 5000,但如果速度慢,则将其保留在 2500。 请务必选中“分数权重”框。 它将多次重新运行拟合,然后为您提供预测变量的每个系数的值分布(只需运行输出数据表中的“分布”脚本。 然后,随着显示的分布和统计,您可以右键单击汇总统计并选择“制作组合数据表”。 请务必自定义汇总统计信息以显示非零比例。
组合数据表将包含您的估计值的平均值和非零比例。 在那里,您可以看到平均值(典型值)以及估计值非零的频率(百分比)——如果该数字很小,则估计值通常为零。 如果它很大,那么大多数时候它不为零。 这是确定模型中需要或不需要哪些项和混合项的好方法。
希望这可以帮助,
DS