一类具有不平衡,异质负面背景的歧视性分类?


16

我正在努力改进现有的监督分类器,以将{蛋白质}序列归为特定类别(神经肽激素前体)或不属于特定类别。

在大约1300万个蛋白质序列的背景下(“未知/注释不充分的背景”),或大约100,000个经过审查的相关蛋白质,已知的“阳性”蛋白质带有多种属性(但很少有显式注释的蛋白质) “负”方式)。

我以前的实现将其视为二进制分类问题:阳性集=标记为Neuropeptides的蛋白质。阴性集:从剩余的蛋白质中随机抽取1300个样本(总计),这些蛋白质的长度方向分布大致相似。

那行得通,但是我想大大提高机器的辨别能力(目前,在多个随机采样的负数集上,按CV测得的精度,AUC,F1约为83-86%)。

我的想法是:1)使这成为一个多类问题,选择2-3种不同类型的蛋白质,这些蛋白质将根据其特性/功能类别以及(也许)另一组随机采样的样本确定为阴性。(这里的优先级将是负集合,其特征/特征与正集合相似,同时仍具有定义的特征)。2)一次课堂学习-很好,但是据我了解,它仅用于异常检测,并且其性能比歧视性方法差。

*)我听说过PU学习,听起来很整洁,但是我正在编程N00b,而且我不知道它的任何现有实现。(在Python / sci-kit中学习)。

那么,方法1在理论POV中是否有意义?有没有最好的方法来制作多个负数集?(我也可以简单地使用大量[50K]的“阴性”蛋白,但是它们彼此之间非常不同,因此我不知道分类器如何将它们作为一个大的不平衡混合物来​​处理)。谢谢!


如您所见,维基百科有关PU学习的文章引用了一篇论文,该论文已应用于基因鉴定。也许值得弄清楚/询问作者他们使用了什么软件。
安德烈·霍尔兹纳

在scikit中有一些关于PU学习的讨论,请在这里学习:stackoverflow.com/questions/25700724/…(使用“一类”支持向量机)
Andre Holzner 2015年

PU学习是带有警告的标准两类分类问题-您优化曲线下的面积,而不是分类精度。您可以使用Sofia ML软件包来完成此操作(无需编程)。在实践方面,您用+1标记正例,其他则用-1注释(是的,所有其他未标记数据可能包含正数)。
Vladislavs Dovgalecs

Answers:


6

一堂课

我不会很快抛出一类分类方法(选项2)-关键是用一类模型对正(少数)类进行建模。

有研究表明,一类分类的性能优于其他方法,如蛋白质分类任务经常看到的高度不平衡数据的采样。

我没有找到我想起的研究,但是我确实找到了其他一些比较,表明使用一类分类器(通常对少数类进行建模)所取得的性能要好于二值分类,而后者通常是从大型样本集中取样的“负数”未知为阳性的蛋白质。

此外,这种方法还具有大大改善运行时间的优势-因为您只需要在较小的正数集上训练分类器即可。几篇论文:

“使用一类分类方法并整合各种生物学数据来预测蛋白质间的相互作用”

“蛋白质序列和结构的一类分类方法”

至少我会尝试一些一类方法,并将验证与您的二进制/多类分类方法的性能进行比较。也有许多开源实现,因此尝试它们应该不会太昂贵,例如LibSVM具有一类SVM实现。此外,由于二进制分类器的预测可能存在更多分歧,因此在二进制分类器的集成中使用该方法可能很有价值。

更高层次的表示嵌入/聚类

按照您在(1)中的想法以及另一篇建议PCA的思路,聚类,稀疏编码甚至主题建模之类的方法(将每种蛋白质视为文档字符串,将不同的蛋白质家族视为不同的主题)可能会产生一个表示。这可能使蛋白质的分类变得简单。

即,您可以识别蛋白质属于哪个组/簇,或者对簇成员/嵌入表示进行分类。

例如,诸如稀疏编码之类的嵌入方法可以产生表示蛋白质也属于哪个簇的表示-因此某些特征集仅对同一簇中的蛋白质具有活性(非零)-这可以使分类更加容易。

另外,对于大多数方法,可以将类标签或已知的群集成员身份并入嵌入过程中。

合奏

多个分类器的集合往往效果最好-尤其是当分类器非常多样化并且可以单独实现可比的性能时。

至少有两种方法使用集成来解决此问题。

  1. 您可以通过采样多个不同大小相同的负数集并在每个分类器上训练分类器来构建二进制分类器的集合。
  2. 您可以使用不同的方法(例如,具有不同否定样本的二进制分类器),一类分类方法以及在嵌入式数据上训练的分类模型相结合来构建整体。

5

通常,我要解决该问题的方法是利用统计分析(例如主成分分析或普通最小二乘)来帮助确定这些蛋白质序列中的哪些属性最适合将蛋白质分类为神经肽激素前体。

为此,您必须将蛋白质序列转换为数字数据,但是我认为使用氨基酸PCA中利用的公式在这方面已经完成了一些工作。

请参阅以下两个链接:http : //www.ncbi.nlm.nih.gov/pubmed/24496727

http://www.ncbi.nlm.nih.gov/pubmed/16615809

完成这项工作后,我将尝试使用整个数据集和强化学习算法(如朴素贝叶斯)进行分类,同时将数据精简为PCA认为重要的数据。

我之所以尝试使用贝叶斯,是因为事实证明,它是确定垃圾邮件与常规电子邮件的最佳方法之一,常规电子邮件具有类似的数据集。

说了这么多...

减少负面分类的数量或类型可能会使您的结果以一种或多种方式倾斜一些点,但是我认为您在确定如何最好地去除之前,不会看到长期的有效性发生实质性的变化。您训练数据的模糊性。这将需要现场专家或进行统计分析。

我可能会完全脱离基地。我有兴趣看到其他答案,但这是我的2美分。


1
我已经实现了功能提取,以及用于它的工具包(发布正在等待一些错误检查)。
GrimSqueaker 2014年

2

您可以采用三种方法:APP,OAA,AAO。APP是根据所有可能的类对来区分对象。OAA是针对所有类(剩余类)的,AAO是一次使用,例如同时对多个类使用F检验(或针对MVN的Hotelling检验)。APP和AAO实际上是多个二进制分类运行,但是具有两个以上的原始类。对于所采用的各种分类器,每种方法均会产生不同的结果。

随机采样是一种很好的技术。您也可以尝试使用k均值将所有对象聚类为中心,然后将这些中心用作新对象。无论哪种方式,线性和非线性降维方法都可能有助于摆脱较大的样本量。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.