基于机器学习分类算法在丙型肝炎预测中的研究
2021-06-29西北民族大学朱泰全
西北民族大学 朱泰全
以目前的医疗水平丙肝病毒可以确诊并根治,但是丙肝病毒并没有被彻底消灭,主要是因为丙肝病毒感染病例的确诊率很低,有许多被感染而未确诊的患者,因此,对丙型肝炎进行早期的检测则显得尤为重要。血清丙氨酸氨基转移酸(ALT)和天门冬氨酸氨基转移酶(AST)水平在一定程度上反映了肝脏的损伤程度,检测他们,可以对献血者进行初步的丙型肝炎筛查。
近年来,随着计算机技术的发展,大量复杂的数据已经超出了人工能够统计和分析的范围,对于数据的处理和分析有了更高的技术要求,机器学习算法正好能承担此类任务。机器学习的最主要任务是对数据分类的能力。近年来国内机器学习算法的相关研究发展迅猛,并广泛应用于实际工作中。
本文构建丙型肝炎分类器,选用了机器学习算法中的KNN、支持向量机、决策树、随机森林四种分类算法,利用他们分析和预测丙型肝炎的数据,通过正确率、精确率等评估指标的比较,选取出一种可靠的模型来进行早期的预测,以期能够为丙型肝炎早期筛查和诊断提供帮助。
1 分类算法
1.1 KNN
KNN(k-NearestNeighbor)算法,又名K近邻算法是著名的模式识别统计学算法。KNN算法的思想非常简单:就是给定待测样本(数据和分类标签已知)。首先,基于某种距离计算方法,找出训练集中最接近待测样本的K个样本;然后,根据K个样本中出现频率最高的分类,对待测样本的类别标记进行预测。距离计算使用的是欧氏距离,n维空间的欧氏距离其公式为:
在K最近邻算法中,由于K值直接影响预测的性能,因此K近邻算法中K值的选择非常重要。较小的K值意味着整个模型变得复杂且易过度拟合,较大的K值意味着整个模型变得简单,且容易发生拟合不足。最佳的K值可以通过交叉验证来选择。
1.2 支持向量机
支持向量机(Support Vector Machine,SVM)在1964年由Cortes和Vapnik正式提出,一般用于解决二分类问题。支持向量机是基于统计的VC维理论和结构风险最小化原理的监督二元分类器。
支持向量机的基本原理是在样本空间中找到支持向量,并根据支持向量确定最优分类超平面,从而最大化不同类别样本之间的间隔。虽然支持向量机是线性模型,但是它仍可解决非线性问题。在非线性样本的分类任务中,通过核函数将低维样本的特征映射到高维空间,将原特征空间的线性不可分问题化为线性可分的问题,从而达到处理非线性分类的任务。支持向量机的核函数有:线性核、多项式核、径向基函数核、sigmoid核等,常用的是多项式核和线性核。本文在构建SVM模型时,选择的核函数为多项式核。
1.3 决策树
决策树(DecisionTree)也被叫做判定树(也称分类树),其是一种十分常见的分类方法,它的每一个叶子结点对应着一个分类,非叶子结点对应着在某个特征上的划分,根据样本在该特征上的不同取值将其划分成若干个子集。决策树主要有三类,分别是:ID3、C4.5、CART,本文选用的是由Breiman等人在1984年提出的CART算法。
决策树算法主要包括三个部分:(1)特征选择:选择出对训练集有用的特征或属性;(2)决策树的生成:通过特征选择递归的生成决策树;(3)决策树的剪枝:如果一棵决策树的判断条件过多,树过于复杂,就可以主动剪掉一些分支来降低过拟合的风险。
1.4 随机森林
随机森林(Random Forest,RF)算法是由Leo Breiman提出的一种基于决策树的组合分类器,是一种集成学习算法,其核心思想是将多个不同的决策树进行组合,可极大的提高算法的抗过拟合能力和准确性;同时,由于树的组合使得随机森林可以处理非线性数据,其本身属于非线性分类模型。
针对分类问题,一棵决策树就对应一个基分类器,当输入一个样本后,每个基分类器返回一个分类结果。然后,随机森林再集成所有的结果,接着用多数投票或者对输出求均值的方法,将分类结果次数出现最多的类别作为最终的输出标签,其遵循“少数服从多数”的原则。因此,随机森林分类精度相对较高,通过统计所有决策树,可以有效降低过拟合的风险性,但相对的计算成本更高。
表1 各分类算法性能比较
下面介绍构造一个随机森林的具体步骤:(1)从训练集中有放回的随机抽取N个样本,用这N个样本来训练每一棵决策树;(2)每个样本有M个属性或特征,在决策树中需要分裂节点时,从这M个属性中随机挑选k个属性或特征,一般来说k远小于M,然后从这k个属性中采用某种策略选择一个最佳属性作为当前节点的分裂路径;(3)每棵决策树的每个节点的分裂都按照步骤(2)进行,直到不能分裂为止;(4)对于每棵决策树都这样建立,就得到了随机森林。
以上步骤需要注意两点,在训练样本时进行了随机抽样,在分裂节点时对属性或特征进行了随机挑选,所以随机森林并不是简单的平均所有决策树的结果,而是利用随机的方式将许多决策树组合成一个森林。由于两个随机性的引入,使得随机森林不容易陷入过拟合。得到以上随机森林之后让测试样本经过每一棵决策树,得到对它分类的结果,再加以处理,就能得到该测试样本的最终分类结果。
2 实验结果与分析
2.1 数据来源
本文所用的数据来自UCI数据集里的丙型肝炎病毒数据集,数据集中包含献血者和丙型肝炎患者的实验室值以及年龄等人口统计值。该数据集共有615样本,经过预处理后,有效样本还有585例。其中,每个样本均包含Age(年龄)、ALB(白蛋白)、ALP(碱性磷酸酶)、ALT(丙氨酸氨基转移酶)、AST(天门冬氨酸基转移酶)、BIL(胆红素)、CHE(胆碱酯酶)、CHOL(总胆固醇)、CREA(血肌酐)、GGT(谷氨酰转肽酶)、PROT(蛋白质纤维)共11个输入变量。此外,还有一个分类的目标属性类别,即献血者与丙型肝炎。当标签值为0,为献血的健康者;其他类别均为丙型肝炎或为其进展。
2.2 模型建立
有效样本有585个,其中410个(70%)用于训练集,175个(30%)用于测试集。本实验是在Python 3.8版本的PyCharm环境下进行的,通过使用sklearn工具包进行算法实践。将丙氨酸氨基转移酶、天门冬氨酸基转移酶等11个特征作为自变量,将目标属性类别作为因变量,分别建立KNN分类器、SVM分类器、决策树分类器和随机森林分类器四个分类器。实验中,运用了10折交叉验证方法对各个模型进行评估比较,挑选出更好丙型肝炎预测模型。
2.3 模型评估
对于以上模型的评价指标主要有:准确率(Accuracy)、精确率(Precision)、召回率(Recall) 、AUC(ROC曲线下面积)等。其中,准确率是正确被分类的占测试样本总数的比例;精确率是正确被分类的占实际被分类的比例;召回率是正确被分类的占应该被分类的比例;F1值同时考虑精确率和召回率,让两者同时达到最高,取得平衡。F1值表达式为:
文献中指出“AUC值即为ROC曲线下方围成区域的面积大小,能够稳定的反应模型本身的好坏”,所以AUC就是衡量分类器优劣的一种性能指标。详细分类结果比较如表1所示。
从以上分析结果来看,在对丙型肝炎数据的预测上,随机森林模型的效果是这四种里最好的,其准确率最高,达到了88.78%,其次是支持向量机和决策树,分别是85.59%和82.95%,最差的是KNN,只有79.45%。AUC作为分类器好坏的性能指标,随机森林表现最为卓越,达到了0.91,然后是支持向量机为0.88、决策树为0.77、KNN为0.71。
综上所述,本次实验表现最佳的模型是随机森林,其准确率最高,AUC值最大,所以,随机森林作为丙型肝炎预测的最终模型。
总结:本文通过对支持向量机、K近邻、决策树、随机森林这4种算法在UCI丙型肝炎病毒数据集上的分类预测进行了研究与比较, 并运用10折交叉验证方法来验证数据结果,得出随机森林对丙型肝炎病毒数据集的分类的准确率和精度更高,具有更好的预测效果。未来,希望能获得更多的丙肝方面的数据集,以检验此结果,并构建出更加准确的预测模型,相信机器学习分类方法将会更广泛地应用于其他医疗领域。