文章目录

  • 1. 背景
    • 1.1 研究方法
    • 1.2 数据集和代码链接
  • 2. 测试结果
  • 3. 关于数据独立同分布的思考
  • 4. 结论
  • 5. 代码和数据集链接

1. 背景

1.1 研究方法

  随着深度学习如火如荼的发展,对大数据的训练和学习已经非常成熟,广泛应用在学术界和工业界。但在不少打工人中往往会遇到样本个数在100到1000之间的超小规模数据集。例如,孕妇在整个妊娠期间的详细指标以及随后的新生儿情况。目前业界还不清楚这种情况下的最佳实践是什么,为了对此进行研究,制定了以下的研究方法:

  1. 获取大量用于分类的小型基准数据集,总共108个数据集(这些数据集也可以用来测试基准回归算法)。
  2. 选择一些具有代表性的ML分类器:线性支持向量机、逻辑回归、随机森林、LightGBM(梯度提升决策树)、Augogloon(AutoML工具包)。
  3. 选取合适的超参数。
  4. 使用交叉验证,分别在每个数据集上测试每个分类器。
  5. 绘制结果图。

1.2 数据集和代码链接

  数据集和代码链接为:https://github.com/sergeyf/SmallDataBenchmarks

2. 测试结果

  下图展示了各个分类器测试结果,选取的指标是One-vs-All情况下的AUROC交叉验证平均值(AUROC值指的是ROC曲线下的面积)。

除此之外,还有一些额外的发现:

  • AutoGluon 总体上是最好的,但它有时候会存在问题,即AUC<0.5,逻辑回归分类器上不存在该问题,LightGBM也很少出现该问题。
  • AutoGluon 耗时较长,AutoGluon 有一个预算参数,用来定义需要花多少时间来提升效果。为了保证效果,交叉验证时,在每折数据上最少使用5分钟。整个基准测试,需要耗费的时间是:108个数据集4折300s=1.5天,也就是总共需要耗时一天半。
  • 线性SVC的表现整体上优于逻辑回归。SVC在其中两个数据集上的表现要优于其它所有模型,在这两个数据集上的auroc值分别是0.3和0.1,所以在实践中,线性SVC还是值得一试。
  • 逻辑回归需要进行正则化,以确保它不会像AutoGluon和随机森林一样出现泛化失败的问题。
  • LightGBM次之。我用hyperopt 来调参,也尝试了scikit-optimize和Optuna来调参,二者效果都不太好,可能是人为错误导致的。
  • 随机森林相当不错,随机森林的优化过程比LightGBM和AutoGluon的优化过程更简单也更快。我只交叉验证测试了随机森林的深度参数。

  对最好的分类器或者处于最高AUROC 0.5%范围内的进行次数统计,优质分类器排名如下:

  1. AutoGluon (sec=300):71
  2. LightGBM(n_hyperparams=50):43
  3. LightGBM(n_hyperparams=25):41
  4. 随机森林:32
  5. 逻辑回归:28
  6. SVC:23

  所有数据集的平均AUROC,优质分类器排名如下:

  1. AutoGluon (sec=300):0.885
  2. LightGBM(n_hyperparams=50):0.885
  3. LightGBM(n_hyperparams=25):0.873
  4. 随机森林:0.870
  5. SVC:0.841
  6. 逻辑回归:0.835

  对最差的分类器或者处于最差AUROC 0.5%范围内的进行次数统计,差分类器排名如下:

  1. 逻辑回归:54
  2. SVC:48
  3. 随机森林:25
  4. LightGBM(n_hyperparams=25):19
  5. LightGBM(n_hyperparams=50):18
  6. AutoGluon (sec=300):14

  这表明即使分类器大多数情况下效果较优,也有10%的情况下会效果不佳,机器学习领域中没有银弹。下图展示了每个分类器的(交叉验证)平均AUROC值与样本数量的关系图:

  当我第一次看到上述结果时感觉到一丝惊讶,因为之前自己一直认为:无需在小型数据集上使用复杂的模型,但这似乎与在这108个数据集上的测试结果相悖。从图中可见,即使数据量很小的时候,AutoGluon 也效果不错,LightGBM和随机森林远远领先于两个线性模型。图中线性模型的曲线上有个奇怪的峰值,线性模型的结果突然提升,但却并不清楚原因是什么。

  最后一个图展示了每个分类器的(交叉验证得到的)AUROC均值的标准差:

  从图中可以看出,无论数据集大小如何,线性模型不仅泛化能力较差,而且泛化方差也较高。

3. 关于数据独立同分布的思考

  这些实验的适用性如何呢?训练数据和测试数据是独立的,分布也相同。测试数据、训练数据、验证数据都很相像。这虽然非常不现实,但是这正是学术论文在评估机器学习算法时候所使用的数据集的模式。对于IID数据,不管数据集大小如何,LightGBM都可能比线性模型效果更好。

  但如果测试集来自于与训练集相关但不同的分布,即测试集是协变量移位的(covariate-shifted),该文中的实验结论未必成立。很难对这种情况进行测试,因为IID数据是现成的,直接用基准数据集即可,但实际中很少有现成的与训练集相对应的协变量移位测试集。

4. 结论

  • 如果您关心的是数据独立同分布的场景,那么即使您只有50个样本,非线性模型也可能表现不错,可以优先考虑。
  • AutoGluon是获得分类性能上限的一种很好的方法,但是要理解最终得到的复杂的集成结果是非常困难的。
  • 在调参方法中,hyperopt虽然存在一些问题,但是效果依然比我尝试过的其它算法要好。
  • SVC的表现很少优于其它所有算法。

  另外,还有一些注意事项:

  • LightGBM有许多强大的功能,本实验中还未涉及这些功能,例如,缺失值处理(我们用到的数据集没有缺失值),分类变量的智能编码(本文使用独热编码)以及对每个特征进行单调约束(需要先验知识)等。
  • AutoGluon包含了一个表格神经网络(tabular neural network),但我还没有单独对其运行基准测试。研究表格神经网络结构是否能适用于小型数据集应该会很有趣。
  • 本文只针对分类,针对回归算法的结论可能有所不同。

5. 代码和数据集链接

  https://github.com/sergeyf/SmallDataBenchmarks

  文章最后给自己打个广告。先做个自我介绍:我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池安全恶意程序检测第一名,科大讯飞阿尔茨海默综合症预测挑战赛第四名,科大讯飞事件抽取挑战赛第七名,Datacon大数据安全分析比赛第五名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法行业就业。希望和大家一起成长进步。以下几个专栏欢迎大家订阅学习:

AI比赛经验分享

https://blog.csdn.net/herosunly/category_9393702.html

机器学习入门之工具篇

https://blog.csdn.net/herosunly/category_10457626.html

爬虫实战
https://blog.csdn.net/herosunly/category_10748674.html

适用于超小规模数据集的分类器相关推荐

  1. CVPR 2020 SLAM挑战赛冠军方案解读,搞定超难数据集TartanAir

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨R 来源丨旷视研究院 编辑丨极市平台 导读 在CVPR 2020 SLAM挑战赛上,旷视研究院参 ...

  2. 超分辨率数据集(待填坑版)

    超分辨率数据集(待填坑版) 数据集来源 Super-Resolution 超分辨率 DIV2K Urban100 BSD (Berkeley Segmentation Dataset) EarVN1. ...

  3. 超分辨率数据集的下载

    超分辨率数据集的下载:包含大部分常规数据集 参考博客:https://blog.csdn.net/weixin_40400177/article/details/103538352

  4. DeepMindVGG提出基于集合的人脸识别算法GhostVLAD,精度远超IJB-B数据集state-of-the-art...

    点击我爱计算机视觉标星,更快获取CVML新技术 在人脸识别应用中,很多场景能够获取某一个体的多幅人脸图像的集合(比如在监控视频中),使用人脸图像集来做识别,这个问题被称为基于模板的人脸识别(templ ...

  5. 机器学习超全数据集汇总

    我们都知道,在机器学习模型的测试过程中,数据集很重要.在构造数据集的时候,要注意做好数据的清洗和标注,一个高质量的数据集往往能够提高模型训练的质量和预测的准确率.在缺乏数据的情况下,可以尝试寻找一些公 ...

  6. 超小体积高灵敏度单按键单通道1路触摸触控检测IC-VKD233DS/HS DFN6-外接电容调节灵敏度,带16S自动复位功能,适用于超小型产品,如手环、智能手表、蓝牙耳机等等

    型号:VKD233DS/HS 品牌:永嘉微电/VINKA 封装:DFN6 年份:新年份 概述:VKD233DS/HS  DFN6具有1个触摸按键,可用来检测外部触摸按键上人手的触摸动作.该芯片具有较高 ...

  7. 图片批处理——关于批量重命名文件夹内图片不改变原来在文件夹内的顺序(适用于基于ref数据集处理的过程)

    在网上找了好久,但是保证顺序的方法都是使用**sort()**函数实现的,并不能保证原来图片在文件夹内的顺序不变(特殊需要,需要某种对应), 这种方法见 按顺序对图片批量重命名,sort() 之后被逼 ...

  8. 基于titanic数据集的分类器构建---(二)特征选择

    目录 分析数据关系 1.pclass与survived的关系 2.sex与survived的关系 3.age与survived的关系 4.sibsp与survived的关系 5.Parch与survi ...

  9. 基于跨区块恶劣条件的岩石薄片分析,加速地质工程一体化推进

    基于跨区块恶劣条件的岩石薄片分析,加速地质工程一体化推进 我是菜鸡之3区SCI文学尝试 开发者:马赫 邮箱:mahepetroleum@163.com 通讯地址:北京市昌平区府学路18号中国石油大学( ...

最新文章

  1. CSS 和 JS 动画哪个更快
  2. 【大作业】城市地铁线路最短路规划及路径输出(满分)
  3. 浙江高考艺术类2021年成绩查询,2021年浙江美术高考成绩查询网址:https://www.zjzs.net/...
  4. pin码计算器网页版_AP微积分Excel简便计算+网页工具指南
  5. Lilypad Pondg(POJ-3171)
  6. html捉虫游戏,幼儿园体育游戏《小鸡捉虫》教案(精选4篇)
  7. python行数据切片_通过切片访问DataFrame行
  8. VC++2012编程演练数据结构《31》狄杰斯特拉算法
  9. Android应用开发——系统自带样式Android:theme
  10. 看寄存代码中的方式时,一定要看到方法的底部 (有时代码会在finally中写东西) 。
  11. bzoj 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐(DP)
  12. Chainmaker 查询当前区块高度
  13. kotlin和python哪个好_对比 Go 语言,Kotlin 有什么优势和劣势?
  14. python半自动化获取QQ空间说说
  15. iOS App 性能优化总结
  16. SPSS数据统计分析前准备【002期】
  17. 基于ssm的校园二手电子交易平台
  18. TMS320C6678开发笔记---IBL编译与分析5
  19. 工作中使用了一些触发器
  20. 【网络流24题】搭配飞行员(最大流+二分图匹配)

热门文章

  1. 判断是不是平衡二叉树
  2. 北京邮电/北京航空航天大学上机题目
  3. 晶振串联电阻与并联电阻的作用
  4. python爬虫实现boss直聘自动化强制投简历
  5. Oracle使用dblink同步数据
  6. 张无忌放弃了江湖与江山
  7. c语言破解rar5文件,RAR5 文件格式解析
  8. 全球与中国锯棕榈提取物市场深度研究分析报告
  9. XMPPFramework开发(四):电子名片
  10. python学习(二十一)