原创数据挖掘案例——ReliefF和Kmeans算法的医学应用数据之巅

(l)分析问题:源数据数据库必须经过评估确认其是否符合数据挖掘标准。以决定预期结果,也就选择了这项工作的最优算法。

(2)提取、清洗和校验数据:提取的数据放在一个结构上与数据模型兼容的数据库中。以统一的格式清洗那些不一致、不兼容的数据。一旦提取和清理数据后,浏览所创建的模型,以确保所有的数据都已经存在并且完整。

(3)创建和调试模型:将算法应用于模型后产生一个结构。浏览所产生的结构中数据,确认它对于源数据中“事实”的准确代表性,这是很重要的一点。虽然可能无法对每一个细节做到这一点,但是通过查看生成的模型,就可能发现重要的特征。

(4)查询数据挖掘模型的数据:一旦建立模型,该数据就可用于决策支持了。

(5)维护数据挖掘模型:数据模型建立好后,初始数据的特征,如有效性,可能发生改变。一些信息的改变会对精度产生很大的影响,因为它的变化影响作为基础的原始模型的性质。因而,维护数据挖掘模型是非常重要的环节。

Relief为一系列算法,它包括最早提出的Relief以及后来拓展的ReliefF和RReliefF,其中RReliefF算法是针对目标属性为连续值的回归问题提出的,下面仅介绍一下针对分类问题的Relief和ReliefF算法。

由于Relief算法比较简单,但运行效率高,并且结果也比较令人满意,因此得到广泛应用,但是其局限性在于只能处理两类别数据,因此1994年Kononeill对其进行了扩展,得到了ReliefF作算法,可以处理多类别问题。该算法用于处理目标属性为连续值的回归问题。ReliefF算法在处理多类问题时,每次从训练样本集中随机取出一个样本R,然后从和R同类的样本集中找出R的k个近邻样本(nearHits),从每个R的不同类的样本集中均找出k个近邻样本(nearMisses),然后更新每个特征的权重,如下式所示:

由于聚类算法是给予数据自然上的相似划法,要求得到的聚类是每个聚类内部数据尽可能的相似而聚类之间要尽可能的大差异。所以定义一种尺度来衡量相似度就显得非常重要了。一般来说,有两种定义相似度的方法。第一种方法是定义数据之间的距离,描述的是数据的差异。第二种方法是直接定义数据之间的相似度。下面是几种常见的定义距离的方法:

1.Euclidean距离,这是一种传统的距离概念,适合于2、3维空间。

2.Minkowski距离,是Euclidean距离的扩展,可以理解为N维空间的距离。

聚类算法有很多种,在需要时可以根据所涉及的数据类型、聚类的目的以及具的应用要求来选择合适的聚类算法。下面介绍K-means聚类算法:

K-means算法是一种常用的基于划分的聚类算法。K-means算法是以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。K-means的处理过程为:首先随机选择k个对象作为初始的k个簇的质心;然后将余对象根据其与各个簇的质心的距离分配到最近的簇;最后重新计算各个簇的质心。不断重复此过程,直到目标函数最小为止。簇的质心由公式下列式子求得:

在具体实现时,为了防止步骤2中的条件不成立而出现无限循环,往往定义一个最大迭代次数。K-means尝试找出使平方误差函数值最小的k个划分。当数据分布较均匀,且簇与簇之间区别明显时,它的效果较好。面对大规模数据集,该算法是相对可扩展的,并且具有较高的效率。其中,n为数据集中对象的数目,k为期望得到的簇的数目,t为迭代的次数。通常情况下,算法会终止于局部最优解。但用,例如涉及有非数值属性的数据。其次,这种算法要求事先给出要生成的簇的数目k,显然这对用户提出了过高的要求,并且由于算法的初始聚类中心是随机选择的,而不同的初始中心对聚类结果有很大的影响。另外,K-means算法不适用于发现非凸面形状的簇,或者大小差别很大的簇,而且它对于噪音和孤立点数据是敏感的。

下表是该数据集的11个属性名称及说明:

本文在转换数据后,首先进行了预处理,由于本文的数据范围都是1-10,因此不需要归一化,但是数据样本中存在一些不完整,会影响实际的程序运行,经过程序处理,将这一部分数据删除。这些不完整的数据都是由于实际中一些原因没有登记或者遗失的,以“”的形式代表。

本文采用Matlab软件进行编程计算。根据第三章提到的ReliefF算法过程,先编写ReliefF函数程序,用来计算特征属性,再编写主程序,在主程序中调用该函数进行计算,并对结果进行分析,绘图,得到有用的结论。

程序统一在最后贴出。

本文采用3.1节中的ReliefF算法来计算各个特征的权重,权重小于某个阈值的特征将被移除,针对本文的实际情况,将对权重最小的2-3种剔除。由于算法在运行过程中,会选择随机样本R,随机数的不同将导致结果权重有一定的出入,因此本文采取平均的方法,将主程序运行20次,然后将结果汇总求出每种权重的平均值。如下所示,列为属性编号,行为每一次的计算结果:

下面是特征提取算法计算的特征权重趋势图,计算20次的结果趋势相同:

上述结果是否运行主程序所得的计算结果,看起来不直观,下面将其按照顺序绘图,可以直观显示各个属性权重的大小分布,如下图所示:

按照从小到大顺序排列,可知,各个属性的权重关系如下:

属性9<属性5<属性7<属性4<属性2<属性3<属性8<属性1<属性6

我们选定权重阀值为0.02,则属性9、属性4和属性5剔除。

从上面的特征权重可以看出,属性6裸核大小是最主要的影响因素,说明乳腺癌患者的症状最先表现了裸核大小上,将直接导致裸核大小的变化,其次是属性1和属性8等,后几个属性权重大小接近,但是从多次计算规律来看,还是能够说明其中不同的重要程度,下面是着重对几个重要的属性进行分析。下面是20次测试中,裸核大小(属性6)的权重变化:

从上图中可以看到该属性权重大部分在0.22-0.26左右,是权重最大的一个属性。下面看看属性1的权重分布:

块厚度属性的特征权重在0.19-25左右变动,也是权重极高的一个,说明该特征属性在乳腺癌患者检测指标中是相当重要的一个判断依据。进一步分析显示,在单独对属性6,和属性1进行聚类分析,其成功率就可以达到91.8%。本文将在下节中的Kmeans算法中详细介绍。

上一节中通过ReliefF算法对数据集的分析,可以得到属性权重的重要程度,这些可以对临床诊断有一些参考价值,可以用来对实际案例进行分析,可以尽量的避免错误诊断,并提高诊断的速度和正确率。下面将通过K-menas聚类分析算法对数据进行分析。本小节将分为几个步骤来进行对比,确定聚类分析算法的结果以及与ReliefF算法结合的结果等。

下面将采用Kmeans算法单独对数据集进行分析。Matlab中已经包括了一些常规数据挖掘的算法,例如本文所用到的K-means算法。该函数名为kmeans,可以对数据集进行聚类分析。首先本文对乳腺癌数据集的所有属性列(除去身份信息和分类列)直接进行分类,由于数据集结果只有2种类型,所以首先进行分2类的测试,结果如下:总体将683条数据分成了2类,总体的正确率为94.44%,其中第一类的正确率为93.56%,第二类的正确率为96.31%。下面是分类后对按照不同属性的绘制的属性值分布图:

限于篇幅,只选择了上述3个特征属性进行图像绘制,从结果来看,可以很直观的观察到K-means算法分类后的情况,第一类与第一类的分类界限比较清晰。但是不容易观察到正确和错误的情况。下表是分类结果中各个属性的聚类中心:

从K-means算法的效果来看,能够很准确的将数据集进行分类。一方面是由于该数据集,可能是该案例特征比较明显,另一方面是由于K-menas算法对这种2类的作用较大。

单从分类正确率和结果方面来看,K-mens算法已经完全可以对乳腺癌数据集做出非常准确的判断。但是考虑ReliefF算法对属性权重的影响,本小节将结合ReliefF算法和K-means算法来对该数据集进行分析,一方面得到处理该问题一些简单的结论,另外一方面可以得到一些对医学处理数据的方法研究方法。

首先,本小节首先根据3.2节中的一些结论,根据不同属性的权重来对k-menas分类数据进行预处理,以得到更精确的结论和对该数据更深度的特征规律。

从3.2节中,得知属性9<属性5<属性7<属性4<属性2<属性3<属性8<属性1<属性6,根据ReliefF算法原理本文可以认为,对于这种属性6和属性1重要的特征属性,应该对分类起到更加到的作用。所以下面将单独对各个属性的数据进行分类测试,详细结果如下表:

总的分类正确率中,属性9最低,属性6最高,这与ReliefF算法测试的结果大致相似,但是由于ReliefFar算法中间部分权重接近,所以也区分不明显。说明特征属性权重的判断对分类是有影响的。上述单独分类中,只将需要分类的列数据取出来,输入到K-means算法中即可。由于输入数据的变化,K-means分类时结果肯定是有差距的,所以单独从一个属性判断其类型是不可靠的。下面选择了单个分类时最高和最低的情况,绘制其分类属性值分布图,如下图所示:

下面将对特征权重按照从大到小的顺序,选择相应的数据,进行聚类分析,结论如下:

1.直接选择全部9种属性,分类成功率为:94.44%;

2.选择属性6,属性1,分类成功率为:91.36%;

3.选择属性6,1,8,3,分类成功率为:93.85%;

4.选择属性6,1,8,3,2,4,分类成功率为:94.48%;

5.选择属性6,1,8,3,2,4,5,7,分类成功率为:95.02%;

从上面的测试可以看出,选择特征权重最大的6个属性,其正确率就达到选择所有属性的情况,因此我们可以认为特征权重最小的几个属性在乳腺癌诊断过程的作用实际可能比较小,实际有可能造成反作用,也就是这几个属性值与乳腺癌没有必然的联系。这一点可以给诊断参考,或者引起注意,进行进一步的研究,确认。

虽然从上述2小节的实验中可以得到该数据集的大部分结果和结论。但是为了将相同类型的数据更加准确的分出,下面将尝试分为3类的情况。一方面,可以分析在乳腺癌良性和恶性情况下的显著特征属性;另一方面也可以根据此结果找到更加合理的解决方法。

还是采用Matlab中的kmeans函数,将分类数改为3,由于分为3类后数据类型增多,判断较复杂,所以手动对数据进行分析,将所有特征属性加入进去。运行结果如下,测试数据中总共683条,其中良性共444条,恶性共239条:

1.分为第一类的记录中,良性占96.88%;

2.分为第二类的记录中,恶性占100%;

3.分为第三类的记录中,恶性占92%;

根据上述结果可以认为第一类为良性的分类,第二类为恶性分类,第三类为混合类。对于混合类,说明里面的数据较其他数据更加接近于偏离病例的典型数据,所以进一步分析在第一类中和第二类中的分类正确率:

1.第一类为良性,共448条数据,分类正确率为96.88%;

2.第二类为恶性,共99条数据,分类正确率为100%;

3.第三类为混合类,共136条数据

因此单独从分类后的正确率来看,效果有提高,说明对典型的病例数据分类更准确,但是对于第三类数据,而无法区分,因此这种情况下,其意义不在于分类的整体正确率,而在于在一些特殊情况下,可以根据一些重要的特征属性值就可以为患者确诊,从而提高效率和准确率,减少误诊断的几率。

上面是将所有属性进行K-means变换,下面将结合ReliefF算法,先去掉一部分特征权重较小的特征属性后,再进行K-means处理。根据4.2节中的结论,下面提取权重最大的6个属性进行测试,分别是:属性6,属性1,属性8,属性3,属性2,属性4。

1.第一类为良性,共281条数据,分类正确率为97.51%;

2.第二类为恶性,共211条数据,分类正确率为97.16%;

3.第三类为混合类,共191条数据

因此,对比可以看到,虽然良性的正确率增加了,但是检测出的数据减少了。第三类混合的数量也增多了,说明提出了特种属性较小的属性,可以更加容易区分极端的病例数据,对极端数据的检测更加准确。

THE END
1.SPSS数据分析实例.pptSPSS数据分析实例 :某克山病区测得11例克山病患者与13名健康人的oup两个框内分别输入1和2,点击ok 结果浏览窗口两组的基本情况描述和t检验结果 上面是方差齐性检验,用于判断两总体方差是否齐;第二部分分别给出两组所在总体方差齐和不齐时的t检验结果 https://www.taodocs.com/p-735739326.html
2.SPSS数据分析实例详解20240110172242.pdfSPSS数据分析实例详解.pdf 137页VIP内容提供方:微传科技 大小:23.79 MB 字数:约15.94万字 发布时间:2024-01-13发布于河北 浏览人气:120 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币 (10金币=人民币1元)SPSS数据分析实例详解.pdf 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线...https://m.book118.com/html/2024/0110/7015126003006030.shtm
3.SPSS行业案例SPSS数据分析软件行业案例本文将介绍SPSS描述性分析怎么剔除没用的数据,SPSS描述性分析怎么看分析结果的相关内容。 2024-11-25 SPSS数据降维是什么意思 SPSS数据降维方法 SPSS是一款功能强大的,应用范围广泛的统计分析软件,支持用户的多样化操作,支持数据分析、数据统计和数据可视化等功能。很多用户在使用SPSS时可能会遇到不知道SPSS数据降维是...https://spss.mairuan.com/hangye/
4.数据科学实战第2 章 统计推断、探索性数据分析和数据科学工作流程 在本章,我们首先讨论统计推断和统计学的思考方式,然后我们将目光转向每一位数据科学家都会从事的工作:探索性数据分析。我们还将详细了解研究数据科学的工作流程,在本章的结尾,是我们的“思维实验”环节和一个案例学习。 https://www.ituring.com.cn/book/tupubarticle/512
5.手把手教你操作Tableau——真实公司数据分析项目实例(完整详细...1.打开tableau,将所需要的的数据导入到tableau中 2.数据源连接这边可以看到tableau可以连接多种文件格式和数据库 3.tableau中对数据文件的两种处理方式有实时live和提取extract 实时连接的好处是直接连接的是数据源,如果数据源(excel或者SQL类数据库)发生变化,tableau里的数据也会相应的自动调整 坏处在于实时的速度会随着...https://blog.nowcoder.net/n/40fb3adebfb648e0a3e91f3fa6b9a7fb
1.精选30个数据分析案例,建议收藏!腾讯云开发者社区这就涉及到,你必须要有思维能力,去支撑你在看到数据时,会从多维度去分析,而不是只看到表面数字这么简单而已,否则就是抓瞎。 数据时代,无论你是做产品,运营,还是做研发,系统架构,乃至于安全风控,都会发现,数据思维是考验你能力提升的重要指标。 但其实,很多人只是掌握了数据分析的工具和技能,却做不好数据分析,无...https://cloud.tencent.com/developer/article/1966722
2.5个Github上的大数据分析案例!大数据项目开发案例文章列举了GitHub上的数据科学资源,包括AwesomeDataScience和DataScienceProjects等项目,提到了Kaggle竞赛平台以及使用Python和SQL进行大数据分析的重要性。此外,还强调了数据分析师应掌握的技能,如Excel和数据可视化工具,并推荐了学习资源和学习路径。 摘要由CSDN通过智能技术生成 ...https://blog.csdn.net/itcast_cn/article/details/131772550
3.五个Pandas实战案例带你分析操作数据pythonpandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效操作大型数据集的工具。pandas提供大量快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python强大而高效的数据分析环境的重要因素之一...https://www.jb51.net/article/235878.htm
4.矩阵数据分析法实例矩阵数据解析法案例2.实例: 在推荐系统中,最重要的数据是用户对商品的打分数据,数据形式如下所示: 其中,U1?U5表示的是5个不同的用户,D1?D4表示的是4个不同的商品,这样便构成了用户—商品矩阵,在该矩阵中,用户对每一件商品的打分,其中“-”表示的是用户未对该商品进行打分。 https://blog.51cto.com/u_13229/8815184
5.数据挖掘聚类分析实例【数据挖掘】聚类分析实例 技术标签:数据挖掘机器学习聚类 在之前,我们已经学过了四大类聚类分析及其典型算法。本文,我们将使用划分方法中的k-均值算法和层次聚类方法以一个实例进行完整的聚类分析演示。 1. 问题描述 例题: 为研究我国31个省、市、自治区2007年的城镇居民生活消费的规律,根据调查资料作区域消费类型...https://www.pianshen.com/article/74271139769/
6.Python数据分析与挖掘实战(豆瓣)此外,他精通Java EE企业级应用开发,是广东工业大学、华南师范大学、华南农业大学、贵州师范学院、韩山师范学院、广东技术师范学院兼职教授,著有《神经网络实用教程》、《数据挖掘:实用案例分析》、《MATLAB数据分析与挖掘实战》《R语言数据分析与挖掘实战》等畅销书。https://book.douban.com/subject/26677686/
7.工具Orange3:机器学习入门神器澎湃号·湃客澎湃新闻Orange3(https://orangedatamining.com/)是一款基于Python的数据挖掘和可视化工具,它提供了丰富的数据分析、机器学习和数据挖掘算法,同时也支持可视化分析和交互式数据探索。Orange3提供了友好的界面和丰富的示例工程,使得新手用户也可以快速上手,同时也支持Python脚本,可以满足高级用户的需求。 https://www.thepaper.cn/newsDetail_forward_24193195?commTag=true