在学习之前对来自多个组和未知分布的特征进行“稳健”归一化

机器算法验证 机器学习 数据转换 scikit-学习 生物信息学 特征工程
2022-04-04 13:06:46

我正在从事一个机器学习项目,该项目涉及从多个可能重叠的类/组中提取的不同蛋白质(样本)的统计分析(以及后来的区分性分类),所有这些都来自更大的背景群体(所有哺乳动物蛋白质) .

我有一个我为每个单独的蛋白质计算的特征列表,然后作为分类的基础(使用机器学习)以后对每个类别/组的蛋白质。(这些特征是连续的和数字的,但可能非常不同,没有理由假设基础分布是正态分布或相关分布)。

我想对“原始”计算的特征值进行归一化和居中以供以后训练。通过 Z 分数进行归一化然后居中 [0,1] 的标准方法似乎不合适,因为没有理由假设底层分布是正常的(我有数百种不同的特征 - 频率计数、二元计数、物理化学属性值等') 。

我听说过“稳健的统计测量”,并想到首先对所有特征进行归一化(使用中值),然后将scikit的归一化+居中应用于“中值归一化”特征集,但我不知道如果这是有道理的,或者将保留原始数据中的差异。

(注意 - 我还预计不同特征和属性会出现少量显着异常值,因此在这方面使用中位数也很有吸引力)。这有意义吗?有没有更好的方法在所有组之间进行归一化(而不是仅仅使用特征的原始分数)?

1个回答

我同意gaborous的观点,因为您可能正在寻求标准化,并且快速搜索可视化会揭示关于标准化为何有用的讲座。

TLDW 版本是这一切都是为了避免挤压(椭圆或独木舟)形状的输入空间,因为这样的形状会导致线性回归漂移


屏幕帽 归功于闪电战金


现在,从我对相关领域的了解来看,似乎人们可以摆脱不会产生像飞镖一样好的形状的范围,例如-1to10to 3,但是,大于1或小于的范围-1可能会导致高度可变性输出,或导致exploding or vanishing gradient problem.

假设有可以使用的激活函数和其他方法更有弹性或不太可能受到梯度异常行为的影响,但是当一点数据按摩可以减轻以后与调试模型的斗争时,它似乎是一个更好的选择预清理输入空间。


至于什么是有意义的……个人在阅读(和重新阅读)这个问题时,我的直觉是建议将word2vec数据调整为输入编码方法,并将其提供GCN给分类甚至生成。

因为据说单词到向量的方法可以更好地保留关系,例如单词的相似含义,或者在这种情况下,可能在结构上乍一看似乎不相关的蛋白质之间的相似功能。还有图卷积网络,因为据说它们在点云输入方面做得很好,这有点像 word2vec 方法的输出

但这只是基于对您正在尝试做什么以及我在这些主题上学到的东西的猜测。本质上,我会将蛋白质视为段落,因为它们表达了复杂的含义/意图。