近年来,我国甲状腺肿瘤的发病率在全球排名不断升高。之前一期使用了Logistic模型对该问题进行预测判别分析,为提高预测准确率,本文借助国家人口与健康科学数据共享服务平台,采用随机森林模型对恶性甲状腺肿瘤的预测问题进行实证研究。

一、随机森林

随机森林(RF)算法是一个集成分类模型,集成分类能获得比单个模型更好的分类表现。随机森林有两大随机思想Bagging思想和特征子空间思想:

随机森林的生成步骤如下:

首先样本抽取:首先是行采样,对总体样本数据有放回抽样,所以会得到有重复的样本集合,但是每个样本分别输入建立决策树就会减少过拟合现象出现的可能性。接着是列采样,从样本数据中的总特征属性M中随机抽取m个(m<)。

其次完全分裂:第一步完成后会得到不同的子样本,每个样本包含的特征属性也不尽相同。用完全分裂的方式建立决策树,会有两种结果:一种是决策树的某叶节点停止分裂,另一种是所有样本的数据都可以被归为同一类。

最后根据分类标签结果投票,分类结果取决于票数的多少,最高的为最终结果。图1为具体流程图:

随机森林回归 python实现 随机森林回归分析_随机森林需要分训练集测试集吗

二、实证分析

(一)数据来源

本文数据是一些病例的基本信息临床诊断的记录,发布于国家人口与健康科学数据共享服务平台,涵盖了病例的17个特征,共有329个观测值鉴于数据质量较好,只有部分回声水平与纵横比数据存在缺失值,因此选择删除有缺失值的数据,剔除缺失值之后样本总数为316。

(二)基本模型构建

首先,加载随机森林所需要的命令,为使每次抽样为相同的样本,规定抽取的随机数种子为90,随机森林模型默认初始建立的决策树为10棵,建模预测分析所得结果如表1:

随机森林回归 python实现 随机森林回归分析_随机森林回归 python实现_02

结果显示,训练集分类效果准确率高,高达99.58%,测试集准确率仅有89.87%,与训练集相比差距9.71%,差距较大,说明该模型很大程度存在过拟合问题。在此基础上所建立的模型虽然针对特定的数据分类效果极好,但在实际应用中推广率有限,因此,需要对已有模型进行调参。

(三)模型参数的优化调整

下面对决策树数量进行调整:选择对模型影响较大的五个参数,分别调整得到最优的随机森林模型并进行预测。n_estimators参数的调整:在1至200中每隔10个数随机选取数据作为决策树数量,然后计算分类的准确率,所得结果如图2所示: 

随机森林回归 python实现 随机森林回归分析_随机森林回归 python实现_03

图2中,在0-11区间内,准确率呈快速增长,在11时达到最大值并保持,因此在决策树数量为11时,测试集准确率最高,预测效果较好,因此决策树数量调至11时,预测效果最好,所得到的甲状腺肿瘤准确率最高。

max_depth参数的调整:定义不同深度下的随机森林模型,查找最优的深度,min_samples_leaf参数的调整:默认为最高复杂度,向复杂度降低的方向调参,该参数越小模型越简单。min_samples_split参数的调整:默认为最高复杂度,向复杂度降低的方向调参。Criterion参数的调整:可选项为“gini”,“entropy”分别代表模型采取计算方法,来构建决策树,进而构建随机森林模型。

根据训练集预测结果来对模型进行评估,在本文中,如对甲状腺肿瘤判断准确率越高,说明该模型预测分类效果越好。

随机森林回归 python实现 随机森林回归分析_随机森林的特征 是放回抽样么_04

由表2看来,参数调整以后,随机森林预测效果较好。将该模型对测试集进行对比建立的6个随机森林模型对比找到预测准确率最高的模型,用得到的模型预测并且对比测试集的实际值如下图3:

随机森林回归 python实现 随机森林回归分析_随机森林_05

可以看出模型在79个测试集结果预测中仅1次预测错误,所以模型的预测效果较好。

随机森林回归 python实现 随机森林回归分析_决策树_06

由表3可以看出,模型对良性的预测准确率达到100%,在79个测试集测试中没有出现错误,对恶性的预测准确率达到99%有一定的误差,总体来说模型准确率达到98.7%。

在该模型中,使用甲状腺肿瘤的十个指标,建立了10棵决策树,得到了较好的预测水平,对甲状腺肿瘤的良恶性的预测结果显示较好。随机森林模型参数比较多,调整较慢,很难找到最优的参数组合是模型应用的不足之处。鉴于数据量较小,模型存在不稳定性,因此之后可以加大数据量进行调参优化,提高模型的预测准确率。