文 晶,郑扬飞
(华北计算技术研究所系统八部,北京 100083)
假释、暂予监外执行等接受过监狱改造的特殊人群,由于其社会适应性较差、心理状态不稳定,面对急剧变化的社会新环境,极易发生再次犯罪[1]。而一旦再犯罪则他们的作案手段会更加残忍,后果更加严重,对社会安全与稳定造成的威胁也将更大。相较欧美发达国家,我国目前假释比例明显偏低,导致监狱人口压力大、监禁负面效应多,严重影响假释功能及价值的充分发挥。而假释适用比例难以提高的根本原因就在于:我国对假释、暂予监外执行等社区矫正人员仍存在监管能力不足、矫正水平不高的问题。
在以上需求背景下,为了有效降低社区矫正人员再犯罪率,显著提升监狱服刑人员的假释适用比例,需要充分利用相关信息技术,提升司法机构社区矫正能力,加强对社矫人员的监督管理,提高矫正帮扶质量,促进社矫人员从特殊人群到守法公民的有效转变,实现治本安全,进而实现总体国家安全观。
综上所述,本文对社区矫正人员的相关数据进行分析,基于Stacking模型融合算法[2]构建标签生成模型,生成社区矫正人员的用户标签,并且提升预测准确度,为社区矫正人员用户画像[3]的建立奠定基础。
在介绍Stacking模型融合方法前,首先需要了解集成学习这个概念。集成学习(ensemble learning)[4]指的并非是某一个特定的机器学习算法,而是结合多个机器学习算法来构建模型去完成学习目标,也就是常说的“博采众长”。
集成学习主要包括:Bagging[5-6]、Boosting[7]、Stacking[8-9],它们分别使用并行、串行、树行的计算方法。本文用到的Stacking模型融合方法,即为使用树行计算方法的集成学习方法。由于人解决问题的思维是树形的,将模型树行化符合问题本身的逻辑,精确率和召回率呈稳态正相关。因此采用树行计算方法的Stacking方法可以整合不同模型的最好表现,使模型融合更加科学化,用以提升模型的预测准确率和泛化能力。
1.2.1 经典Stacking模型融合方法概述
Stacking模型经典的流程如图1所示。
图1 Stacking模型经典的流程图
Stacking融合模型一般分为2层内容。
第1层模型主要用于产生第2层模型的训练集数据(Training Data)。产生过程如下:
首先,训练集数据内容依图1所示,是用一个基础模型进行五折交叉验证的结果。k折交叉验证[10],就是先拿出k-1折作为训练数据,另外一折作为测试数据(Testing Data)[11]。每一个交叉验证产生的预测结果组合起来,作为第2层模型的训练集数据。另外,还要对数据集原来的整个训练数据进行预测,这个过程会生成5个预测数据集,对于这部分数据,本文将数据集各部分相加取平均作为下一层模型的测试集数据[12]。
第2层学习模型采用非线性模型,通过将第1层模型输出的结果作为训练数据训练模型,得到新的预测结果。通过将新的预测结果和第2层模型的测试数据集进行对比,观察预测准确度。
1.2.2 改进的Stacking模型融合方法
本文基于经典的Stacking模型融合方法进行改进,将其每一步验证中使用的单个相同模型,改为5个不同的机器学习模型进行预测。本文中建立的预测模型,即为改进的Stacking融合模型。
目前来看,利用社区矫正人员的基础数据得到其各类用户标签是急需解决的问题。通过建立模型预测社区矫正人员的用户标签有重大意义。本章利用某市社矫人员基础数据,基于Stacking模型融合方法[13]建立标签生成模型。
如图2所示,模型总体建立过程分为以下5个模块进行:数据采集模块、数据预处理模块(包括数据清理[14]和缺失数据处理[15])、特征工程模块[16]、Stacking模型融合模块、结论分析模块。
图2 模型训练总体框架流程图
2.2.1 缺失数据处理一般方法
处理缺失数据的方法[17-18]主要有以下3大类:
1)删除数据对象。
此方法简单易行,当数据表中的某些数据对象存在多个属性值的缺失,并且这些存在缺失属性的数据对象数目占比很小,由于删除这些对象对整个预测结果影响微乎其微,可以直接删除对象。
此方法存在局限性,当缺失信息的数据所占比例较大,或者当遗漏数据是非随机分布的时侯,这种方法可能导致数据发生偏离,从而导致结论错误。
2)数据空值填充。
此方法通常是利用统计学方法,根据数据表中非缺失对象的数据分布来对一个缺失值进行填充。数据挖掘中常用的有以下几种补齐方法:①人工填写;②特殊值填充;③平均值填充;④热卡填充;⑤K最近距离邻法;⑥使用所有可能的值填充;⑦组合完整化方法;⑧回归;⑨期望值最大化方法。
3)不处理。
利用贝叶斯网络和人工神经网络等方法,直接在包含少量缺失数据的数据集上进行数据挖掘。
2.2.2 缺失数据处理
本文中使用的数据是剔除了敏感信息的某市社区矫正人员的基本数据,共4514条。其中特征集合包括19个特征项,各个特征项的数据类型和缺失数据项情况如表1所示。
表1 特征信息缺失表
特征缺失信息特征缺失信息SEX无空数据项ZKNL无空数据项NATION无空数据项HYJTGX无空数据项EDUCATION_DEGREE4条空数据项JTCYHJZQK无空数据项MARITAL_STATE无空数据项JYZK无空数据项WORK_STATE无空数据项DSQJZDRSHJSCD无空数据项GLJB9条空数据项FXGLJZJSFQK无空数据项JZTJ1条空数据项JSJYQK无空数据项SHLY无空数据项WCSQFWQK无空数据项JYNL无空数据项JTRYBGXX无空数据项HEALTH389条空数据项
如表1所示,由于缺失数据删除后,对整体数据影响不大,所以本文处理缺失数据的方式有:1)由于缺失数据的信息数目占总数据的部分很小,所以删除缺失了数据的14行数据项;2)由于特征“HEALTH”缺失数据项过多,所以从特征集合中删除“HEALTH”特征。最终得到4500条无缺失的有效数据项,特征集合[19]包含18个有效特征。
本文使用的社矫人员数据经过数据预处理后,剩余的有效数据量为4500条,分为特征集合和分类标签2个部分。
2.3.1 特征集合
特征集合中包含社区矫正人员基础信息的18项数据项,如表2所示。
表2 服刑人员特征信息表
编号数据项简称说明1性别SEX1(男性)、2(女性)、9(未知性别)2民族NATION01(汉族)、02(蒙古族)等56项3文化程度EDUCATION_DEGREE01(文盲)、02(小学)、03(初中)、04(高中)、05(大专)、06(本科)、07(硕士)、08(博士及以上)、09(中专和中技)4婚姻状况MARITAL_STATE01(未婚)、02(已婚)、03(离异)、04(丧偶)5就业就学情况WORK_STATE01(就学)、02(就业)、03(务农)、04(无业)6管理级别GLJB01(宽松)、02(普通)、03(严格)7居住条件JZTJ01(有固定居所)、02(无固定居所)8生活来源SHLY01(依靠自己的工作收入)、02(低保或依靠家庭)9就业能力JYNL01(能自食其力)、02(不能或不愿自食其力)10自控能力ZKNL01(能够自我控制)、02(自控能力较差或有时不能自控)11婚姻家庭关系HYJTGX01(和睦稳定)、02(轻微冲突)、03(重大冲突或无亲属)12家庭成员配合矫正情况JTCYHJZQK01(理解支持)、02(有抵触情绪)、03(不配合矫正)13交友状况JYZK01(无不良交友情况)、02(有不良交友情况)14对社区矫正的认识和接收程度DSQJZDRSHJSCD01(认识正确轻易接受)、02(认识模糊有一定抵触)、03(缺乏认识拒绝接受)15服从日常管理及遵纪守法情况FXGLJZJSFQK01(服从管理严格遵纪守法)、02(基本服从但偶有违纪)、03(不服从管理或有严重违纪)16接受教育情况JSJYQK01(按要求接受,态度认真)、02(态度消极但经教育能改正)、03(不接受教育或基本未完成教育计划)17完成社区服务情况WCSQFWQK01(正常完成态度认真)、02(应付或基本完成)、03(未完成劳动计划)18家庭人员变故信息JTRYBGXX01(无变故)、02(死亡)、03(重病)
2.3.2 分类标签集合
如表3所示,此次分类标签共有4种。
表3 分类标签信息表
编号数据项简称说明1认罪伏法态度RZFFTD认罪伏法(01)、抵触情绪(02)、不认罪(03)2对社会的心态DSHDXT能够正确看待(01)、对现实不满或仇恨(02)3心理健康状况XLJKZK正常(01)、存在较轻程度心理问题(02)、确认存在心理障碍(03)4矫正惩戒情况JZCJQK给予警告(01)、给予治安处罚(02)、无(03)
从某市司法局得到的社区矫正人员初始数据共4514条,去除脏数据、无效数据、测试数据等,得到的最终有效数据为4500条。
2.3.3 特征选择
特征选择[20],也就是从数据集中找出并选择最有用特征的过程,是机器学习工作流中一个非常重要的步骤。不必要的特征降低了训练速度,降低了模型的可解释性,最重要的是降低了测试数据集的泛化能力[21]。
根据所需预测的4种分类标签,进行相应的特征选择。本文选择的特征选择方法是“基于树模型的特征选择”。
本文采用随机森林算法[22],通过树的模型训练可以计算每一个属性的重要性,从而根据重要性的值选择出重要的特征。sklearn.ensemble模块包含了2种基于随机决策树[23]的平均算法:RandomForest算法和Extra-Trees算法。这里使用Extra-Trees算法,得到相应影响标签结果的特征的重要性,根据重要性选出对预测结果影响最大的几个特征作为预测的特征集合。
特征选择过程如下:
model=ExtraTreesClassifier()
#设置ExtraTrees
model.fit(X,y)
print(model.feature_importances_)
根据以上算法,4个分类标签剪枝后选择的特征集合如表4所示。
表4 4类标签特征集合
编号数据项简称特征集合1认罪伏法态度RZFFTDEDUCATION_DEGREE、MARITAL_STATE、DSQJZDRSHJSCD、WORK_STATE、JTCYHJZQK、SHLY2对社会的心态DSHDXTDSQJZDRSHJSCD、SHLY、EDUCATION_DEGREE、WORK_STATE、JZTJ、JT-CYHJZQK3心理健康状况XLJKZKZKNL、EDUCATION_DEGREE、MARITAL_STATE、WORK_STATE、WCSQFWQK、SHLY4矫正惩戒情况JZCJQKEDUCATION_DEGREE、FXGLJZJSFQK、WORK_STATE、SHLY、MARITAL_STATE、GLJB
根据2.2节、2.3节中的方法处理数据后,得到相应的数据集合,基于Stacking模型融合算法建立模型。
Stacking建模过程:
1)加载数据。将特征数据和标签数据分别导入到数组MATX和MATY中后,采用随机森林的算法进行特征选择。
2)训练数据。本文中第1层模型由以下5个基础分类器组成:随机森林(Random Forest Classifier)、极度随机树(ExtRa Trees Classifier)、支持向量机(SVC)、k近邻分类(K Neighbors Classifier)、极端梯度提升(xgb.XGB Classifier)。采用n-folds方法进行多次模型训练,并将结果输入到第2层模型进行预测。第2层则采用逻辑回归(Logistic Regression)进行预测。
3)测试数据。将测试集数据输入模型,得到预测准确率。
通过不断实验调整参数值,当进行五折交叉验证时,各类标签的预测准确度较高,如图3所示。
由图3可知,经典的Stacking模型预测结果准确率平均值约为80%。由于实际要求中,对社区矫正人员标签预测的准确率要求较高,本文对改进算法进行了实验。
图3 经典Stacking模型预测准确率
通过不断调整训练数据和测试数据的比例进行实验,发现当训练数据和测试数据的比例为3000:1500即2:1时,实验模型的预测准确率最高。通过多次实验得知,当k-flods中k参数的取值分别为3、5、8时,得到的各个标签的预测结果准确率如图4~图7所示。
图4 认罪伏法态度标签预测准确度
图5 对社会的心态标签预测准确度
图6 心理健康状况标签预测准确度
图7 矫正惩戒情况标签预测准确度
由以上结果可知,本文实验基于经典Stacking融合算法建立的改进模型,预测4类社区矫正人员标签的准确率均在90%~95%之间,与经典的Stacking模型相比,预测的准确率提升了10%~15%。故本文中建立的改进的Stacking模型,对社区矫正人员用户标签生成具有较好的预测准确性和有效性。
将机器学习算法运用于社区矫正人员用户标签的预测具有实践意义。对社区矫正人员进行标签预测,可以用于建立社区矫正人员用户画像,进而完善社区矫正人员的规范管理技术平台。由于社区矫正人员及服刑人员数据的特殊性和保密性,导致其数据存在一定缺失情况,对模型的建立存在一定影响。
为了服务于社区矫正人员用户画像的建立,本文建立了改进的Stacking模型融合模型。在对某市司法局数据进行清洗和整理后,得到了4500条有效数据,建立了有效的标签生成模型。经过反复调参多次实验,改进的Stacking算法模型标签预测准确率控制在90%~95%之间,验证了本文中基于Stacking算法建立的模型具有有效性和准确性,对今后社区矫正人员用户画像的生成以及社区矫正人员规范管理平台的完善具有实践价值。