支持向量机的 SVEM 插件我有一个 DOE 结果,我想用支持向量机来建模(存在无法用多项式模型估计的强非线性效应)如何安装 SVEM 插件?
高级统计建模实验设计预测模型和机器学习回复:支持向量机的 SVEM 添加是的,提升树可能比随机森林“设计上”更精确,因为它们使用顺序树训练进行迭代预测误差校正。但在顺序树学习期间进行的复杂拆分可能只对训练集有效,可能无法反映新数据点上可能发生的情况。
随机森林是一种关于超参数的鲁棒算法,因此将树的数量增加到一定值以上可能不会改变性能评估,请参阅我在LinkedIn上的帖子和/或文章“可调谐性:机器学习算法超参数的重要性”: 1802.09596(arxiv.org)
回复:支持向量机的 SVEM 添加使用增强树时,R² = 0.85
回复:支持向量机的 SVEM 添加使用随机森林,即使有 2000 棵树,R² = 0.63 也很糟糕
回复:支持向量机的 SVEM 添加我不完全同意,基于树的模型之间存在更多细微差别:
- 提升树方法(如 XGBoost 等)使用按顺序训练的树来逐步优化和纠正预测。它们更多地受到训练集特征、大小、数据质量、数据点的重新划分、代表性等的影响,因为它们会迭代地尝试在训练的数据集上获得最佳预测(每棵树都会“纠正”前一棵树的最大预测误差)。
它通常是一种被描述为低偏差 - 高方差的算法:预测可能非常精确,但非常敏感/受所使用的训练数据集的影响。
- 随机森林使用在略有不同的数据集(引导集)上并行训练的树。该算法的良好预测性能来自对各个树预测的平均值。您可以将其视为“群体智慧”:如果您向某人询问鲸鱼的重量,答案可能非常不准确且不精确,但如果收集数百或数千人的答案并取平均值,则平均结果可能非常接近实际值。
它通常是一种被描述为中/低偏差 - 低方差的算法:预测可能是精确的(取决于单个结果的平均值和单个树的复杂性/数量),并且由于引导过程和树的单独训练(具有不同的特征),它们对训练数据集非常稳健。
以下是不同基于树的模型之间的简短视觉效果(我不喜欢随机森林中的各个树具有相同的结构,但这是一种简单的模式):

为了回答你的问题,我会在 DoE 等小规模数据集上尝试使用随机森林而不是增强树方法,以便对结果更有信心,使用不易过度拟合的算法,并具有更好的泛化特性。
回复:支持向量机的 SVEM 添加猜测基于树的模型(如随机森林和 XGboost)需要大量数据集,除非您可以将 SVEM 用于小数据集,对吗?
回复:支持向量机的 SVEM 添加你好@frankderuyck ,
很高兴知道!:)
我使用神经网络作为最后一种建模选项,有许多经典模型和更简单的 ML 算法表现同样出色(有时甚至更好)。这些其他选项的计算速度也更快,不需要扩展知识、测试和验证来微调它们(与 NN 不同,在 NN 中您必须指定架构、层数、函数类型、是否增强……或使用神经网络调整插件),并且更容易解释(就响应配置文件和相对因素重要性而言)。
对于表格数据,如果唯一能够表现良好的模型是神经网络,那么很有可能还会遇到其他问题,例如数据质量、代表性、缺失值/异常值、可重复性/可再现性等。
基于树的模型提供了良好的性能基准,通常是一种安全可靠的选择,请参阅文章“为什么基于树的模型在表格数据上仍然优于深度学习?” (2022) https://arxiv.org/abs/2207.08815
在您的屏幕截图中,似乎使用 Tuning 设计找到的最佳 SVM 模型非常有趣:
- 它使用 10 个支持向量,因此不到一半的点用于构建 SVM 模型中使用的“边界”/向量,这可能是低复杂度和良好泛化特性的良好标志,
- 曲率值(伽马)相当低,因此响应曲线和边界可能不会过于复杂和高度弯曲(因此,复杂度低且泛化性能好),
- 惩罚(成本值)似乎相当高,但在实际中,对于小规模的数据集,这种情况经常发生,因为任何错误分类/错误预测的点都会大大增加错误分类率/RMSE:25 个点中有 1 个错误分类 = 4% 的错误分类率,而对于更大的数据集,一个错误分类点的错误分类率不到 1%。在某些情况下,选择一个错误(RMSE/错误分类率)稍大但支持向量少得多的模型可能会很有趣:你会降低训练集的预测性能,转而选择一个不太复杂的模型,该模型可以在新数据上更好地推广。
您可以使用 Tuning 设计生成的表格以及性能指标来更好地评估两个超参数对性能指标的相对重要性和贡献(分类的误分类率,或回归的 RASE 和 R²)。
与往常一样,建议使用新的验证点来验证您的模型,以确保您的模型不会过度拟合。
回复:支持向量机的 SVEM 添加嗨,Victor,这个调整设计效果很好,我想根据来自 NIR 光谱 (FDA) 的三个 Y FPCA 来建模质量响应 Y。我尝试了神经网络,但即使使用 3 个 TanH 节点剖析器,在我看来,n 曲率也太高且不规则。调整后的 SVE 效果很好,我支持向量机器学习!


回复:支持向量机的 SVEM 添加你好@frankderuyck ,
在回答您的问题之前,先问几个问题:
- 为什么您想将 SVEM 用于 SVM?支持向量机是一种强大的 ML 算法,可用于 DoE 等小型数据集。有关算法稳健性的更多信息,请访问LinkedIn。
还有许多方法可以在不使用验证集的情况下评估 SVM 的过度拟合,方法是检查支持向量的数量以及惩罚(成本)和曲率(伽马)的值(如果您已经使用调整设计对 SVM 超参数进行了微调)...我正在考虑写一篇博客文章,关于在没有验证的情况下(例如在 DoE 数据集中)评估和防止稳健算法(SVM、随机森林)的过度拟合。
- 您是否还考虑过其他算法? SVM 是一种用于分析小型数据集的强大算法,但随机森林也可以提供良好的结果,并且可能是评估和比较性能的良好基准。有关LinkedIn 上随机森林的更多信息。
- 您的因子有多少个级别?只有当您的每个因子都具有足够的级别以实现平滑插值时,ML 算法才会有用。超过 3 个级别可能是一个好的起点。
关于 SVEM 的使用,您可以通过不同的方式访问它:
不过,我想强调的是,交叉验证(K-fold 或 SVEM)并不是真正的验证方法,而是一种“调试”方法,用于评估算法在各种训练和验证集上的性能稳健性。使用交叉验证技术后的主要困难是如何理解结果以及下一步如何进行:
对在各种折叠上训练的各个模型进行平均?用这些模型创建一个集成?保持最好的模型在折叠上进行训练(我不推荐这个选项)?通过交叉验证检查了稳健性后,在整个数据集上训练模型?...这个问题没有明确的答案,这与数据集、模型复杂性、性能改进、用户实践等有关……
有关交叉验证主题的更多信息,请参阅 Cassie Kozyrkov 的一些剧集: https://youtu.be/zqD0lQy_w40 ?si=41jfBs83Q0TIlusr
https://youtu.be/by59hsYO0Lg?si=XeZ33j2e4jKQPaRA
希望这个答案能帮助你,
回复:支持向量机的 SVEM 添加你好 Victor,有点耽误了...为什么你会选择随机森林而不是 SVEM 来建模 DOE 数据?
回复:支持向量机的 SVEM 添加你好@frankderuyck ,
这是两种不同的考虑:
- SVEM 是一种验证策略,可以应用于任何模型,从线性回归到神经网络。
- 随机森林是一种机器学习模型。
两者在建模时都有一个共同点,就是防止过度拟合:
- 随机森林使用引导样本和“ 袋外”样本作为“内部”模型验证。“袋外”样本是训练中未使用的数据的一部分:训练样本是在原始数据集中用替换法抽取的引导样本。理论上,你可以计算出,通过用替换法抽取原始数据,大约 1/3 的数据不会被抽取: 机器学习 - 随机森林袋外样本大小 - 交叉验证 (stackexchange.com)
该样本构成了随机森林训练中未使用的“袋外”样本,可以评估/验证模型的相关性和精确度。
- SVEM 使用反相关权重进行训练和验证,这意味着训练权重较高的实验将具有较低的验证权重。通过使用此验证设置拟合模型,然后更改权重并使用新的权重重新拟合模型进行训练和验证,您可以获得略有不同的模型,您可以将其组合/合并,以减少方差(并防止过度拟合)。
现在,我的个人观点和选择:
- 我经常看到的是人们使用 SVEM 进行 DoE,其 DoE 具有高度复杂的模型,甚至没有进一步考虑或进行先前的分析/建模。例如,您经常可以看到将 SVEM 应用于神经网络,以获得相对简单的设计和结果。对我来说,这听起来像是“用火箭筒打苍蝇”:我倾向于在增加复杂性(如有必要)之前选择最简单的选项/模型:奥卡姆剃刀。您还必须考虑您的因子有多少个级别以及其他考虑因素(如维数),因为机器学习模型是插值模型,非常有效地在点之间找到模式。因此,如果您的因子只有 2-3 个级别,那么这可能不足以真正从机器学习中获得好处。
- 如果您有足够的级别,并且传统的线性建模由于非线性关系而似乎不合适,那么您可能有兴趣尝试机器学习模型。
- 由于 DoE 的训练数据集规模较小但质量较高,因此您必须选择一个简单(无需或只需少量且易于微调的超参数)、稳健(对超参数值设置不太敏感)且不易过拟合的 ML 模型,因为您无法将 DoE 数据拆分为训练集和验证集。这就是随机森林(具有内部“袋外”样本验证)和 SVM(您可以通过超参数选择和支持向量数量评估过拟合可能性)的有趣之处。
另外,使用强大的 ML 算法而不是具有 SVEM 策略的复杂算法还有其他好处,例如计算时间更短、更容易解释。
希望这个答案能对你有所帮助,
回复:SVEM 插件支持矢量机器嗨,Victor,我尝试用这个方法处理混合模型的结果,得到了一个不错的模型,但是用分析器进行优化却失败了,因为各成分的平方和不是1,而是接近3。其他机器学习模型,比如PLS甚至Gen Reg,也出现了同样的问题。
回复:SVEM 插件支持矢量机器嗨,弗兰克,
您是否检查过混合因子是否具有正确的列属性?
- 具有低值和高值个体因素的“混合物”
- “设计角色”,角色设置为“混合”。
- 将“因子变化”设置为“简单”(如果您采用裂区/限制性随机化方案,则设置为其他类型)
以下是使用 CuSO4 因子的 Donev 混合物数据的示例:

从高斯过程(或任何其他机器学习模型)启动 Profiler 时,混合约束将被遵守并强制执行(混合因子之和始终为 1):
希望这个答案能解决你的问题。
回复:SVEM 插件支持矢量机器好的,维克多,谢谢!