根据标签对模型性能的预期影响,优先标记细胞成像样本。
介绍
面临许多机器学习任务的主要障碍之一是缺乏标记数据。标记数据可能会耗费大量精力且成本高昂,因此很多时候甚至尝试使用机器学习方法解决问题都是不合理的。
为了缓解这个问题,出现了机器学习领域,称为主动学习。主动学习是机器学习中的一种方法,它提供了一个框架,用于根据模型已经看到的标记数据对未标记数据样本进行优先级排序。我们不会详细介绍它,您可以阅读机器学习中的主动学习文章,该文章深入解释了它的基础知识。
细胞成像中的数据科学是一个快速发展的研究领域。然而,与其他机器学习领域一样,标签很昂贵。为了解决这个问题,我们在本文中展示了红细胞和白细胞的图像细胞主动学习分类任务的端到端工作。
我们的目标是介绍生物学和主动学习的结合,并帮助其他人使用主动学习方法解决生物学领域中类似和更复杂的任务。
文章由3个主要部分构成:
细胞图像预处理
数据集
我们将使用根据 MIT 许可上传到GitHub和Kaggle的血细胞图像数据集。每个图像都根据红细胞 (RBC) 与白细胞 (WBC) 类别进行标记。有 4 种 WBC(嗜酸性粒细胞、淋巴细胞、单核细胞和中性粒细胞)的附加标签,但我们在研究中没有使用这些标签。
这是来自数据集的全尺寸原始图像的示例:
一个白细胞被 16 个红细胞包围
创建示例数据框
我们发现原始数据集包含一个export.py脚本,该脚本将 XML 注释解析为CSV 表,其中包含每个单元格的文件名、单元格类型标签和边界框。
不幸的是,原始脚本没有包含必要的cell_id列,因为我们正在对单个单元格进行分类。因此,我们稍微修改了代码以包含此列,并选择包含image_id和cell_id的新文件名(代码留言获取)。
裁剪
为了能够处理数据,第一步是根据边界框坐标裁剪全尺寸图像。这会产生时髦的细胞图像:
白细胞 (WBC)
红细胞 (RBC)
红细胞
红细胞
白细胞
红细胞
红细胞
红细胞
红细胞
将图像裁剪到单元格并更新文件名。(代码留言获取)。
预处理就是这样!现在,继续使用 CellProfiler 提取特征。
使用 CellProfiler 提取细胞特征
CellProfiler是一款免费的开源图像分析软件,旨在从大规模细胞图像中自动定量测量表型。CellProfiler 有一个用户友好的 gui,允许您使用内置的管道以及构建自己的管道,以满足您的特定需求,使用各种测量和特征。
入门:
首先,下载 Cellprofiler,如果 CellProfiler 打不开,你可能需要安装Visual C++ Redistributable。
一旦 gui 弹出,加载图像并将有组织的元数据写入 CellProfiler。如果您选择构建自己的管道,您可以在此处找到通过 CellProfiler 提供的功能列表。大多数功能分为三个主要组:图像处理、对象处理和测量。
我们使用的特征示例:
您始终可以保存您的管道配置并重复使用它或与全世界分享。
CellProfiler 可以将输出数据保存为电子表格和数据库。我们将输出保存为 CSV 文件并将其加载到 Python 以进行进一步处理。
如何引用细胞分析器
使用主动学习
好的,现在我们终于有了可以尝试试验的表格数据。我们想试验使用主动学习策略是否可以通过标记更少的数据并获得更高的准确性来节省时间。我们的假设是,使用主动学习,我们可以通过显着减少在细胞分类任务上训练机器学习模型所需的标记数据量来节省宝贵的时间和精力。
主动学习框架
在我们深入实验之前,我们想快速介绍一下modAL。ModAL 是一个用于 python 的主动学习框架。它共享 Sklearn API,因此如果您使用 Sklearn,很容易将其集成到您的代码中。该框架允许您轻松使用不同的最先进的主动学习策略。他们的文档很容易理解,我们真的建议在您的主动学习管道中使用它。
主动学习 VS 随机方法
本实验
为了验证我们的假设,我们将进行一项实验,该实验将比较随机二次抽样策略以添加新的标记数据,以及主动学习策略。我们将开始用几个相同的标记样本训练 2 个逻辑回归估计器。然后,我们将对一个模型使用随机策略,对第二个模型使用主动学习策略。稍后我们将解释这将如何准确地工作。
为实验准备数据
我们首先加载由 Cell Profiler 创建的特征。为了使事情变得更容易,我们过滤了无色血细胞的血小板。我们只保留红细胞和白细胞。因此,我们试图解决一个二元分类问题——RBC vs WBC。然后我们使用sklearn标签编码器设置标签,从数据中提取学习特征到X,最后分割数据进行训练和测试。
拆分实验的训练/测试集,代码留言获取。
为实验准备数据
现在我们将设置模型,初始化基线和主动学习者。代码留言获取。
虚拟学习器将是使用随机策略的模型,而主动学习器将是使用主动学习策略的模型。为了实例化一个主动学习模型,我们使用 modAL 包中的 ActiveLearner 对象。在“估计器”字段中,您可以插入任何适合数据的 sklearn 模型。“ query_strategy ”字段是您选择特定主动学习策略的地方。我们使用了“不确定性采样() ”。有关更多信息,请查看modAL 文档。
拆分训练数据
为了创建我们的虚拟策略实验,我们将训练数据分成两组。第一个是我们知道其标签的训练数据,我们将使用它来训练我们的模型。第二个是训练数据,我们表现得好像我们不知道它的标签。我们将已知的训练大小设置为 5 个样本。
为每个模型拆分数据集,代码留言获取。
模拟主动与虚拟
现在,我们将运行 298 个 epoch,在每个 epoch 中,我们将训练每个模型,选择下一个样本,我们将根据每个模型的策略插入“基础”数据,并沿着每个 epoch 测量其准确度。我们将使用平均精度分数来衡量模型的性能。我们选择这个指标是因为数据集的不平衡性质。
要在随机策略中选择下一个样本,我们只需将下一个样本添加到虚拟数据集的“新”组中。该数据集已洗牌,因此无需重新洗牌。要使用主动学习框架选择下一个样本,我们将使用名为“查询”的 ActiveLearner 方法,该方法获取“新”组的未标记数据,并返回他建议添加到训练“基础”中的样本索引团体。我们选择的每个样本都会从“新”组中删除,这样就不会选择两次或更多的样本。
运行主动学习实验的代码留言获取。
结果
虚拟与主动学习的平均精度得分
策略之间的差异是惊人的!
我们可以看到,使用主动学习,我们只需 25 个样本就可以达到 0.9 的平均精度!而使用虚拟策略需要 175 个样本才能达到相同的精度!多么大的差距!
此外,Active 模型达到几乎 0.99 的高分,而 dummy 停止在 0.95 左右!如果我们使用所有数据,那么它们最终将达到相同的分数,但出于我们的目的,我们限制了数据集中的 300 个随机样本。
代码留言获取。
结论/讨论
本文展示了将主动学习用于细胞成像任务的好处。
主动学习是机器学习中的一组方法,它提供了一种解决方案,根据标签对模型性能的预期影响对未标记数据样本进行优先级排序。由于标记数据是一项涉及许多资源(金钱和时间)的任务,因此值得优先考虑要标记的样本以最大化模型的性能。
细胞成像与数据科学有什么关系?
细胞成像对生物学、医学和药理学领域做出了巨大贡献。它用于识别细胞的类型、毒性、完整性和相位,这些信息对于医疗保健提供者和科学家识别疾病和扩大我们对细胞生物学的理解至关重要。
以前,分析细胞图像需要宝贵的专业人力资本。显微镜方法的质量和可用性以及先进的机器学习算法的现代改进,使数据科学领域能够彻底改变细胞成像。这些新技术催生了动态和多维的质量数据库,处理这种现代细胞成像数据的能力在细胞生物学领域的发展中发挥着至关重要的作用。
参考
留言与评论(共有 0 条评论) “” |