百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

上海交大:我们做了一个数据集,发现AutoML算法没那么好用

csdh11 2025-02-09 11:56 21 浏览

机器之心报道

作者:魔王、张倩

上海交大研究人员创建新型开放医疗图像数据集 MedMNIST,并设计「MedMNIST 分类十项全能」,旨在促进 AutoML 算法在医疗图像分析领域的研究。

项目地址:https://medmnist.github.io/

论文地址:https://arxiv.org/pdf/2010.14925v1.pdf

GitHub 地址:https://github.com/MedMNIST/MedMNIST

数据集下载地址:https://www.dropbox.com/sh/upxrsyb5v8jxbso/AADOV0_6pC9Tb3cIACro1uUPa?dl=0

在 AI 技术的发展中,数据集发挥了重要的作用。然而,医疗数据集的创建面临着很多难题,如数据获取、数据标注等。

近期,上海交通大学的研究人员创建了医疗图像数据集 MedMNIST,共包含 10 个预处理开放医疗图像数据集(其数据来自多个不同的数据源,并经过预处理)。和 MNIST 数据集一样,MedMNIST 数据集在轻量级 28 × 28 图像上执行分类任务,所含任务覆盖主要的医疗图像模态和多样化的数据规模。根据研究人员的设计,MedMNIST 数据集具备以下特性:

教育性:该数据集中的多模态数据来自多个具备知识共享许可证的开放医疗图像数据集,可以用作教育目的。

标准化:研究人员对数据进行预处理,将其转化为相同的格式,因此用户无需具备背景知识即可使用

多样性:多模态数据集涵盖多种数据规模(从 100 到 100,000)和任务(二分类 / 多分类、有序回归和多标签)。

轻量级:图像大小为 28 × 28,便于快速设计原型和试验多模态机器学习与 AutoML 算法。

Medical Segmentation Decathlon(医学分割十项全能)的启发,该研究也设计了 MedMNIST Classification Decathlon(MedMNIST 分类十项全能),作为 AutoML 在医疗图像分类领域的基准。

它在全部 10 个数据集上评估 AutoML 算法的性能,且不对算法进行手动微调。研究人员对比了多个基线方法的性能,包括早停 ResNet [6]、开源 AutoML 工具(auto-sklearn [7] 和 AutoKeras [8]),以及商业化 AutoML 工具(Google AutoML Vision)。研究人员希望 MedMNIST Classification Decathlon 可以促进 AutoML 在医疗图像分析领域的研究。

十个预处理数据集

MedMNIST 数据集包含 10 个预处理数据集,覆盖主要的数据模态(如 X 光片、OCT、超声、CT)、多样化的分类任务(二分类 / 多分类、有序回归和多标签)和数据规模。如表 1 所示,数据集设计的多样性导致了任务难度的多样化,而这正是 AutoML 基准所需要的。研究人员对每个数据集进行预处理,将其分割为训练 - 验证 - 测试子集。

表 1:MedMNIST 数据集概览,涵盖数据集的名称、来源、数据模态、任务和数据集分割情况。

这些数据集的数据模态涵盖 X 光片、OCT、超声、CT、病理切片、皮肤镜检查等形式,涉及结直肠癌、视网膜疾病、乳腺疾病、肝肿瘤等多个医学领域。

新型 AutoML 医疗图像基准

如前所述,研究人员受医学分割十项全能的启发,设计了「MedMNIST 分类十项全能」,旨在为医疗图像分析创建轻量级的 AutoML 基准。它在全部 10 个数据集上评估 AutoML 算法的性能,且不对算法进行手动微调。研究人员对比了多个基线方法的性能,参见下表 2:

从表 2 中可以看出,Google AutoML Vision 整体性能较好,但并不总是最优,有时甚至输给 ResNet-18 和 ResNet-50。auto-sklearn 在大部分数据集上表现不好,这表明典型的统计机器学习算法在该医疗图像数据集上性能较差。AutoKeras 在大规模数据集上性能较好,在小规模数据集上表现相对较差。没有哪种算法可以在这十个数据集上取得很好的泛化性能,这有助于探索 AutoML 算法在不同数据模态、任务和规模的数据集上的泛化效果。

接下来,我们来看不同方法在训练集、验证集和测试集上的性能情况。如下图 2 所示,算法在规模较小的数据集上容易过拟合。

Google AutoML Vision 能够较好地控制过拟合问题,而 auto-sklearn 出现了严重的过拟合。据此可以推断,对于学习算法而言,合适的 reductive bias 非常重要。我们还可以在 MedMNIST 数据集上探索不同的正则化技术,如数据增强、模型集成、优化算法等。

如何寻找数据集?

除了医疗领域之外,其他领域的数据集有时也很难获取,这就需要我们掌握一些常见的数据集搜集方法和常用资源。最近,Medium 上的一位博主介绍了多个常用的数据集获取来源:

1. Awesome Data

这是一个 GitHub 存储库,包含多个不同类别的数据集。

链接:https://github.com/awesomedata/awesome-public-datasets

2. Data Is Plural

这是一个以电子表格形式展示的数据集资源,从 2015 年开始定期更新,最新一期是 2020 年 10 月 28 日的资源,因此有些资源非常新。

链接:https://docs.google.com/spreadsheets/d/1wZhPLMCHKJvwOkP4juclhjFgqIY8fQFMemwKL2c64vk/edit#gid=0

3. Kaggle Datasets

Kaggle Datasets 提供了关于很多数据集的预览和总结性信息,非常适合用来检索特定主题的数据集。

链接:https://www.kaggle.com/datasets

4. Data.world

和 Kaggle 一样,Data.world 提供了一系列用户贡献的数据集,还为公司存储和组织自己的数据提供了平台。

链接:https://data.world/

5. Google Dataset Search

链接:https://datasetsearch.research.google.com/

6. OpenDaL

OpenDal 也是一个数据集搜索工具,你可以利用多种方式进行搜索,如根据创建时间或框定地图上的某一区域。

链接:https://opendatalibrary.com/

7. Pandas Data Reader

Pandas Data Reader 可以帮助你拉取在线资源中的数据,然后将其用到 Python pandas DataFrame 中。这里大部分是金融数据。

链接:https://pandas-datareader.readthedocs.io/en/latest/remote_data.html

8. 从 API 获取数据

利用 Python 从 API 获取数据也是数据科学家常用的一种方法,具体操作步骤可以参见以下教程。

链接:https://towardsdatascience.com/how-to-get-data-from-apis-with-python-dfb83fdc5b5b

参考链接:https://towardsdatascience.com/the-top-10-best-places-to-find-datasets-8d3b4e31c442

相关推荐

Github霸榜的SpringBoot全套学习教程,从入门到实战,内容超详细

前言...

SpringBoot+LayUI后台管理系统开发脚手架

源码获取方式:关注,转发之后私信回复【源码】即可免费获取到!项目简介本项目本着避免重复造轮子的原则,建立一套快速开发JavaWEB项目(springboot-mini),能满足大部分后台管理系统基础开...

Spring Boot+Vue全栈开发实战,中文版高清PDF资源

SpringBoot+Vue全栈开发实战,中文高清PDF资源,需要的可以私我:)SpringBoot致力于简化开发配置并为企业级开发提供一系列非业务性功能,而Vue则采用数据驱动视图的方式将程序...

2021年超详细的java学习路线总结—纯干货分享

本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。纯干货,良心推荐!第一阶段:Java基础...

探秘Spring Cache:让Java应用飞起来的秘密武器

探秘SpringCache:让Java应用飞起来的秘密武器在当今快节奏的软件开发环境中,性能优化显得尤为重要。SpringCache作为Spring框架的一部分,为我们提供了强大的缓存管理能力,让...

3,从零开始搭建SSHM开发框架(集成Spring MVC)

目录本专题博客已共享在(这个可能会更新的稍微一些)https://code.csdn.net/yangwei19680827/maven_sshm_blog...

Spring Boot中如何使用缓存?超简单

SpringBoot中的缓存可以减少从数据库重复获取数据或执行昂贵计算的需要,从而显著提高应用程序的性能。SpringBoot提供了与各种缓存提供程序的集成,您可以在应用程序中轻松配置和使用缓...

我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊

接下来你看到的将是全网最详细的Java知识点总结,全文分为三大部分:Java基础、Java框架、Java+云数据小编将为大家仔细讲解每大部分里面的详细知识点,别眨眼,从小白到大佬、零基础到精通,你绝...

1,从零开始搭建SSHM开发框架(环境准备)

目录本专题博客已共享在https://code.csdn.net/yangwei19680827/maven_sshm_blog1,从零开始搭建SSHM开发框架(环境准备)...

做一个适合二次开发的低代码平台,把程序员从curd中解脱出来-1

干程序员也有好长时间了,大多数时间都是在做curd。现在想做一个通用的curd平台直接将我们解放出来;把核心放在业务处理中。用过代码生成器,在数据表设计好之后使用它就可以生成需要的controller...

设计一个高性能Java Web框架(java做网站的框架)

设计一个高性能JavaWeb框架在当今互联网高速发展的时代,构建高性能的JavaWeb框架对于提升用户体验至关重要。本文将从多个角度探讨如何设计这样一个框架,让我们一起进入这段充满挑战和乐趣的旅程...

【推荐】强&牛!一款开源免费的功能强大的代码生成器系统!

今天,给大家推荐一个代码生成器系统项目,这个项目目前收获了5.3KStar,个人觉得不错,值得拿出来和大家分享下。这是我目前见过最好的代码生成器系统项目。功能完整,代码结构清晰。...

Java面试题及答案总结(2025版持续更新)

大家好,我是Java面试分享最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试场景题及答案。...

Java开发网站架构演变过程-从单体应用到微服务架构详解

Java开发网站架构演变过程,到目前为止,大致分为5个阶段,分别为单体架构、集群架构、分布式架构、SOA架构和微服务架构。下面玄武老师来给大家详细介绍下这5种架构模式的发展背景、各自优缺点以及涉及到的...

本地缓存GuavaCache(一)(guava本地缓存原理)

在并发量、吞吐量越来越大的情况下往往是离不开缓存的,使用缓存能减轻数据库的压力,临时存储数据。根据不同的场景选择不同的缓存,分布式缓存有Redis,Memcached、Tair、EVCache、Aer...