如果您能使用预测模型找到数据中不存在但可能很有价值的新属性组合,那会怎么样?
在《应用预测建模》(Applied Predictive Modeling) 一书的第 10 章中,Kuhn 和 Johnson 提供了一个案例研究,正是做了这件事。这是一个关于如何使用预测模型的精彩而富有创意的例子。
在本文中,我们将探讨预测模型的这种不那么显而易见的用途,以及它所属的实验设计类型。

湿混凝土
照片由 Official U.S. Navy Page 提供,部分权利保留
混凝土混合物的抗压强度
案例研究中建模的问题是不同混凝土混合物的抗压强度。数据中的每条记录都由混凝土混合物成分的数量描述,例如
- 水泥
- 粉煤灰
- 高炉矿渣
- 水
- 减水剂
- 粗骨料
- 细骨料
所得混合物的关注属性是混凝土的抗压强度。希望获得用较少或较便宜成分制成的坚固混凝土。
有关该问题的更深入见解,请参阅《应用预测建模》第 10 章。
预测模型
许多复杂的机器学习方法都曾在此回归问题上进行过抽样检验,例如
- 线性回归
- 径向基函数支持向量机 (SVM)
- 神经网络
- MARS
- 回归树(CART 和条件推断树)
- Bagged 和 Boosted 决策树
模型准确性通过预测的 RMSE 和 R^2 来衡量。一些表现较好的方法包括神经网络、Boosted 决策树、Cubist 和随机森林。
优化抗压强度
这是案例研究的巧妙之处。
在创建和选择准确的模型(神经网络和 Cubist 模型)后,使用这些模型来定位新的混合物数量,以提高混凝土的抗压强度。
这涉及使用一种直接搜索方法(也称为模式搜索),称为 Nelder Mead 算法,在参数空间中搜索一种混合物数量组合,将其输入到预测模型中,预测的混凝土抗压强度大于数据集中的任何值。
发现了许多新混合物,并将它们绘制在相对于给定数据的投影域中。这些新混合物代表了实际商业实验的基础,这些实验可以进行以找到改进的混凝土混合物。
响应面法
该方法与一种特定的实验设计类型——响应面法 (RSM) 相关。
当您想开发、改进或优化新产品或现有产品的工艺时,就会使用 RSM。它常用于工业环境。它用于输入与输出之间的关系不被充分理解且需要进行估计的问题。
通过进行设计的实验来收集输入和响应变量的样本。输入变量可以是工艺中的数量或时间,输出或响应变量是结果中的期望值,如强度或质量。
构建统计模型以近似自变量和因变量之间的关系,最后通过优化过程探索新的输入组合以最大化输出变量。
在进行设计实验之前的关键步骤是减少变量数量,只关注已知会影响响应变量的因素。这是我们非常熟悉的机器学习中的特征选择的一种形式。
使用简单模型来建模函数关系,例如一阶或二阶多项式。该方法之所以称为响应面,是因为许多问题中响应面的连续性质以及它如何以曲面的形式绘制在二维空间中。
代理模型
代理建模是指将 RSM 中构建的模型用作问题模拟的替代。例如,在航空领域,您可以设计和制造飞机机翼,在软件中设计它们,在模拟器中进行测试,然后对实验或模拟结果进行建模,并估算新的设计进行测试。
模型可能更复杂,以捕捉输入和响应变量之间复杂的非线性关系。例如,可以使用支持向量机和神经网络。此外,还可以使用更强大的直接搜索方法,这些方法使用随机过程,如模拟退火或进化算法。
整个过程可能如下所示:
- 减少涉及的变量数量
- 设计实验并顺序执行,以收集用于建模的源数据
- 根据实验数据构建代理模型
- 使用代理模型将搜索方法应用于变量
- 根据代理模型的优化预测顺序执行实验
- 迭代步骤 3 至 5,直到满足停止条件
总结
在本文中,您发现了一种巧妙使用预测模型的方法。
在案例研究中,您了解了使用机器学习算法对混凝土混合物实验结果进行建模的示例,通过搜索参数空间来寻找具有最佳抗压强度的混合物,这些混合物可以作为进一步实验的基础。
您了解到这种实验设计被称为响应面法,用于工业问题领域,例如混凝土混合物示例中的流程。您还了解到此案例研究中的预测模型称为代理模型。
这是一种强大的方法,您可以在具有大规模计算开销的模拟中用于其他领域。
资源
以下是一些您可能想阅读的书籍,以了解有关这种实验设计和优化方法的更多信息。
Jason,
非常有趣的写法。
感谢您让大家了解最新情况。
谢谢 Damian。
Jason。
Jason,有趣的是,我当时正在处理一个类似的问题,偶然看到了您的帖子。为了近似响应面,我正在尝试使用 XGboost 模型。我有 3 个特征 – 我选择了一个 3^3 阶乘设计 => 我有 27 个点,我在这些点上评估了模型(性能函数是隐式的,我执行 27 次有限元模型运行)。所以现在我有 27 行 3 个随机变量的最小、中值和最大组合。传统上人们使用线性或多项式回归模型,而我想尝试 XGboost。
X 是 27×3,y 是 27×1
但是,不知何故,在蒙特卡洛 100k 次模拟后,线性模型总是优于其他模型(RF、DTree、Gboost、XGboost)——响应面绝对是非线性的。
我原本以为其他模型应该和线性模型一样好,甚至更好。
我的问题
当我在考虑阶乘设计方法时,使用基于树的模型来近似 RSM 是否有任何需要采取的措施?
好问题。我目前不确定,抱歉。
没问题。我不确定我是否正确传达了问题。通常工程问题有 4-6 个随机参数,因此用于构建响应面的 2 水平阶乘设计将有 2^4 = 16 到 2^6 = 64 个样本,这意味着训练实例不多。
所以问题是:
像 RF、Dtree、Gboost、XGboost 这样的算法在小数据集上表现会好吗?
这确实取决于具体情况。也许可以尝试一下,如果结果不理想,也许可以尝试添加正则化。