机器学习模型能否将向量视为一个整体特征来学习

数据挖掘 机器学习 随机森林 决策树 特征工程 特征提取
2022-03-10 07:04:47

我们知道 ML 模型自然地将具有实值元素的特征向量作为输入并学习预测。但是它可以将固定大小的向量作为一个整体特征来学习吗?

例如,当使用 128 位字符串作为特征时,我们可以计算数据集中出现的不同字符串的总数,并对它们应用 one-hot 编码。但是,这种方式编码的维度可能非常大(数千)。或者我们可以用二进制来表示 128 位的字符串,它只对 128 维有贡献。不知道随机森林等传统的ML模型(不是CNN)是否能够学习到这128个特征的依赖关系。或者他们有什么方法可以将 128 个特征作为一个整体来处理?

2个回答

潜在的问题是:什么是特征,它代表什么,以及 ML 算法如何使用它?

特征是一个指标,它应该帮助算法预测响应变量。因此,该特征的语义至关重要:例如,很容易看出患者的年龄可能是检测特定疾病的相关特征,而知道他们的姓氏则不是。

ML 算法可以对特征做什么?它只是比较它:仅对分类特征进行相等/差异测试(布尔值,确切地说是单热编码会发生什么),对数值特征进行顺序测试。

但是它可以将固定大小的向量作为一个整体特征来学习吗?

根据我的最后一点,该算法需要一种比较“整个向量”的方法。据我所知,这只会发生:

  • 或者通过将整个向量与它可能采用的任何可能值进行比较:这是一个布尔测试,我们回到 one-hot 编码情况。
  • 或通过独立比较每个单独的单元格,这是使用 OP 描述的二进制表示的想法:

或者我们可以用二进制来表示 128 位的字符串,它只对 128 维有贡献。不知道随机forrests等传统ML模型(不是CNN)是否能够学习到128个特征的依赖关系。

在这种情况下,问题在于这些单个单元格的语义:它们代表什么,它们可以帮助预测响应变量吗?

以垃圾邮件二进制分类器为例:传统上使用 one-hot 编码,每个特征表示特定单词是否出现在文本文档中。这是有道理的,因为知道文档是否包含例如“伟哥”一词可以表明它是否是垃圾邮件。现在如果你只使用“伟哥”这个词的二进制表示,特征表示是否iithbit 在字的 ASCII 或 UTF8 二进制表示中为 1。很明显,这不是决定文档是否为垃圾邮件的相关指标(顺便说一句,这可以通过相关性或其他措施进行测试)。因此,可以肯定的是,从技术上讲,可以将各个位作为特征提供,但是预测将接近随机,因为该模型没有相关指标作为特征。

重要提示:我专注于语义问题,所以我什至没有谈论顺序是否重要的​​问题,但这也是一个问题。

为避免 OneHot 产生过多的功能,您可以:

  • 在您创建 OneHot 之前转换您的数据,以您自己创建的间隔重新组合不同的类(例如,将您的 128 个功能减少到您自己创建的 30 个类),然后应用 OneHot
  • 使用 CategoryEncoder(例如 TargetEncoder、James-Stein、LeaveOneOut、WeightOfEvidence):这将使统计数据并将类转换为一个数字,如果该类是众所周知的(经常出现)则更高,并且往往比平均值给出更多的真实预测