问题陈述和分析

原始数据可以从链接中下载,是一关于某项疾病的分类问题,表格中最后一列为标签,前面的278列是各项特征指标。其中标签为1 的为为患病样本,标签为2——15的为确定的患病的样本,标签为16的为不确定的患病样本。标签中缺少11、12、13的样本。对于这类问题首先想到的就是传统的机器学习方法SVM,再比较新颖的是lasso还有xgboost等方法。对于SVM分类器直接将特征送入模型中,用不超过70% 的数据训练,用剩余的数据进行测试。对于xgboost可以直接进行处理。对于lasso,可以用于特征降维与特征选择,将选择后的特征送入xgboost进行学习。整个工程代码和数据在这里。

SVM 三分类

因为从患病和不患病的角度看,这其实就是一个二分类问题,但是考虑到还有一种不确定的心脏病类型,问题可以看成一个三分类问题。首先将数据集分成训练集和测试集,其中训练集的样本数量为310个,测试集的样本数量为142个。

在数据处理的时候将空值置为0,将label放在数据的第一列,并保存为csv格式文件。训练集文件名为data_two_test.csv,测试集文件为data_two_test.csv。

训练过程与测试结果

整个框架是在tensorflow下进行的,训练和测试被我写在一个工程里,命名为svm_3_c权值文件保存在model1_1里。Batch设为100,迭代次数也是100。Optimizer是梯度下降法。

在迭代100次后学习到的结果如下:

测试仍然是每次取100组数据进行测试,取10次最后取平均值。考虑其稳定性继续做了四次测试,测试精度在0.9附近。可以认为三分类有较高的精度。

虽然三分类具有较高的精度,但是这并不是我们想得到的结果。想象病人得知自己得了某种确定的疾病,但是还不知道是哪一种确定的疾病,无论是心情还是对于整个治疗都没有什么帮助。但是三分类对于医生做进一步的诊断提供了有效且高精度的参考,如果患者得了某种确定的疾病,仍需人工的介入才能得到准确的诊断。

Xgboost + Lasso六分类

虑到xgboost的良好表现试着采用xgboost进行多分类。xgboost的数据需要进行预处理。还有一点就是标签不平衡问题,为了解决这个问题,又进行了六分类。六分类主要是考虑到不确定的心脏病类型仅有22个样本,所以我对确定的心脏病类型的185个样本重新分组得到六分类的结果。

训练过程与测试结果

xgboost的相关实验做了四组。第一组实验是源数据在无特征降维与选择下的实验,第二组是在lasso二分类标签下特征选择后再进行分类,第三组是在lasso三分类标签下特征选择后再进行分类,第四组是lasso六分类标签下特征选择后再进行实验。这几个实验分别在test_exp1、test_exp2、test_exp3、test_exp4文件夹中。

在第二组实验中,使用特征从279维降到25维准确率比没有使用特征选择时降低了。第三组实验中特征从279维降到30维,准确率有所提高。第四组实验将特征维度降低到36维,准确率已经比没有降低特征维度要高。所以使用特征选择可以有效的提升分类的准确度。

SVM 十三分类

由特征降维和特征选择能有效改善分类结果的启示,我又将这279个特征进行了特征排序,排序用的是ensemble里的随机森林回归。在此基础上对svm分类器进行优化。

由于每个score是一个三维向量,我的操作是求得平均值后在进行指数操作,底数是100000,这个数没有任何含义,只是为了将每个特征得分很好的区分开。这样操作的结果使这279个特征的得分变换范围变成0.27-4.13之间。得分最高的特征是‘V2 R wave amplitude’特征,得分最低的是‘Height’特征。

这个小节的实验将分成两个部分,一个是没有进行特征选择的svm分类器,一个是进行特征选择的svm分类器。

训练过程与测试结果

实验一

不进行特征选的svm13分类器的训练类似三分类,仍然在tensorflow框架下迭代100次,这里选择100次是因为实验室电脑比较老的原因。在编程实现要注意几个维度的变化即可。

测试结果准确率分别是0.86100006、0.796、0.88500005、0.80200005。

实验二

只提取得分前名的20个特征进行分类,同样迭代100次,做四次得到训练结果如下图所示。只提取得分前名的20个特征进行分类,同样迭代100次,做四次得到训练结果如下图所示。

测试结果分别为0.8549999、0.8809999、0.82、0.857。个人感觉对比不明显,我将迭代次数从100升至1000。没有进行特征选择,做了两组实验结果分别为0.897、0.866。进行了特征选择的结果分别是0.916、0.896我将迭代次数上升至10000次,没有进行特征选择的测试精度分别为0.872、0.77,进行了特征选择的0.878、0.866。

总结

整个实验的实现以及完成是在不断学习和改进的过程中进行的。从前期模型论证,到特征工程是不断的实验论证,改代码的过程。尤其是最近实验室换电脑来回折腾耽搁了很多工作,思路也从svm转移到了xgboost,还有laasso。

之所以从xgboost又回到svm是因为做了一些实验发现精度很难提高,尤其是在svm还保持比较高的精度的前提下,xgboost的精度仍然在0.6左右徘徊时,毅然放弃了使用xgboost方法。

后来想了想,有一个原因非常重要,就是数据集不够大。传统的svm方法在针对小数据集类问题表现非常好,而xgboost相关方法从2014年开始在各大数据挖掘类比赛中表现抢眼,一个关键问题就是,比赛中的数据集基本上都是百万级别的,所以精度不高是情有可原的。

关于少量数据的多分类问题相关推荐

  1. 仅50张图片训练数据的AI分类技术PK​,阿里拿下ECCV 2020竞赛冠军

    出品 | AI科技大本营(ID:rgznai100) 近日,两年一度的世界计算机视觉领域顶会ECCV 2020的各项挑战赛结果出炉,在图像分类赛中,阿里安全的高效AI分类技术超越三星.深兰科技.同济大 ...

  2. Nat. Mach. Intell. | 少量数据的生成式分子设计

    今天介绍苏黎世联邦理工大学Gisbert Schneider团队在nature machine intelligence 2020上发表的论文,该论文利用分子语言模型,结合三种优化方法,可以用少量分子 ...

  3. 【论文阅读】基于PointNet++点云深度学习的背包激光扫描数据的树种分类

    摘要 要调查森林资源,必须确定树种.然而,使用通过光探测和测距 (LiDAR) 收集的树木的 3D 点云来识别树种是一项挑战.PointNet++是一种点云深度学习网络,可以有效地对3D对象进行分类. ...

  4. UA MATH574M 统计学习II 高维数据的二元分类

    UA MATH574M 统计学习II 高维数据的二元分类 LDA的直观解释 NSC 上一讲提到了高维数据相比低维数据的特殊性,并介绍了处理高维数据二元分类最简单的一个模型independent rul ...

  5. 1 week110的zookeeper的安装 + zookeeper提供少量数据的存储

    下面是在weekend110上的zookeeper的安装 在此之前,先进行快照备份. 在这里,为了后续的zookeeper配置需要,在/home/hadoop/下,新建data目录,再新建zookee ...

  6. 计算机分php,计算机按照处理数据的形态分类,可以分为什么?

    计算机按照处理数据的形态分类,可以分为:1.数字计算机,是以数字形式的量值在机器内部进行运算和存储的电子计算机:2.模拟计算机,是根据相似原理,用一种连续变化的模拟量作为被运算的对象的计算机:3.混合 ...

  7. 模拟数据解决二分类问题项目描述

     模拟数据解决二分类问题项目描述: 已经发布公众号: 利用Python的numpy模块下的random类生成模拟数据集,然后对这些数据进行交叉熵最小化计算找到最合适的参数,也就完成了整个模型的调整 ...

  8. SQL 数据发现和分类

     GDPR的出台,让大家对数据管理安全提高到了一个新的高度, 但是数据库作为数据的核心,如何确保符合监管要求和隐私标准?SQL 提供了各种技术手段,如行安全,列掩码,安全管控等,但是如何确定在纷繁 ...

  9. azure云数据库_Azure SQL数据库中的高级数据安全性–数据发现和分类

    azure云数据库 Azure SQL supports in building and managing wide range of SQL databases, tools, frameworks ...

最新文章

  1. 攻打医院服务器的SamSam勒索木马分析
  2. Window平台实时流媒体
  3. 小白的算法初识课堂(part2)--选择排序
  4. css里的positioning scheme, 即position property
  5. C# where用法解析
  6. c语言链表输出header中的乱码,大家帮忙看看这段代码,最后一个链表输出后总带一些乱码?请教...
  7. bzip2recover cat chattr chgrp chmod
  8. Linux 基本命令篇 - 计算机信息
  9. VMware中让虚拟机支持虚拟化
  10. spark架构设计编程模型 02
  11. 论文润色软件Stylewriter,whitesmoke,1check使用
  12. 惠普触控板使用指南_hp触摸板(hp笔记本触摸板怎么开)
  13. DDD(领域驱动设计)概述
  14. 唐朝疆域地图[中亚势力范围(公元660年
  15. 二叉树由遍历确定一棵树
  16. 中段尾段全段什么意思_排气管中段 尾段 全段 和芭蕉 是什么意思
  17. Appro DM36x IPNC 4.0 开发环境配置
  18. 姿态估计1-07:FSA-Net(头部姿态估算)-源码无死角讲解(2)-网络框架整体结构分析
  19. Vue组织架构树图组件vue-org-tree的使用
  20. 在线考试防作弊js代码

热门文章

  1. 用计算机电脑怎么做ppt软件,电脑做ppt的软件叫什么
  2. 用ThoughtWorks.QRCode生成二维码时出现“索引超出了数组界限”的错误
  3. jdk 1.8安装教程
  4. 数据、数据元素、数据项、数据对象的理解
  5. IPv6基础介绍及常用命令盘点
  6. 转: RGB565、RGB888互相转换原理和代码
  7. php 实现 js escape unescape
  8. 什么是最好的在线UML软件工具?
  9. python 上传图片到七牛云上
  10. CSS中的:before和 :after