使用维度诅咒对高基数的无序(名义)分类变量进行编码

数据挖掘 机器学习 预处理 分类数据 降维 分类编码
2022-02-25 13:18:50

当维度较高时,所有数据彼此之间的距离大致相同。如果数据或多或少是均匀分布的,这会使基于距离的方法(例如 k 最近邻)变得不那么有用。这也被称为维度灾难。

但是,为什么不用这个维度的柠檬来制作柠檬水呢?

为什么不在某些高维空间中使用随机分布的点对具有高基数的名义分类变量进行编码,但要使维数比使用 one-hot 编码得到的要少得多?

由于任意两点之间的距离几乎相同,因此不会引入人工排序。编码速度非常快。无需使用某些神经网络计算嵌入。

这种编码会起作用吗?它会毫无意义或引入任何偏见吗?有人在用吗?你知道有什么参考吗?

1个回答

当维度较高时,所有数据彼此之间的距离大致相同。

是的,但这是维度灾难的最坏情况:

  • 仅当数据非常稀疏时才会发生这种情况。在实际情况下,它并不是真正的“所有数据”,因为某些数据点比其他数据点更稀疏,也不是真正的“相同距离”,因为点之间的距离可能存在微小但有意义的差异。
  • 有一些已知的缓解措施可以防止这种最坏情况的发生,特别是各种特征选择/提取方法。因此,在实际情况下,处理一些“未经处理”的非常高维数据只是一个错误。

为什么不在某些高维空间中使用随机分布的点对具有高基数的名义分类变量进行编码,但要使维数比使用 one-hot 编码得到的要少得多?

这将对应于随机特征提取方法:不是在减少维度时尝试将相似的特征组合在一起,而是将特征随机投影到低维空间中。缺点很明显:不是在保留模式的同时简化数据,而是忽略数据中的模式。在那之后,这些数据很可能变得毫无用处。

目标不仅仅是为了降低维度,而是以一种尽可能完整地保留数据最重要特征的方式来降低维度,甚至通过消除噪声来强调它们。这种方法相当于随机选择特征,而不是选择信息量最大的特征。

例如,在文本数据的情况下,由于不同单词的数量很多,通常存在高维度。一种基本但非常有效的方法是丢弃很少出现的单词:这大大减少了维度(由于文本中单词的 Zipf 分布),防止由于偶然出现的单词而产生的噪声,并保留了大多数模式发生在中等频率的词中。