机器学习已经成为很多领域的必备工具,除了在通常的计算机领域风生水起,在生物信息学、计算生物学和健康信息学中都逐渐变得举足轻重。同时随着近年来数据的增加和网络服务的拓展,生物学正在被新的技术不断变革创新,和机器学习产生了前所未有的紧密结合。然而很多初学者和生物研究人员对于机器学习缺乏经验和训练,可能会在使用这些工具的时候放错并得到错误的结果。
这篇文章来源于生物数据挖掘领域的期刊,详细介绍了如何上手计算生物学,将最先进的数据工具用于自己的科研项目。其中还列举了一系列需要避免的陷阱和成功的实践经验。希望大家都能从中受益,并充分利用机器学习探索生命的奥秘。
Tip 1:正确检查和排列输入的数据集
我们第一条建议并不是关于机器学习算法本身而是关于数据的。机器学习项目最重要的一点并不是算法而是数据集属性和排列。
在进行任何数据挖掘工作之前,我们必须考虑是否有足够的数据训练机器学习来解决这个计算生物学问题?虽然收集更多的数据对机器学习模型来说总是有益的,但要确定能够正确训练机器学习算法的最小数据集可能并不是一个容易的问题。
在解决数据集大小问题后,最先要考虑的问题是数据集排列,这将决定机器学习项目在其科学任务中成败与否的关键。鉴于每个数据集域的重要性和唯一性,只有研究者清楚地了解数据集的细节,并且能够在运行任何数据挖掘算法之前对其进行适当的排列,机器学习项目才能成功。
适当地安排生物数据集意味着很多方面,通常将所有工作集合到一个称为数据预处理的步骤中。最常见的方法是随机排列数据。然后筛选数据,即丢弃所有损坏、不准确、不一致或异常值的数据。最后从小规模数据集开始、创建具有与原始数据集相同正负比率的小规模微型数据集,并 利用其调整算法。一旦该算法在小规模测试数据集上产生满意的结果,将其应用于原始大数据集。
Tip 2 :将输入数据集拆分为三个独立的子集(训练集、验证集、测试集),并且仅在完成训练和优化阶段后才使用测试集
始终将输入的数据集拆分为三个独立的子集:训练集、验证集和测试集。只拆分成训练集和测试集的做法是不完整的。通常建议的拆分比率为,50 %的数据作为训练集,30 %的数据作为验证集,20 %的数据作为测试集 。当数据集太小不可行时,应考虑其他替代技术如交叉验证。
分割子集后,使用训练集和验证集来训练模型以及优化超参数值,并保留测试集。最后,在找到最佳超参数并训练算法后,将训练好的模型应用于测试集,并检查其表现。这种方法(也称为“锁盒方法” lock box approach )是每一个机器学习项目的关键。
Tip3 :将生物问题归入正确的算法类别
在选择数据挖掘方法之前,必须将生物问题划分到正确的算法类别中。先问自己几个问题:数据集是否有目标标签?也就是说,对于每个数据实例,是否有一个绝对真实的标签,可以用来判断待检测的信息是否与该数据集中的实例相关联?如果是,可将任务归纳于监督学习类别,如果不是,则归纳于无监督学习类别。
举个栗子,假设有一个数据集,其中行表示患者的概况,而列表示患者的相关生物学特征。其中一个特征是患者的诊断结果,即是健康还是不健康,这可以被称为该数据集的目标标签(或输出变量)。在这种情况下,数据集包含每个数据实例的目标标签,因此预测这些目标的问题可以称为监督学习。计算生物学中流行的监督学习算法是支持向量机(upport vector machines , SVMs ) 、k –邻近算法(k-nearest neighbors , k - NN ) 和随机森林算法。
如果目标输出是有限类别的数据(如细胞外,细胞质或细胞核等特定的细胞位置),我们称之为问题分类任务。如果可能的目标值只有两个(如真或假,0或1,健康患者或不健康患者),我们称之为二分类。如果目标是具体数值,则是回归任务。
目标标签并不总是存在于生物数据集中。当数据未标记时,仍然可以使用机器学习来推断数据实例之间的隐藏关联,或者发现数据集的隐藏结构。这些情况称为无监督学习或聚类分析任务。计算生物学中常用的无监督学习方法包括k均值聚类,截断奇异值分解法(truncated singular value decomposition , TSVD ),概率隐性语义分析(probabilistic latent semantic analysis,pLSA )。
一旦理解了数据集,就必须决定自己的项目应该解决哪类问题,然后选择正确的机器学习算法来进行预测。
Tip 4 :如何选择算法?从最简单的开始!
一旦确定的问题的种类,就必须选择机器学习算法来开始这个项目。缺乏经验的人最终可能选择复杂、不适当的数据挖掘方法,这可能导致不良结果,并浪费宝贵的时间和精力。因此,如果犯了选择困难症,就请从最简单的算法开始。
一个简单的算法比复杂的方法具有更好的泛化能力、更少的过拟合机会、更容易训练和更快的学习性能。简单算法的例子是用于无监督学习的k -均值聚类和用于有监督学习的k –邻近算法。
关于k –临近算法,假设有一个由1000个真实数据实例组成cDNA 微阵列输入数据集,每个数据具有80个特征和1个二进制目标标记。此数据集可以用由1000行和81列组成的表表示。根据我们的建议,如果可以使用监督学习方法学习生物数据集,则可以考虑开始使用简单算法如k-邻近算法( k - NN )对实例进行分类。因为算法简单,你可以监督(并可能调试)每个步骤,特别在出现问题的时候。如果算法性能令人满意,可以继续到完成项目为止。否则,可以轻松切换到另一个算法,并使用该算法的输出结果作为比较对照。
Tip 5 :小心处理不平衡数据集问题
在计算生物学和生物信息学中,经常会出现不平衡数据集。不平衡数据集是指,相对于另一个类别的数据,某一类别的数据被过度表示的数据集(图1c )。例如,一个典型的可以用非负矩阵分解分析的基因本体注释数据集,通常只有大约0.1 %的正数据实例和99.9 %的负数据实例,正类和负类样本数悬殊极大。
如果比例差异如此巨大,如何训练分类器能够正确预测正数据实例和负数据实例?也许学习模型将快速学习如何识别过度表示的负数据实例,但在识别稀缺的子集实例,即本例中的正数据时将遇到困难。
关于在训练集中使用什么比例的数据的建议是,取50 %和实际百分比之间的平均值。即,在90 % : 10 %的数据集中,在训练集中插入( 90 % + 50 % ) / 2 = 70 %的负数据集和( 10 % + 50 % ) / 2 = 30 %的正数据集。显然,如果每个数据集都有足够的数据来创建70 % : 30 %的训练集,则此过程是可行的。或者,也可以根据Bayes规则通过合并数据实例的经验标签分布来平衡数据集。虽然这种方法更精确,但对初学者来说可能过于复杂,因此建议从上述探索式比率开始入手。
解决数据不平衡的最好的方法是收集更多的数据。如果不可行,则常见且有效的策略是数据类加权,其中根据数据实例属于多数类还是少数类将不同的权重分配给数据实例。数据类加权是解决机器学习中不平衡数据问题的一种标准技术。
其他的方法还包括从过多的数据类别中删除数据。而缺点是,分类器无法学习被排除的数据了。此外,为了正确处理不平衡数据集问题,在测量预测性能时,不能依赖精度(公式1),平衡精度或F1分数(公式2 ),而要依赖马修斯相关系数( MCC,公式3 )。在常见的性能评估得分中,MCC是唯一正确地考虑混淆矩阵大小的比率的得分。特别是在不平衡数据集上,MCC能够正确地判断预测评估是否进行得顺利,而准确性或F1评分则无法做到。
Tip 6 :优化每个超参数
机器学习算法的超参数是算法统计模型的高级属性,对算法的复杂度、学习速度和应用结果有很大影响。算法不能直接从训练阶段学习超参数,而是必须在训练步骤开始之前设置超参数。
K最邻近方法:随超参数k变化情况下的不同结果
选择最佳超参数的方法是网格搜索。将输入数据集划分为训练集、验证集和测试集后,保留测试集,并在使用特定的超参数值时使用验证集来评估算法。然后,针对每个可能的超参数值,在训练集上训练模型,并通过马修斯相关系数( MCC )或曲线下的精度召回区域在验证集上对其进行评估,并将分数记录到一组真实值中。一旦尝试了所有可能的超参数值,选择获得最高性能得分的值(算法1中的besth)。最后,把具有besth的模型作为超参数在训练集上训练,并将其应用于测试集(算法1)。
或者,可以考虑利用一些自动机器学习软件,自动优化所选算法的超参数。这些软件包包括 Auto-Sklearn , Auto-Weka, TPOT和 PennAI。
再次强调将数据集拆分为三个不同的独立子集----训练集、验证集和测试集的重要性:。这三个子集必须不包含并集,并且必须随机选择数据实例,以免数据收集顺序影响算法。因此强烈建议在数据集读取之后(算法1的第一行)对整个输入数据集应用随机混洗。
Tip 7 :尽量减少过拟合
在数据挖掘中,算法过度适应训练集时会发生过拟合,从而导致验证集(和测试集)性能下降。
在训练过程中,统计模型必须最小化其性能误差(通过用于回归的均方误差或用于分类的交叉熵来测量)。但在测试过程中,它必须最大限度的对看不见的数据做出正确的预测。这种“双重目标”可能导致模型去记忆训练数据集,而不是完成它的主要任务去学习数据趋势。因而发生了过度拟合。
有几个强大的工具来对抗过度拟合:交叉验证和正则化。通过交叉验证,训练后的模型不会过度适应特定的训练子集,而是能够依次从每个数据文件夹中学习。正则化是一种数学技术,在训练期间通过添加惩罚值来惩罚评估函数,惩罚值随着学习参数的权重而增加。
Tip 8 :使用Matthews相关性系数 ( MCC ) -或精度召回曲线评估算法性能
将训练好的模型应用于验证集或测试集时,需要统计指标来衡量性能。
在典型的监督二进制分类问题中,对于验证集(或测试集)的每个元素,都有一个标签,说明该元素是正的还是负的(通常为1或0 )。机器学习算法对验证集的每个元素进行预测,表示它是阳性还是阴性,并根据这些预测和金标准标签,将每个元素分配到以下类别之一:真阴性( TN )、真阳性( TP )、假阳性( FP )、假阴性( FN ) (表1)
如果该集的许多元素属于前两类( TP或TN ),意味着算法能够正确预测验证集( TP )中为正的元素,或者正确将验证集( TN )中为负的实例分类为负。相反,如果有许多FP实例,意味着方法错误地将验证集中的许多负元素归类为正元素。此外,许多FN元素意味着分类器错误地将验证集中的许多正元素预测为负。为了全面评估预测,你可能会使用常用统计评分,如准确性(上文公式1 )和F1得分(公式2 )。
然而,即使准确度和F1分数被广泛地用于统计中,两者都可能存在误导,因为在最终分数计算中没有充分考虑四类混淆矩阵的大小。
例如,有一个非常不平衡的验证集,由100个元素组成,其中95个元素是正元素,只有5个元素是负元素(如Tip 5中所述)。假设在设计和训练机器学习分类器时也犯了一些错误,那你就得到了一个总是预测正值的算法,并且没有意识到这个问题的存在。
具体来看实例。将只预测正值的预测器应用于不平衡的验证集,可以获得混淆矩阵类别的值如下:
TP = 95,FP= 5;TN= 0,FN= 0。
这些值获得的性能得分为:准确性= 95 %,F1得分= 97.44 %。如果仅仅只看这些过度乐观的指标,你会觉得机器学习算法做得很好。但事实是一个大错特错的模型。
相反,为了避免这些误导,还有另一个性能得分可以利用:马修斯相关系数( MCC,公式3)。
通过考虑混淆矩阵的每一组别在其公式中的比例,只有当分类器在负元素和正元素上都表现良好时,混淆矩阵的分数才会高。
在上面的示例中,MCC得分无法定义(因为TN和FN 是0,公式3的分母是0 )。通过检查此值,而不是准确性和F1分数,将能够注意到分类器的方向错误,并且意识到在继续下个步骤之前应该解决一些问题。
考虑另外一个例子。在同一数据集上运行分类,得到的混淆矩阵类别的值如下:
TP = 90,FP= 5;TN = 1,FN = 4。
在此示例中,分类器在对正实例进行分类时表现良好,但无法正确识别负数据元素。同样,得到的F1得分和准确度得分非常高:准确度= 91 %,F1得分= 95.24 %。与前一种情况类似,如果研究人员仅分析这两个得分指标,而不考虑MCC,就会错误地认为算法在任务中表现得相当好,并产生成功的错觉。因此,检查马修斯相关系数极为关键。在该示例中,MCC的值是0.14 (公式3 )。暗示算法的执行类似于随机猜测。作为警报,MCC能够通知数据挖掘者统计模型表现不佳。
除了Matthews相关系数之外,另一个有用的性能得分是精度-召回曲线。通常情况下,预测中的负元素和正元素不会有二进制标签(例如true和false ),而是在[ 0,1 ]间隔中给出每个预测的实值。在这种常见情况下,可以使用预测的每个可能值作为混淆矩阵的阈值。因此,最终将为每个FN、TN、FP、TP组配置一个实值数组。为了测量性能,可以在两条常见曲线之间进行选择,其中,可以计算曲线下的面积( AUC ):接收器操作特性(receiver operating characteristic ,ROC )曲线和精度召回(Precision-Recall, PR )曲线。
通常,通过计算这两个曲线模型的曲线下面积( AUC )来评估性能: AUC越大,模型的性能越好。ROC曲线的优化倾向于最大化正确分类的正值和正确分类的负值。不同地,PR曲线的优化倾向于最大化正确分类的正值,而不直接考虑正确分类的负值。
在计算生物学中,常常有很少的数据集是包含大量负值和少数正值的数据集。因此,我们倾向于避免在我们的预测分数中包含真正的否定。此外,ROC和AUROC在特定临床领域的解释还存在其他缺点。因此,与ROC相比,PR对于统计性能是更可靠和信息更丰富的指标,特别是对于不平衡数据集。
评估机器学习预测的统计意义的其他有用技术还包括是置换检验和自展。
Tip 9 :使用开放源代码和平台对软件进行编程
启动机器学习项目时,首先要做的决定之一是使用哪种编程语言或平台。强烈建议避免使用专利软件,而只使用免费的开源机器学习软件包。
使用专利软件,你的合作者会被限制为拥有该特定软件使用权的人员。另一个问题,如果更换工作或者公司和机构决定不再支付软件许可证,将无法重新使用自己的软件。相反,如果你使用开源程序,即使换了工作或工作场所,也可以继续使用以前的软件。因此,我们建议仅使用免费开源机器学习软件包和平台,如R ,Python 、Torch 和Weka。
对于初学者,强烈建议在开源操作系统(如Linux Ubuntu )上进行。事实上,使用开源编程语言和平台也将促进与其他实验室或机构研究人员的科学合作。建议在互联网上公开共享软件代码,可以使其他人也加入你的研究,并可以检测计算结果的可重复性。此外,编写有关代码的详细文档,并保存一个有关项目的实验笔记本。
Tip 10 :向计算机科学专家或在线协作问答社区寻求反馈和帮助
如果你是一名生物学家或医疗健康研究人员,应该考虑向计算机科学的机器学习专家发起求助来获取关于项目的反馈。如果无法亲自会见数据挖掘专家,可以考虑通过交叉验证、堆栈溢出、Quora、BioStars和生物信息学测试版等协作问答网站,从数据挖掘专业人员那里获取有关项目的反馈。此外,社区用户提的许多问题,也许会和你提交论文后论文审阅者的问题不谋而合。你的提问和回答也能够帮助其他有相同问题的用户。
结 论
在计算生物学中运行一个机器学习项目而不犯常见错误几乎不太可能,特别作为一个初学者。我们相信,这十个技巧非常实用,它包含最佳实践、经验教训,如何避免常见错误和过于乐观的夸大结果的方法。虽然这些方法是针对初学者总结的,但是对计算生物学中任何数据挖掘从业者也非常适用,从项目开始时就遵循这些建议可以事半功倍。数据挖掘的专家也应该遵循这些技巧。
目前,我们的tips所涉及的多个主题在机器学习社区中已经被广泛讨论和分析(例如,过拟合、超参数优化、不平衡数据集),然而,其他tip内容还没有引起广泛重视(例如,Matthews相关系数的使用和开源平台)。有了这篇攻略,我们希望这些概念能够在每个数据挖掘项目中被实践和应用并成为公认的标准流程。
将门是一家专注于发掘、加速并投资技术创新激活商业价值的创业公司的创投机构,旗下设有将门创新服务、将门技术社群以及将门投资基金。
将门创新服务专注于使创新的技术落地于真正的应用场景,激活和实现全新的商业价值,服务于行业领先企业和技术创新型创业公司。
将门技术社群专注于帮助技术创新型的创业公司提供来自产、学、研、创领域的核心技术专家的技术分享和学习内容,使创新成为持续的核心竞争力。
将门投资基金专注于投资通过技术创新激活商业场景,实现商业价值的初创企业,关注技术领域包括机器智能、物联网、自然人机交互、企业计算。在两年的时间里,将门投资基金已经投资了包括量化派、码隆科技、禾赛科技、伟景智能、Convertlab、迪英加科技等十几家具有高成长潜力的技术型创业公司。
如果您是技术领域的初创企业,不仅想获得投资,还希望获得一系列持续性、有价值的投后服务,欢迎发送或者推荐项目给我“门”: bp@thejiangmen.com
将门创投
让创新获得认可!
bp@thejiangmen.com
1.《机器学习十大算法 计算生物学中机器学习的十大攻略,从入门菜鸟到骨灰级专家的必备宝典》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《机器学习十大算法 计算生物学中机器学习的十大攻略,从入门菜鸟到骨灰级专家的必备宝典》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/39442.html