最佳模型你好
我的问题是如何找到最适合我的数据集的最佳参数模型?
我想找到一个可以预测我的反应的参数模型
高级统计建模基础数据分析与建模回复:最佳模型你好@maryam_nourmand ,
您的问题涉及一个广泛的话题,在回答这个问题之前可能有很多问题需要解决和回答:
- 数据是如何收集的?观察性研究、实验设计……?数据集的代表性和完整性?探索性数据分析可能有助于检测回归模型中假设的一些模式和可能的缺陷,例如多重共线性,这可能需要采用 PLS 等适应性模型或 PCA 等预处理步骤。
- 模型的目标? 因果解释、预测和优化,还是两者兼而有之(也与可用的数据集和收集方法相关)?
- 验证策略/特征选择?例如,如何确保创建的模型具有正确的复杂度,同时仍具有良好的预测性能?您是否通过“标准”机器学习验证策略(使用交叉验证或训练/验证/测试分割)或通过基于可能性、信息标准(AICc、BIC)、p 值等的“统计导向”方法来评估模型性能和稳健性?请注意,模型复杂性也应直接受数据收集的限制:例如,如果您有 3 个不同级别的因子,则无法拟合高于二阶项的项。
- 评估/选择指标和阈值?您如何评估模型?选择过程/标准是什么:您是选择具有所选指标的最佳预测结果的模型,还是选择所有性能优于基准模型或简单模型的模型,......?您最终如何测试模型?
其中一些问题和答案已在之前的帖子中描述过:
https://community.jmp.com/t5/Discussions/Statistical-Significance/mp/765928/highlight/true#M94573
https://community.jmp.com/t5/Discussions/Analysis-of-split-plot-design-with-full-factorial-vs-RSM/mp/770579/highlight/true#M95183
创建、比较和选择模型需要与您的目标相关的评估指标以及选择一个或多个模型的阈值/标准。如果您只是想要最好的预测模型,您可以:
- 使用标准 ML 验证策略(例如交叉验证)或能够控制模型复杂性的策略创建模型,
- 使用一个或多个与预测准确性相关的指标,如 RMSE、MAPE……
- 根据指标和领域专业知识比较模型:哪一个模型最适合/与您的主题相关,哪些模型具有最佳性能,
- 选择使用所选模型来估计单个预测,以查看它们的不同之处,和/或使用组合模型来平均预测误差。
- 在“真实”情况/生产环境中测试模型。
您可能也会对这些资源感兴趣:
何时采用哪种模型?
指定和拟合模型
建立和理解预测模型
为相关和高维数据建立预测模型
使用 JMP Pro 构建更好的预测模型 - 模型筛选(它可能有助于筛选参数和机器学习模型选项并同时对它们进行比较)
预测模型
STIPS 模块 7:预测模型和文本挖掘
何时采用何种模型?(以及采用哪种建模类型?) - (2023-US-PO-1509)
使用模型选择标准在 JMP 中选择模型 - (2023-US-30MP-1456)
数据挖掘和预测模型
我希望这个第一个讨论能对你有所帮助,
回复:最佳模型
如果我想更精确地解释我的目标:
我有一个与癌症患者数据相关的初始数据集。我想找到一个最适合我的数据集的参数统计模型。使用此模型,我旨在模拟数据以应用模型截距的偏移。最终,我想看看我现有的机器学习模型能够多快在控制图中检测到这种偏移(即获得 ARL)。为此,我需要最适合我的数据的模型,以便我可以从中模拟数据。
回复:最佳模型嗨@maryam_nourmand ,
好的,那么您更可能采用数据挖掘方法,使用固定的观测数据集来尝试拟合可接受的预测模型。使用验证列(对特征进行分层)将有助于验证(避免过度拟合)并在生产数据上测试您的模型。在建模策略方面,您很可能会使用逐步方法来选择特征,并使用带有验证列方法的广义回归方法。
举个例子,我使用了 Kaggle 的 Cancer_Data 数据集来根据个体特征预测是否存在良性或恶性癌症: https://www.kaggle.com/datasets/erdemtaha/cancer-data ?resource=download
在主要关注特征之间的分布和相关性的首次探索性数据分析之后,我创建了一个验证列公式(对特征进行分层),其中训练/验证/测试集的比例为 70/20/10,然后使用带有验证列方法的广义回归模型,并将所有主效应特征和 2 个特征交互项作为模型中的可能项输入。我选择自适应弹性网络,因为特征具有很强的相关性,但也可能还有其他选择,例如 PLS 或 PCA 预处理。
然后,您可以保存该模型的公式,并使用预测分析器创建模拟,以评估特征对响应的影响,并可能估计增加噪声对预测响应的影响。
我希望这几个选项能对你的主题有所帮助,
回复:最佳模型您的回复让我不禁想问:您所说的“参数统计模型”是什么意思?我通常认为机器学习模型是非参数的,所以您在这里排除了这种模型吗?由于您说您有一个预先存在的机器学习模型,所以不清楚。您想比较参数和非参数模型吗?如果您使用模型筛选平台,您可以构建两种类型的预测模型。使用您发现的“最佳拟合”,然后您可以保存预测公式以进行模拟。我不完全确定您所说的“模型截距的变化”是什么意思,但我认为您可以将一个附加扰动放入公式中以生成模拟数据。
回复:最佳模型感谢您的答复。
但是我认为对于模拟,最好转到“保存列->保存模拟公式”部分,因为它包含一个模拟公式,我也可以用它来编写代码,对吗?
感谢您介绍该数据集。
但是,您有与包含多个阶段的治疗过程相关的数据集吗?我的意思是,第一次治疗后,疾病复发,进行第二次治疗,并记录治疗信息(例如药物剂量等)。如果您有这样的数据集,我将不胜感激,如果您能分享它。
回复:最佳模型是的,“参数模型”并不是指机器学习模型。
我寻找最佳参数模型的目标是模拟和生成比我的初始数据集数量更多的数据。我想为我的机器学习模型使用更多数据,但我希望模拟数据与我的初始数据集非常相似。
回复:最佳模型我不明白为什么你需要一个参数模型来实现这一点。你可以运行任何预测模型并使用 Profiler 模拟任意数量的额外数据点,为独立变量指定不同的值,并为预测添加随机噪声。也许我不明白你打算做什么,但我认为参数模型部分不是必要的。
回复:最佳模型通过“保存列->保存模拟公式”保存模拟公式和使用Profiler工具进行模拟有什么区别?
我使用参数模型进行模拟的原因是我想要获得关系和模拟公式,以便我可以编写相应的代码并循环重复此过程 100 次(以根据我在第一阶段构建的模型获得控制图的 ARL)。
如果我使用软件手动完成此操作,则会非常耗时且困难。
回复:最佳模型嗨@maryam_nourmand ,
这取决于你的目标是什么。
保存模拟公式可以帮助您评估模型的系数分布,方法是将诊断响应与诊断模拟公式切换: 模拟

模拟公式只是您可以从模型拟合报告中保存的预测公式的浓缩版本:您不是为每个类别和一个最终分类列保存一个概率列,而是只保存一个包含同一公式内的概率计算和分类的列。
如果您更关心模型在输入变化方面的稳健性,那么使用预测分析器中的模拟器,在输入变化的情况下(可能在输出中添加噪音)运行模拟实验可能会有所帮助。然后,您可以生成输入的变化,并可能改变特征的分布以查看它如何影响您的模型,以及增加噪音以查看您的预测模型的稳健性。
附注:与@dlehman1提出的观点相关:
我寻找最佳参数模型的目标是模拟和生成比我的初始数据集数量更多的数据。我想为我的机器学习模型使用更多数据,但我希望模拟数据与我的初始数据集非常相似。
为了模拟和生成与收集到的实际数据相似的数据,您必须“模仿”数据生成过程。如果您的 ML 模型发现了强非线性、相关性或其他模式,而参数模型没有考虑到这些模式,则应该使用 ML 模型模拟和生成数据,否则您将在模拟/生成的数据中引入强烈的偏差。我不明白为什么需要为这种用例建立一个单独的数据生成和预测模型。
请注意,无论模型的预测能力如何,它都只是对您试图理解和预测的现象的简化,因此从该模型生成的数据可能仍然或多或少存在偏差(并且可能产生比真实数据更少噪声的结果)。但按照您的意图评估其对数据变化的稳健性仍然是有用的。
抱歉,我没有包含多阶段治疗的数据集。我只是找到了这个,并用它来提供一个适合您用例的说明示例,仅此而已。
希望这个答案能帮助你,
回复:最佳模型@VictorG
我想我要学习一些新的 JMP 功能。请告诉我您在哪里找到的带有要切换的列的模拟窗口。我找不到它。我确实知道在哪里运行模拟实验,但我找不到任何提示保存模拟公式的地方。谢谢。
回复:最佳模型嗨@dlehman1 ,
可以通过右键单击模型平台的任何面板/报告来访问模拟功能: 启动模拟功能
这里以 SVM 模型摘要为例:

然后,系统会提示您选择要切换的列。在“模拟”的上下文中,您可以将其用于线性回归模型的参数估计,用模拟响应切换响应以评估参数估计分布,或者用于模型摘要以评估模型性能的一致性: 模拟窗口
关于模拟公式,可以在广义回归平台的“保存列”下找到并保存为选项之一:

我使用此“模拟”选项通过验证列公式评估机器学习模型的稳健性。使用此列作为模型对话框窗口中的验证,然后我可以模拟和切换这些列值,以表示具有相同分层或分组方法的略有不同的训练/验证/测试集。它可以帮助评估算法的稳健性(例如交叉验证也会启用: https://community.jmp.com/t5/Discussions/How-can-I-automate-and-summarize-many-repeat-validations-into/mp/632192/highlight/true#M83061 ),并可能通过微调超参数( https://community.jmp.com/t5/Discussions/Boosted-Tree-Tuning-TABLE-DESIGN/mp/609591/highlight/true#M81062 )来测试模型的性能改进(如果有的话)。
希望这个答案能帮到你,
回复:最佳模型再一次问好
例如看看这个模拟公式:
(-0.741104921699375)+0.0237113448295257*:体重+匹配(:性别,
0,(:年龄-33.8085106382979)*0.0091364700024452,
1,(:年龄-33.8085106382979)* 0,
。
) + (:重量 - 63.3936170212766) * 匹配(:家族, 0, -0.015643799304455, 1, 0, . ) + (:肿瘤大小 - 2.49893617021277) *
匹配(:family,0,0.441690642908435,1,0,.)+(:tumor size - 2.49893617021277)*匹配(:hyper,0,-0.346279666197286,1,0,.)
+匹配(:超,0,匹配(:解剖,0,0.354356313550484,1,0,.),1,匹配(:解剖,0,0,1,0,.),.)+(0.15468861367462)
+ 0) * 正切( Pi() * (随机均匀() - 0.5) )
我的项目需要这样的公式,因为我应该编写一个 Python 代码并生成 100 次来计算 ARL
我是否已经表达出我的观点了?