基于SMOTE欠采样的随机森林卡钻风险评估方法
2023-08-15易思琦
易思琦,魏 凯
(长江大学石油工程学院,湖北武汉 430100)
钻井工程面临地质构造复杂、影响因素众多等特点。在钻进过程中极容易发生各类安全事故[1]。据雷斯特能源报告显示,在过去三年的石油勘探开发钻井中,勘探成功率只有42%;基于现有卡钻风险评估方法存在的成本高及分类性能差等问题,提出了基于SMOTE欠采样的随机森林卡钻风险评估方法。该方法通过数据处理,降低了样本集的不平衡性[2]。随着石油技术不断发展以及业务数据指数级上升,机器学习和钻井工程结合已经成为必然的趋势,其发展为海量数据的存储和计算都提供了新的解决思路。
1 卡钻概述
卡钻指的是钻进过程中钻具无法活动的一种现象[3]。其产生与地质情况、钻井液性能、操作标准等都有关联。其类型包括压差卡钻、吸附卡钻、坍塌卡钻、砂桥卡钻等,不同卡钻类型其原因和危害程度都不同[4]。基于此,建立合理的卡钻风险评估模型十分必要[5]。在钻井过程中,专业人员通过将参数分为可变和不可变两大类(可变参数一般指工程参数,不可变参数一般指地层参数),动静结合地对钻井情况进行分析[6-10]。在特定条件下,钻井状态的某些参数和状态呈线性或强相关联系;当卡钻事故发生时,部分参数数值也会随之发生改变。
2 基于SMOTE欠采样的随机森林卡钻风险评估模型
2.1 SMOTE过采样
合成少数类过采样(SMOTE)通过生成少数类样本而改变不平衡数据集数据分布的采样方法[11],其本质是选定某个少数类样本a,然后随机在最近邻样本b和a的连线上选点生成新数据[12]。相较于传统的采样方法而言,他的模型拟合度更低,在解决不平衡数据集上效果更好。详细步骤为:①选定少数类样本A以及其对应的K近邻样本值B,其中,B与A之差为AB之间的特征差向量;②在[0,1]区间内随机抽取实数,将抽取的实数i值作为权值,将权值i与差向量相乘[13];③将样本A的特征向量与上一步所得乘积相加得到合成样本。
实际钻井中,存在卡钻样本数量少,整体样本分布不平衡等问题[14]。因此,为了提高预测精确度,增加少数类样本对模型构建的敏感程度,有必要采用SMOTE过采样方法进行采样,来提高数据对模型的适应能力。
2.2 随机森林卡钻风险评估模型
2.2.1 特征处理
科学的数据预处理在提高模型计算力的同时,能够带来高质量的决策[15]。构建随机森林模型过程中,需要选取卡钻事故发生过程中波动明显的参数作为特征向量,补全缺失值后进行特征处理工作。
经过处理后的样本,将保留与其他参数相关性低和对预测结果影响高的部分。其中,样本集特征向量X=[X1,X2,X3,X4,X5,X6,X7]=[转速、泵压、黏度、泥浆体积、含砂量、排量、泥浆密度],输出的风险类型Y=[0,1](其中0代表正常,1代表卡钻)。另外,为了方便将随机森林算法和其他算法进行对比,本文对数据进行归一化处理,即遍历样本集中数据,将最值记录后,以差值为基数进行除法计算(图1)。
图1 特征处理流程
2.2.2 随机森林
随机森林算法是一种集成学习的分类回归算法,较传统的机器学习方法而言,具有性能好、稳定性高的优点。实际情况中存在钻井样本数据量大且样本分布不均这些问题,故本文选择随机森林模型来对卡钻事故进行预测。各类机器学习方法优缺点如表1所示。
表1 机器学习算法优缺点
随机森林模型会在自动采样后根据基尼系数建立多棵由根节点、叶子节点和子节点组成的决策树,再基于多数投票法原理对这些树的决策结构进行判断,从而给出决策结果。通过建立决策树,可以明确不同指标所对应的级别。
本文选择最小二乘法来构建决策回归树。首先,该算法会将转速、泵压、黏度、泥浆体积、含砂量、排量、泥浆密度等特征向量所拥有的区域划分为两个子范围区,并计算其对应的输出值;在这个过程中,算法会不断重复这一步骤,直到划分的子范围区满足要求。然后,再根据该区域划分的M个子区域来构建决策树。
其生成决策树公式为:
(1)
式中:Rm为划分后的m区间,Cm为该区间响应的输出值;I为指示函数,满足括号内条件时取值为1,否则为0。
基于随机森林的机制,在采样建模后约有三分之一的钻井随钻数据将不会被使用,通过这部分数据,产生的基学习器可以进行包外估计,以此来泛化误差eoob。其计算公式为:
(2)
式中:|D|为原始数据集D的大小;II为误差函数,其值为预测正确率;x和y分别表示未被训练的原始样本输入输出值,Hoob为样本x的包外预测值。
综上所述,基于随机森林算法的卡钻风险预测模型构建步骤主要为:①从经过SMOTE采样后的钻井事故数据中随机抽取样本,构造决策树;②选取特征以最小方差准则筛选最优分割点,达到分裂条件后停止;③每棵回归树都会产生结果,根据多数投票法,决策出最终结果。
2.2.3 参数调优
利用网格搜索方法可以对决策树进行最大深度寻优,在穷举法原理基础上进行模型参数优化。通过设置参数的取值范围,可以计算相关联的节点值,通过对比均方误差,得到较优参数组合,对包括特征最大值、子树数量、树最大深度等在内的关键参数进行优化,从而提升模型预测的精确度。为了实现这一功能,本文选定sklearn库中的GridSearcherCV方法进行参数选择,该方法可以对分类器输入指定参数名称,然后分类器会将数据转换成字典格式传入该分类器的函数,从而计算出最佳参数组合。
3 结果分析
3.1 评价指标
基于随机森林的卡钻风险模型建立后,在混淆矩阵的基础上,需要对模型的分类准确度(Accuracy)、召回率(Recall)、虚警率(FPrate)和精确度(Precision)等指标进行计算和分析,以此来确定模型是否符合标准。该矩阵中,其列代表的是预测的正常和卡钻类的实例,而行代表的则是实际的类结果。基于卡钻的混淆矩阵如表2所示。
表2 卡钻分类
基于此,各评价指标的计算公式如下:
(3)
(4)
(5)
(6)
通过上述评价指标,来检验基于SMOTE采样的卡钻预测模型是否能够应用于实际,其具体来说就是,在确保正确率的基础上,使召回率、精确度等指标尽可能地高。
3.2 算例分析
按照上述方法,选取某地区25口井的钻井数据作为训练样本,借助Spyder实现平台,基于sklearn库建立卡钻安全事故预测模型。对样本集SMOTE过采样后,再对模型参数调优(图2)。
图2 随机森林处理流程
所建模型参数为:子树数量25,分裂内部节点最少样例数60,叶子节点最少样例数10,树最大深度5。样本输入模型后,该算法会随机抽取特征并构建多棵熵值下降最快的决策树。
通过观察建立的不同决策树,发现当转速均值小于0.409,泵压均值大于0.701时(归一化值后),卡钻概率大大增加。对比原始钻井样本预测结果后发现,经过SMOTE处理过的数据集表现性能更好,其训练模型对存在的风险数据更敏感。故基于SMOTE欠采样的随机森林卡钻风险评估模型在处理实际问题时具有更大的优势。
为了直观地对风险模型进行评价,一般采用式(3)~(6)来计算各个事故类型的分类准确度、召回率、虚警率和精确度,其结果见表3。
表3 不同算法评价
为进一步验证基于SMOTE欠采样随机森林卡钻风险评估方法的优越性,选取不同地区多组不平衡钻井数据做检验,利用不同算法来完成对测试集的预测。测试样本预测准确度图3所示,基于SMOTE欠采样随机森林算法在处理非平衡数据回归问题上具有良好的性能。
图3 不同算法预测准确度
4 结论
1)SMOTE欠采样方法对样本进行处理,可以最大程度上保留多数类中的有效信息,提高模型对于少数类样本的敏感程度,从而提高井下复杂事故预测准确度。
2)在建模时运用了基于代价敏感性学习思想的随机森林方法,随机森林在处理海量数据和不平衡数据方面都有优异的性能,符合钻井工程发展的趋势。
3)受原始数据影响,基于SMOTE欠采样的随机森林卡钻风险评估方法仅采用单一地区部分数据集进行建模及预测,且样本中特征量较少,未涉及到模型在高维度不平衡数据集上的应用。因此,在后续的建模中,应当训练模型在不同地区不同数据集上的适应能力。