高中时我最喜欢的课程是地球科学。我记得在气象学部分每天都会读取天气数据。每天早上,我们都会到户外测量干湿球温度、风速和风向,并估计云量。有一两次,我们回到教室却发现阅读内容没有完成或没有意义。没问题,我们回到外面重新测量——走 50 步并重新测量没什么大不了的。
问题
快进到大约 18 年,我正在开发Helix Q4000 ,试图从脚下一英里的沉积物中获取甲烷水合物样本。我们花了超过 24 小时才获得第一个核心。当它到达表面时,一切都不起作用:样品被减压,回收的约 10% 的沉积物只是汤。与我在高中时的温度读数不同,我们无法返回并再次尝试 - 沉积物样本永远消失了。
这是地质学家和工程师在恶劣的地下环境中经常面临的挑战。获取数据的成本很高,而且您只能获得一次机会。那么,当数据没有按预期返回时,您该怎么办?也许该工具在深度发生故障,或者更糟的是,被卡住,整个井都必须废弃?我们怎样才能利用我们所掌握的少量信息并对其进行有用的理解呢?当然,我们可以使用JMP Pro强大的预测工具!
本实验
Input parameters of Gamma (blue), Formation Density (red), Compressional Velocity (green), and Shear Velocity (purple). Interval one is >2064 ftkb and is above the black upper black line, interval two is between the two black lines (2065-2127 ftkb), and interval three is below the black line (2128-2206 ftkb).输入参数:伽玛(蓝色)、地层密度(红色)、压缩速度(绿色)和剪切速度(紫色)。区间一大于 2064 ftkb,位于黑色上黑线上方,区间二位于两条黑线 (2065-2127 ftkb) 之间,区间三位于黑线下方 (2128-2206 ftkb)。
让我们比较一下预测不良获取变量和更稳健变量的几种不同方法。在本例中,我们试图了解碳氢化合物饱和度(甲烷水合物),这在该特定井( 阿拉斯加州北坡埃尔伯特井)中很少获得。我们拥有的是完整的四个变量集:伽马射线、地层密度、压缩速度和剪切速度。在地下,存在三个含水合物砂层段,我们希望使用第一个层段(方钻杆套管下方 2003-2064 英尺,ftkb)来预测较低的两个层段(2065-2127 ftkb 和 2128-2128 ftkb)的水合物饱和度。分别为 2206 ftkb。我们将测试不同的预测模型:标准最小二乘法、广义回归、神经网络和 XGBoost。我们将使用 R2 值作为模型质量的第一步,但随后将定性评估实际与预测测井曲线,以评估每个模型的整体质量。
结果
Actual hydrate saturation (blue) compared to predicted hydrate saturation for Standard Least Squares (red), Generalized Regression (green), Neural Network (purple), and XGBoost (burnt orange).实际水合物饱和度(蓝色)与标准最小二乘法(红色)、广义回归(绿色)、神经网络(紫色)和 XGBoost(焦橙色)预测的水合物饱和度进行比较。
标准最小二乘法并不能解决这个问题。它对区间 1 进行了稳健建模,但完全无法准确预测较低两个区间的碳氢化合物饱和度。广义回归(自适应;弹性网络)稍好一些,但通常会高估较低的两个区间 0.1 到 0.2 个饱和单位。机器学习模型的工作更加稳健,但我认为 XGBoost 更具优势。神经网络产生的信号非常“噪声”,因为存在大量的冲击,占预测的 10-20%,而 XGBoost 在低碳氢化合物饱和度和高碳氢化合物饱和度下都提供了更稳定的预测。
这是我在处理地质和/或井下数据时观察到的一个常见主题:自然系统非常复杂,充满异质性,而机器学习模型(Bootstrap Forest、神经网络和 XGBoost 等)往往能提供更好的预测整体模型。

Model results for validation data sets of XGBoost (top) and Neural Network (bottom).XGBoost(上)和神经网络(下)验证数据集的模型结果。
向前进
大多数在该行业工作的人都将拥有比单口井更多的数据。一种强有力的做法是使用聚类,利用地质参数(岩性、孔隙度、渗透率等)将井分组在一起,并按聚类构建预测模型。这种方法可以使您获得更好的结果,因为该模型是专门为特定区域甚至特定区域内的特定流域而构建的。除此之外,一个很好的做法是在图形生成器中对数据进行可视化漫游 - 尝试了解各个参数的情况,以确定最佳的前进路径。
最后,组织中数据分析的民主化将使您能够更快地实现更大的目标:将强大的工具交到用户手中,向他们展示如何构建和解释模型,然后坐下来享受!
数据源
该数据是通过美国能源部和 BP Exploration Alaska (BPXA) 之间的合作钻探协议收集的,并与美国地质调查局 (USGS) 以及几所大学和行业合作伙伴合作,以评估来自阿拉斯加北坡的天然气水合物是否可以开采。技术上或商业上可行的生产。埃尔伯特山井于 2007 年钻探,数据可通过哥伦比亚大学拉蒙特·多尔蒂地球观测站获取。我对数据进行子集化、清理并使其在JMP Public上的 JMP 表中可用(注意:如果没有JMP Pro ,GenReg、带 KFold 的 Neural 和 XGBoost 脚本将无法执行。此外,XGBoost 脚本需要 JMP Pro 和XGBoost 插件)。
恭喜你,亲爱的同事! 你的工作表现非常出色。 特别感谢您就集成模型方法提出的建议。 有一个美好的周末!
真挚地,
迈克尔
Michael,此特定数据集的均方根误差(JMP NN 报告中拟合的第二个测量值)在六个随机开始中的变化约为 0.01,相当小。 至于集成模型,在 JMP Pro 中您可以使用 Bootstrap 森林或使用提升在神经网络或决策树中。 所有这些功能均在 JMP 15 Pro 中提供。 我希望这有帮助!
好东西,彼得! 请告诉我 RMSE 是多少。 因为对于回归来说,RMSE 是主要 KPI。 希望这个参数不会发生太大变化。 现在请告诉我您如何在 JMP Pro 上制作合奏。 我的是 15.0,所以你的可能是 16,因为在 15 版本中没有遇到这些合奏。 我将非常感谢你!
非常感谢你的提问@纳扎尔科夫斯基,这是您提出的一个非常重要的话题。 我遇到过一些开创性的研究最终被撤销的例子,因为作者使用神经网络发现了非常强大的相关性,但当其他用户在相同的数据上运行相同的神经网络但使用不同的随机开始时,发现相关性大大降低。 这是集成模型真正可以提供帮助的地方(例如 Bootstrap Forest、Boosted NN 等)。 说了这一切并强调了这样做的重要性,我不得不承认我最初并没有这样做。 但我无法控制自己,在阅读了你的评论后,我回去并使用相同的设置和不同的随机种子重新运行了一系列神经网络。 平均验证集 R^2 为 0.92 +/- 0.01,仅比我最初发现的低一点。
感谢您提供如此内容丰富且写得详尽的帖子! 嗯,我还使用 JMP Pro 来处理化学相关的任务。
嗯,我的问题是关于神经网络(NN)的。 在 JMP 的回归案例中,即使使用固定随机种子,如果我们重新启动相同的模型,NN 的预测值也会因其所有指标(RMSE、R2 等)而有所不同。 对于分类,一切都是可重复的,维护指标。 您是否在保持相同条件的情况下重新排列您的神经网络模型?
谢谢!
迈克尔