1. 引言
岭惩罚由Tikhonov于20世纪40年代提出[1],能够有效缓解特征间的多重共线性问题。软间隔支持向量机(Support Vector Machine, SVM)由Cortes和Vapnik提出[2] [3],通过引入松弛变量及相应的惩罚项,允许部分样本位于分类边界之外,即容忍一定程度的分类错误,使其能够适用于非线性可分的数据集。岭惩罚与软间隔SVM融合在面对多重共线性特征时,对特征系数进行均匀收缩,降低模型的方差,提升模型泛化能力,提高分类精度。但是,岭惩罚与软间隔SVM融合不能进行自动特征选择且同时完成高维特征数据分类任务。平滑剪切绝对偏差(Smoothly Clipped Absolute Deviation, SCAD)惩罚[4]旨在克服岭惩罚不会产生稀疏解问题,在较大系数时减小惩罚力度,从而减小估计偏差,同时实现特征稀疏选择。Natalia Becker [5]提出了一种融合岭惩罚与SCAD惩罚的软间隔SVM分类算法,该分类算法为医疗诊断任务提供了灵活且稳健的工具,尤其适用于如微阵列数据集等高维生物医学数据的分类与特征筛选。然而,传统的SCAD惩罚与软间隔SVM融合未考虑到先验信息对调谐参数的影响,这可能导致无法选择出最优的调谐参数,并且对于较大的调谐参数λ,传统的SCAD惩罚趋于平缓,降低了其惩罚效果。修正的SCAD惩罚是Ng和Yu [6]提出的一种结合了先验信息与样本信息的惩罚,并引入新定义的AIC的BIC克服了传统SCAD惩罚的缺陷,可以在保持良好特征选择能力和分类性能的同时,提高调谐参数选择的准确性和模型的泛化能力。
为了有效克服上述基于岭惩罚与传统的SCAD惩罚的软间隔SVM分类算法的局限性,本文将岭惩罚和修正的SCAD惩罚组合,并与软间隔SVM融合,构建了岭惩罚与修正的SCAD的软间隔SVM分类算法,并应用于心脏病诊断实例中。
2. 预备知识
2.1. 岭惩罚
软间隔SVM的惩罚项采用L2范数即岭惩罚[1]:
. (1)
岭惩罚通过对系数进行收缩以控制其方差。
2.2. 修正的SCAD惩罚
传统SCAD惩罚是Fan和Li [4]首先提出的一种非凸惩罚函数。Zhang等[7]将软间隔SVM算法与传统SCAD惩罚相结合进行特征选择。对于单个系数
的SCAD惩罚函数定义为:
(2)
其中
是定义超平面的系数,
和
是调谐参数。针对软间隔SVM算法的传统SCAD惩罚项具有以下形式:
. (3)
传统SCAD惩罚对于
和
之间的系数
采用二次惩罚(非线性缓惩),对于小系数
,传统SCAD惩罚采用与L1范数相同的惩罚,而对于较大的系数
,传统SCAD采用常数惩罚。
相对传统SCAD惩罚只结合了样本进行特征选择,修正的SCAD惩罚是一种结合了先验信息与样本信息的惩罚函数,它通过引入新定义的AIC和BIC克服了传统SCAD惩罚函数选取调谐参数的缺陷,对于单个系数
的修正的SCAD惩罚定义为:
(4)
其中
和
,
取决于样本量,修正的SCAD惩罚函数调谐参数可以通过新定义的AIC和BIC信息标准进行选取。针对软间隔SVM算法的修正的SCAD惩罚项具有以下形式:
(5)
2.3. 软间隔支持向量机
SVM的硬间隔分类器存在一定的局限性[2] [3],为此,软间隔SVM引入松弛变量,允许在一定程度上违反间隔约束,允许某些数据点位于间隔的错误一侧。松弛变量
被定义其错误分类点与对应的边距距离,对于边缘正确一侧的数据点
,对于边缘内部的数据点
,并对错误的分类数据点
。用代价参数
对非零
之和进行惩罚,然后将其添加到最小化问题的优化函数惩罚中:
,
, (6)
上述优化问题称为软间隔SVM,其中代价参数
是一个依赖数据样本大小的调节参数,它控制着最小化超平面的系数和训练数据集的正确分类之间的平衡。代价参数
常通过交叉验证进行选择。并且可以通过使用凸优化技术,即拉格朗日乘子法来求解[8]。凸优化技术为超平面参数
和
提供了解决方法:
, (7)
其中
是Lagrange乘子,
为正的数据点称为支持向量。所有位于其边距正确一侧的数据点
,因此,它们对超平面没有任何影响,可以重写上述方程如下:
(8)
其中支持向量
的指标集由
,对于任意
,当
时,由
可计算出系数
。在实际应用中,对于
所有解的均值被用于数值稳定性。
3. 基于岭惩罚与修正的SCAD惩罚的软间隔SVM分类算法
3.1. 基于岭惩罚与修正的SCAD惩罚的软间隔SVM分类模型
如第一节引言所述,基于岭惩罚与传统SCAD的软间隔SVM分类算法具有一定的局限性。为了有效地克服此局限性,本节首先将岭惩罚与修正的SCAD惩罚组合成新的惩罚,新的组合惩罚函数如下:
, (9)
其中
,为调谐参数。可以看出,当岭惩罚的调谐参数收敛到零(
),组合惩罚提供了稀疏性、连续性和渐近正态性。将新的组合惩罚与软间隔支持向量机融合,构建基于岭惩罚与修正的SCAD惩罚的软间隔SVM分类模型。首先给定目标函数如下:
, (10)
其中
,为调谐参数。同时为应对高惩罚或约束下AIC和BIC的局限性,引入了一个受约束的信息准则,AIC和BIC表达式如下:
(11)
(12)
其中
是似然函数,
是样本量,其中
定义如下:
(13)
其中
是考虑惩罚和约束的帽子矩阵,
的定义如下:
, (14)
其中
是设计矩阵,
是惩罚设计矩阵,
是约束矩阵,
是
的单位矩阵。最后,在给定约束条件下,合理选择AIC和BIC实现了模型拟合与稀疏性的平衡。该准则有效地惩罚小系数,同时最小化对大系数的影响。
3.2. 基于岭惩罚与修正的SCAD的软间隔SVM分类算法
上述3.1构建的基于岭惩罚与修正的SCAD惩罚的软间隔SVM分类模型的求解算法,类似于岭惩罚与传统的SCAD惩罚的软间隔SVM分类算法[5]。为了方便起见,将修正的SCAD惩罚从
重新命名为
。相应地,惩罚的一阶导数记为
,即
(15)
则目标函数式(10)表示为:
. (16)
对于每一个
,损失项可以根据
,
给定接近
的最小值的初值
,考虑如下局部近似表达式
,
当
接近于零时,设
,否则使用修正的SCAD惩罚项的近似表达式:
,
其中,由于修正的SCAD惩罚项的对称性,使用
代替
。
的局部二次近似具有以下形式:
通过对
关于
和
的最小化,可以省略不含优化参数
和
的项(因为常数的导数为零)
为了将方程写成矩阵形式,定义如下:
,
,
其中
.
此外,定义矩阵
,其中
是长度为
的全1向量,
是第
个输入向量。设
,
,
,
,
且
.
因此,最小化
等价于最小化二次函数
. (17)
上述解满足线性方程组
. (18)
基于岭惩罚与修正的SCAD的软间隔SVM分类算法通过以下迭代算法实现:
步骤1:设
,初始化
支持向量机指定初始值
;
步骤2:存储第
次迭代的解:
;
步骤3:通过求解
最小化
,并将解表示为
;
步骤4:若
,则
为最优解;否则,令
,转到步骤2。
4. 数值实验
本节针对基于岭惩罚和Lasso惩罚[9]的软间隔SVM (SVM-L2-L1)、基于岭惩罚和SCAD惩罚的软间隔SVM (SVM-L2-SCAD)、和基于岭惩罚和修正的SCAD惩罚的软间隔SVM (SVM-L2-modSCAD)等三种分类模型和算法进行数值实验。实验数据来源于UCI机器学习库的克利夫兰心脏病数据集[10],数据集包含14个特征变量,包括年龄、性别、心绞痛类型、静息血压、血清胆固醇、最大心率、心电图结果等,目标变量为是否患有心脏病(表1)。
实验过程。首先,数值实验根据目标变量是否患有心脏病将数据按照等比例分划分到训练集和测试集,训练集和测试集比例为8:2。其次,设定一个大的调节参数区间,来选取最优调谐参数,以确保调谐参数不陷入局部最优,其中SVM-L2-SCAD的两个调谐参数在选取的时候遵循的原则也不相同,选取调谐参数
和
分别采用网格搜索法和给定的AIC与BIC进行分别选择。对于SVM-L2-modSCAD中的
Table 1. Partial data table of the Cleveland heart disease dataset
表1. 克利夫兰心脏病数据集部分数据表
序号 |
年龄 |
性别 |
心绞痛类型 |
静息血压 |
血清胆固醇 |
最大心率 |
心电图结果 |
是否患有心脏病 |
... |
1 |
63 |
1 |
3 |
145 |
233 |
150 |
0 |
1 |
... |
2 |
37 |
1 |
2 |
130 |
250 |
187 |
0 |
1 |
... |
3 |
41 |
0 |
1 |
130 |
204 |
172 |
2 |
1 |
... |
4 |
62 |
0 |
0 |
140 |
268 |
160 |
0 |
0 |
... |
5 |
63 |
1 |
0 |
130 |
254 |
147 |
1 |
0 |
... |
6 |
53 |
1 |
0 |
140 |
203 |
155 |
0 |
0 |
... |
注:性别:0为女性,1为男性;心绞痛类型:1为典型的心绞痛,2为非典型心绞痛,3为非心绞痛,4为无症状;心电图结果为最高运动ST段的斜率:1为上坡,2为平坦,3为下坡;是否患有心脏病:1为患有心脏病,2为未患有心脏病。
惩罚函数参数k,采用设定网格进行搜索,以调控其惩罚强度。然后,为确保模型稳健性,采用十折交叉验证的方式在训练集中评估各参数组合的性能,并选择最优组合。最后,利用估计的调谐参数计算分类超平面。数值实验评价指标见表2。
Table 2. Evaluation metrics of three classification models
表2. 三种分类模型评价指标
模型 |
测试误差(%) |
灵敏度(%) |
特异性(%) |
AUC值 |
SVM-L2-L1 |
14.11 |
84.38 |
86.21 |
0.9052 |
SVM-L2-SCAD |
15.39 |
84.38 |
86.21 |
0.8782 |
SVM-L2-modSCAD |
11.48 |
90.62 |
88.72 |
0.9246 |
结果分析。由数值实验结果可以看出,SVM-L2-modSCAD模型在测试误差(11.48%)、灵敏度(90.62%)、特异性(88.72%)以及AUC值(92.46%)表现最优,表明该模型在整体分类准确率以及识别心脏病患者(正类)和非患病个体(负类)方面更为准确,同时,其AUC值也最高(0.9246)。此外,SVM-L2-modSCAD模型成功筛选出7个关键特征,包括性别、胸痛类型、运动诱发心绞痛、ST段压低、ST段斜率、主要血管数和地中海贫血类型,这些关键特征在临床上均被认为与心脏病密切相关。其中,ST段斜率是评估心肌缺血和心肌功能异常的重要指标,在心脏病早期筛查中具有重要意义。值得注意的是,该特征未被SVM-L2-L1与SVM-L2-SCAD模型识别出来,这说明SVM-L2-modSCAD模型在特征选择上具备更强的识别能力和解释力。SVM-L2-modSCAD模型通过合理控制惩罚项的非凸程度,不仅在维持良好预测性能的同时有效减少了冗余变量,还增强了模型在临床诊断中的实用性和可解释性,显示出其在医疗数据建模中的综合优势。此外,从复杂度角度来看,本文所提SVM-L2-modSCAD模型(线性核)与上述已有模型(线性核)的时间复杂度均为O (np) (n为样本数,p为特征数),空间复杂度也未变化。从运行时间来看,SVM-L2-L1模型运行时间为2.31秒,SVM-L2-SCAD模型与SVM-L2-modSCAD模型运行时间均为10.02秒,本文所提SVM-L2-modSCAD模型与SVM-L2-SCAD模型运行时间相同,比SVM-L2-L1模型运行时间长,主要是因为模型中加入了信息准则(AIC和BIC)选择最优调谐参数
时的循环判断,增加了模型运行时间。
综上所述,SVM-L2-modSCAD模型在复杂度不变、运行时间差别不大的情况下,具备较强特征筛选能力,在兼顾模型拟合与泛化性能的同时实现了更优的分类效果,体现出更好的实用性。三种分类模型和算法特征选择数目与各参数具体结果如下表3。
Table 3. Parameter values of the three models
表3. 三种模型的参数值
模型 |
参数
|
调谐参数
|
特征数量 |
k |
SVM-L2-L1 |
7.5646 |
- |
6 |
- |
SVM-L2-SCAD |
0.8111 |
0.0042 |
6 |
- |
SVM-L2-modSCAD |
0.8111 |
0.4832 |
7 |
1.5 |
5. 结论
本文提出了基于岭惩罚与修正的SCAD惩罚的软间隔SVM分类模型与算法,该分类模型与算法同时考虑了样本信息与先验信息,发挥了修正的SCAD惩罚在减少估计偏差和保持稀疏性方面的优势,同时利用岭惩罚提升了算法的在特征选择上的稳定性,是基于岭惩罚与传统的SCAD惩罚的软间隔SVM的重要拓广。通过心脏病诊断实例验证,相对于SVM-L2-L1与SVM-L2-SCAD分类算法,该分类算法具有更优的灵敏度、特异度和分类能力。尽管如此,本文研究尚存在局限性,如,本文所选择的数据规模相对较小,在大规模数据场景中,尤其是涉及高维特征或超参数网格密集搜索时,模型训练成本会急剧上升,进而影响本文所提方法的可扩展性。
基金项目
国家重点研发计划项目(项目编号:2023YFC3209403-04-05)。
NOTES
*通讯作者。