万字长文 - Nature 综述系列 - 给生物学家的机器学习指南 2 (传统机器学习方法如何选择)...

news2025/4/14 22:36:37

万字长文 - Nature 综述系列 - 给生物学家的机器学习指南 1

20ba0635b9fbfc38993a7adece3927ee.png

传统的机器学习

我们现在讨论几种关键的机器学习方法的优势和劣势。表1显示了不同机器学习方法的比较。我们首先讨论不基于神经网络的方法,有时被称为“传统机器学习”。

图3显示了一些传统的机器学习方法。可以使用各种软件包来训练这些模型,包括

Python中的scikit-learn (『SKLearn』最全应用指南 (万字长文) | 图解机器学习实战)、

R中的caret包(Classification and Regression Training)(基于Caret和RandomForest包进行随机森林分析的一般步骤 (1))

和Julia中的MLJ (Machine Learning in Julia)。

f1889ee6081716f009029915080336f1.png74b3d5327d9776b37a0eb3118e90a907.pngb40fa52d845e5b483017275a19cdf9a5.png

044b4a74f7298394ef611f2e4cc2b4c7.png

图3 | 传统机器学习方法。a | 回归分析找出因变量(观察属性)与一个或多个自变量(特征)之间的关系;例如,根据一个人的身高预测其体重。b | 支持向量机(SVM)对原始输入数据进行变换,以便在变换后的版本(称为“隐变量”)中,属于不同类别的数据之间有一个尽可能宽的明确间隙。在这个例子中,我们展示了如何预测蛋白质是有序还是无序,其中轴表示变换数据的维度。c | 梯度提升使用一组弱预测模型(通常是决策树)进行预测。例如,可以根据分子描述符(如分子量和特定化学基团的存在)预测活性药物。单个预测器以分阶段的方式组合,以得出最终预测。d | 主成分分析(PCA)找到一系列特征组合,这些特征组合可以在互相正交的同时最好地描述数据。它通常用于降维。在描述一个人的身高和体重的情况下,第一个主成分(PC1),相当于身高和体重的线性组合,描述了强烈的正相关,而PC2可能描述了与这些变量没有强相关的其他变量,例如体脂百分比或肌肉质量。e | 聚类:使用算法对相似对象的集合进行分组(例如,根据基因表达谱对细胞类型进行分组)。

线性回归:一种模型,假设输出结果可以通过输入特征的线性组合计算得出;即,每个输入特征乘以一个单一参数,然后将这些值相加。这些模型的预测方式很容易解释。

核函数:应用于每个数据点的转换,将原始点映射到一个相对于其类别可分离的空间中。

非线性回归:一种模型,其中输出是通过输入的非线性组合计算得出的;即,在预测过程中,可以通过诸如乘法等操作组合输入特征。这些模型可以描述比线性回归更复杂的现象。

k近邻算法:这是一种分类方法,其中根据训练集中k个最相似点的已知(基准真相)类别通过多数投票规则对数据点进行分类。k是一个可以调整的参数。通过对k个最近邻居的属性值求平均,也可以用于回归分析。

当开发用于生物数据的机器学习方法时,通常应先在传统的机器学习算法视中寻找最适合给定任务的方法。深度学习可以是一种强大的工具,目前无可否认是一种潮流。然而,它仍然被限制在它所擅长的应用领域:当存在大量可用数据时(例如,数百万数据点);当每个数据点具有许多特征时;以及当特征高度结构化时(特征彼此之间具有清晰的关系,例如图像中的相邻像素)。DNA、RNA和蛋白质序列以及显微图像等数据是可以满足这些要求并有应用深度学习的成果案例。然而,即使满足了其他两个要求,对大量数据的需求会使深度学习成为一个糟糕的选择。

与深度学习相比,传统方法开发和测试给定问题的速度要快得多。与支持向量机(SVM)和随机森林等传统模型相比,开发深度神经网络的架构,然后对其进行训练,可能是一项耗时且计算昂贵的任务。尽管存在一些方法,但对于深度神经网络,估计特征的重要性(即,每个特征对预测的贡献有多重要)或模型预测的置信度仍然是一个难点,而这两者对生物研究通常是必不可少的。即使深度学习在技术上对于特定的生物预测任务是可行的,如果可能的话,训练一种传统的方法来与基于神经网络的模型进行比较仍然是明智的

传统方法通常期望数据集中的每个示例具有相同数量的特征,而这并不总是可能的。一个明显的生物学例子是,当使用蛋白质、RNA或DNA序列时,每个序列都有不同的长度。要对这些数据使用传统方法,可以使用填充滑窗等简单技术来更改数据,使其特征长度相同。“填充”意味着对每个示例进行填充,并添加诸如零等的值,直到其大小与数据集中最大的示例相同。相比之下,滑窗将单个实例的特征缩短到给定大小(例如,仅使用长度在100以上的蛋白质序列数据集中每个蛋白质的前100个氨基酸)。

分类和回归模型的使用。对于图3a中所示的回归问题,岭回归(ridge regression, 带有正则化项的线性回归)通常是开发模型的很好的起点,因为它可以为给定任务提供快速且易于理解的基准结果。线性回归的其他变体,如LASSO回归弹性网络回归,在需要模型依赖可用数据中的最小数量的特征时也值得考虑。不幸的是,数据中特征之间的关系通常是非线性的,因此对于这些情况,使用诸如SVM之类的模型通常是更合适的选择。支持向量机是一种强大的回归和分类模型,它使用核函数将不可分离问题转换为更容易解决的可分离问题。SVM可用于执行线性回归和非线性回归,具体取决于所使用的核函数。开发模型的一种好方法是训练一个线性SVM和一个具有径向基函数核的SVM(一种通用的非线性类型的SVM),以量化从非线性模型中可以获得的增益(如果有的话)。非线性方法可以提供更强大的模型,但代价是不容易解释哪些特征正在影响模型,这是引言中提到的一种折衷。

回归中常用的许多模型也用于分类。训练线性SVM和具有径向基核函数的SVM也是分类任务的良好默认起点。可以尝试的另一种传统方法是k近邻分类。作为最简单的分类方法之一,k近邻分类提供了一个有用的基准性能标记,可以与其他更复杂的模型(如SVM)进行比较。另一类鲁棒的非线性方法是基于集成的模型,如随机森林和XGBoost。这两种方法都是强大的非线性模型,并且有提供了特征重要性估计和需要最小的超参数调整的优势。由于提供了特征重要性值的估计和决策树结构,当要从上面概念上了解哪些特征对预测模型贡献最大时,这些模型是一个很好的选择。

对于分类和回归,许多可用的模型往往具有令人困惑的衍生模型和变体模型。试图先验地预测某一特定方法对某一特定问题的适合程度可能是骗人的,相反,采用经验的、试错的方法来找到最佳模型通常是最严谨的方式。使用现代机器学习套件(如scikit-learn),在这些模型变体之间进行更换通常只需要更改一行代码,因此选择最佳方法的一个好的总体策略是训练和优化各种上述方法,并在最终比较其在测试集上的性能之前,选择在验证集上性能最佳的方法。

使用聚类模型。聚类算法的使用(图3e)在生物学中很普遍。k-means是一种强大的通用聚类方法,与许多其他聚类算法一样,需要将聚类数量设置为超参数。DBSCAN是一种替代方法,它不需要预定义簇的数量,但需要设置其他超参数。还可以在聚类之前执行降维,以提高对具有大量特征的数据集的计算性能。

降维。降维技术用于将具有大量属性(或维度)的数据转换为低维形式,同时尽可能保留数据点之间的相对关系。例如,相似的数据点(例如,两个同源的蛋白质序列)在其低维形式上也应该相似;而不同的数据点,例如,不相关的蛋白质序列,应该保持不同。通常选择二维或三维来实现数据分布的可视化,尽管在机器学习中也会用更多的维度作为输入。这些技术包括数据的线性和非线性变换。生物学中常见的例子包括如图3d所示的主成分分析(PCA)统一流形逼近与投影(UMAP)和t分布随机邻域嵌入(t-SNE)。使用的技术取决于具体情况:PCA保留了数据点之间的全局关系,并且是可解释的,因为每个主成分都是输入特征的线性组合,这意味着很容易理解哪些特征会导致数据的变化。t-SNE更注重保留数据点之间的局部关系,是一种可以揭示复杂数据集结构的灵活方法。应用包括单细胞转录组学中t-SNE 用于细胞分型和PCA 用于分子发育学轨迹分析。

文章参考:https://www.nature.com/articles/s41580-021-00407-0

往期精品(点击图片直达文字对应教程)

5121fa4edb51cddc87c8d6ebf6b063fa.jpeg

f656f711e8d2a1be32d59d931076bcc6.jpeg

dfdfcd20d7e146b25dcf6988599e7c64.jpeg

630adbc762ada11dd96705e713178b4f.jpeg

21262706f14b25626479a6fce3d0e082.jpeg

f2671d73b3e454a8f56d4eb32db315db.jpeg

57ba44ea7e3542808813f073b6a7605c.jpeg

8b29f82b0ead48ee468a8ece2303e44d.jpeg

badb42e1ff3fdcdeb4fad887d8d5b642.jpeg

f5743dda7cc870c76a9e83cb9ca215cd.jpeg

01dba5eda51542e93020eea82728736a.jpeg

da02c1418b1df85a63b961bc67a88a49.jpeg

f8a3104c955df8e12dc3777077a2a7ff.png

011c694653c79aecd48c7cce07130be3.png

8ae1ec8ebb5dd3dc65c6e9248d121879.png

967f8c2ded3565455d60b413ec7b48dc.png

2d7baf5346e85ac5fe064603bdec03e6.jpeg

679fc22fd66cce21334682c71a86c411.jpeg

e20c9f68bf5485f3bdc1b395cefd7b83.jpeg

099be0a1ca15d8fe10f82f570044701a.jpeg

7944c16d509df5128485d15729a4e9cf.png

037640e23e71ee7f338ffb6c64eb9d97.png

7af3e397141e0a6eddd153bfaffb96b2.jpeg

349532c7e98e90377b4d7f81fee1c75a.png

f10bab0c876f4c7690625a6d242f5c37.png

725d5a4ccce83ab63286111731a8bb8b.jpeg

158a8b28613535f47ad7c842d29659fc.png

d5ce1427b921ebf3780cdd056272168b.png

机器学习

后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集

1c7ff32eb5eb8bd8ceb6062c6915729e.jpeg

763f006e30af996c2e126d44011f08c8.jpeg

fbec943c68d785c6a89af35a6d3454d9.png

592af2e43ac9f66b8a947c055a340c47.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/474754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法基础】常见排序算法(持续更新中)

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:【C/C】算法 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有…

【KVM虚拟化】· 图形化KVM安装linux

目录 🍁虚拟化技术 🍂KVM的整体结构 🍂KVM 的功能列表 🍂KVM 工具集合 🍁安装kvm虚拟化功能 🍁创建虚拟机 🦐博客主页:大虾好吃吗的博客 🦐专栏地址:KVM虚拟化…

FreeRTOS 信号量(二) ------ 计数型信号量

文章目录 一、计数型信号量1. 计数型信号量简介2. 创建计数型信号量①函数 xSemaphoreCreateCounting()②函数 xSemaphoreCreateCountingStatic() 3. 计数型信号量创建过程分析4. 释放和获取计数信号量 二、计数型信号量操作实验 一、计数型信号量 1. 计数型信号量简介 有些资…

数据结构与算法(小议递归)

文章目录 前言一、递归是什么?二、在什么时候适用递归1.测试一下 总结 前言 递归是一种常用的算法设计,递归就是一种循环推理。简单来说就是调用原算法本身的算法。 这里主要探讨递归的使用, 一、递归是什么? 用一个简单的例子来…

嵌入式代码查看分析利器---Understand

平时在开发嵌入式程序的时候大多数使用的都是keil软件,一般小的工程使用keil没感觉到有什么问题,但是当工程比较大的时候,比如移植了FreeRTOS系统或者LWIP网络系统时,代码全部编译一次就要花费很长世间,特别是开启了点…

CIKM论文解读 | 淘宝内容化推荐场景下对多场景全域表征的思考与应用

我们结合逛逛推荐场景中的具体问题,从多场景全域表征的视角进行了一系列的探索与内容推荐场景的应用,从全域表征的范围、信息迁移方式以及模型框架的应用等维度展开我们的优化工作,取得了阶段性的优化经验和业务效果。 背景介绍 淘宝逛逛自20…

鸿蒙混合打包。在现有安卓应用的基础上扩展鸿蒙的特性,以最快的速度布局鸿蒙生态!

鸿蒙混合打包 介绍 鸿蒙混合打包。在现有安卓应用的基础上扩展鸿蒙的特性,以最快的速度布局鸿蒙生态! 参考:京东APP鸿蒙版上架实践。本项目只是这篇文章的一个验证,让更多的兄弟们可以少走弯路。 我尽可能把每一步的改动作为一…

【HarmonyOS】【JS】Tabs如何设置区分TabBar和TabContent的分割线不显示

【关键字】 Tabs,分割线 【问题描述】 使用JS开发HarmonyOS应用时,使用Tabs组件,默认自带TabBar和TabContent的蓝色分割线,由于蓝色分割线样式不可设置,若不想要此蓝色分割线,如何去除蓝色分割线&#xf…

搭建外网minecraft服务器方案

很多minecraft服务器主都想自己搭建一个外网可以访问的minecraft服务器,在没有外网IP的情况下,一般都是使用Logmein Hamachi方案。这种方案有它的弊端,需要客户机安装Hamachi,十分不方便。另外,免费版只支持5人&#x…

C++三大特性—继承 “基类与派生类之间的类型转换与赋值转换”

理解基类与派生类之间的类型转换是理解C语言面向对象编程的关键所在 继承 通过继承联系在一起的类构成一种层次关系,层次关系的根部有一个基类,其他直接或间接从基类继承而来,称为派生类。    继承(inheritance)机制是面向对象程序设计使代…

Spring RabbitMQ 实现消息队列延迟

1.概述 要实现RabbitMQ的消息队列延迟功能,一般采用官方提供的 rabbitmq_delayed_message_exchange插件。但RabbitMQ版本必须是3.5.8以上才支持该插件,否则得用其死信队列功能。 2.安装RabbitMQ延迟插件 检查插件 使用rabbitmq-plugins list命令用于查看…

C++引用进阶篇:让你的程序更加高效、安全、简洁

文章目录 前言1. 引用和临时数据🍑 什么样的临时数据会放到寄存器中🍑 关于常量表达式🍑 引用也不能指代临时数据🍑 引用作为函数参数 2. 为const引用创建临时变量3. const引用与转换类型🍑 引用类型的函数形参请尽可能…

SPFA 算法:实现原理及其应用

文章目录 一、前言二、SPFA 算法1、SPFA算法的基本流程2、代码详解 三、SPFA 算法已死 ? 一、前言 SPFA算法,全称为Shortest Path Faster Algorithm,是求解单源最短路径问题的一种常用算法,它可以处理有向图或者无向图&#xff0…

PySide2 QWebEngine与Web js交互

文章目录 单向交互双向传值案例 单向交互 QWebEngineView加载web页面&#xff0c;web页面中点击按钮&#xff0c;执行js代码&#xff0c;js的返回值传给QWebEnginePage&#xff0c;使用python进行保存结果。 单向&#xff0c;js向python(PySide2)端传输数据。 前端实现 <…

前端web3入门脚本三:一键完成与dex的交互,羊毛党必备

前言 该脚本用途&#xff1a;一键可以完成与dex的所有交互&#xff0c;包括2次swap&#xff0c;添加/移除流动性&#xff0c;以及farm和提取LP。一次运行可以有6条交易记录。 无论是个人单刷还是羊毛党批量地址刷交互都完美适配。当然反女巫方案不在这次文章的讨论范围内。 一、…

javascript中find(), filter(), some(), every(), map()等方法介绍

1、find() find() 用于找出第一个符合条件的数组成员。它的参数是一个回调函数&#xff0c;所有数组成员依次执行该回调函数&#xff0c;直到找出第一个返回值为true的成员&#xff0c;然后返回该成员。如果没有符合条件的成员&#xff0c;则返回undefined。 find()方法的回调…

利用Matab进行覆盖计算----战术计算

在 contour函数中添加如下代码 %------- 计算畅通区面积和占比例 --------% Spi*maxrange*maxrange/1e6; S0 nnz(isInRange)*reslons*reslats/1e6;isnn ~isnan(cdata); cdata0 cdata(isnn); S1numel(cdata0)*reslons*reslats/1e6;AS1/S0; % 畅通区所占比例; fprintf("…

CLion开发工具 | 06 - 使用CLion开发STM32(无需Cmake)

专栏介绍 文章目录 专栏介绍一、准备工作1. 工具准备2. 裸机工程准备二、使用CLion打开工程三、基于CLion写代码1. LED blink代码2. printf重定位代码四、编译工程1. 编译配置2. 选择编译目标3. 编译五、烧录1. OpenOCD基础知识(了解)2. 设置CLion路径3. 新建CLion配置文件4.…

面试总结,4年经验

小伙伴你好&#xff0c;我是田哥。 本文内容是一位星球朋友昨天面试遇到的问题&#xff0c;我把核心的问题整理出来了。 1&#xff1a;Java 层面的锁有用过吗&#xff1f;除了分布式锁以外 是的&#xff0c;Java中提供了多种锁机制来保证并发访问数据的安全性和一致性。常见的J…

分析GC日志解读

目录 GC分类 GC日志分类 GC日志结构剖析 透过日志看垃圾收集器 透过日志看GC原因 GC日志分析工具 GC分类 针对HotSpot VM的实现&#xff0c;它里面的GC按照回收区域又分为两大种类型&#xff1a;一种是部分收集&#xff08;Partial GC&#xff09;&#xff0c;一种是整堆…