论文部分内容阅读
医学诊断,是指医生给病人检查疾病,并对病人疾病的病因、发病机制作出分类鉴别,以此作为制定治疗方案的方法和途径。这本质上是一个分类过程,也称模式识别。现有的分类方法有支持向量机(Support Vector Machine,SVM)、K邻近(K-Nearest Neighbor,KNN)、神经网络(Neural Network,NN)和决策树算法等。SVM对小样本、非线性及高维数据的模式识别问题具有很好的鲁棒性,具有较好的识别能力与适应能力。SVM在构建分类模型的过程中,所表现出的对训练样本的学习能力与对测试数据的推广性能主要由三种因素决定:原始数据集的处理、所选择的核函数以及核函数的参数。目前SVM在分类过程中存在的主要问题有:(1)目前SVM均采用单一核函数,其核函数可以分为全局核函数与局部核函数两种。全局核函数具有推广性能强而学习能力弱的特点,而局部核函数的学习能力强、但是推广性能弱。所以SVM分类结果往往无法同时满足较高的学习能力与推广性能。(2)在SVM参数的选择方面,主要有两种方法:传统的网格搜索法与启发式算法。网格搜索法特点是总能找到最优解,但是耗时、效率低;启发式算法查找速度快,但是解的精度不及网格搜索法高,并且遗传算法只是概率得到最优解。为了提高SVM的分类性能,本文主要在以下几方面进行研究:(1)选用Relief算法进行特征选择。在疾病诊断中,病人所表现出的多种临床特征与疾病的相关性是不同的,医生无法具体量化每个特征与疾病的关联度。因此,为了更准确地进行诊断,需要用特征选择算法计算出每个特征的权重,也就是各个临床症状与所患疾病的关联度;(2)提出将全局与局部两种核函数进行线性结合,构造学习能力与推广性能都得到提高的混合核函数;(3)对核函数参数进行组合寻优,先使用启发式算法中的遗传算法快速查找到最优解的大致范围,再使用网格搜索法在该小范围内进行二次精确搜索,不仅可以大大减少网格搜索法的计算时间,找到的解也比遗传算法更优。本文使用Matlab R2015b及台湾林智仁教授开发的LIBSVM工具包进行建模,分析了Matlab开发环境、LIBSVM工具包的接口配置、如何设置核函数及其参数、如何构造混合核函数以及如何进行参数的组合寻优。并以公共数据集UCI中的Heart disease数据集及Breast cancer数据集为应用背景,进行疾病诊断模型的构建与验证。