哈希游戏- 哈希游戏平台- 哈希游戏官方网站你可能想知道,我们刚刚在上一节说到将类别转换为数字标签,为什么现在我们又需要这个?原因很简单。考虑到视频游戏风格,如果我们直接将 GenereLabel 作为属性特征提供给机器学习模型,则模型会认为它是一个连续的数值特征,从而认为值 10 (体育)要大于值 6 (赛车),然而事实上这种信息是毫无意义的,因为体育类型显然并不大于或者小于赛车类型,这些不同值或者类别无法直接进行比较。因此我们需要另一套编码方案层,它要能为每个属性的所有不同类别中的每个唯一值或类别创建虚拟特征。
虚拟编码方案(Dummy coding scheme)与独热编码方案相似,不同之处在于,在虚拟编码方案中,当应用于具有 m 个不同标签的分类特征时,我们将得到 m-1 个二进制特征。因此,分类变量的每个值都被转换成 m-1 维向量。额外的特征将被完全忽略,因此如果分类取值范围为{0, 1, ..., m-1},那么第一个(序号为 0)或者第 m 个(序号为 m-1)特征列将被丢弃,然后其对应类别值由一个 0 向量表示。接下来我们尝试通过丢弃第一个特征列(Gen 1)来将神奇宝贝“世代(Generation)”属性转换成虚拟编码。
到目前为止,我们所讨论的编码方案在分类数据方面效果还不错,但是当任意特征的不同类别数量变得很大的时候,问题开始出现。对于具有 m 个不同标签的任意分类特征这点非常重要,你将得到 m 个独立的特征。这会很容易地增加特征集的大小,从而导致在时间、空间和内存方面出现存储问题或者模型训练问题。除此之外,我们还必须处理“维度诅咒”问题,通常指的是拥有大量的特征,却缺乏足够的代表性样本,然后模型的性能开始受到影响并导致过拟合。
因此,我们需要针对那些可能具有非常多种类别的特征(如 IP 地址),研究其它分类数据特征工程方案。区间计数方案是处理具有多个类别的分类变量的有效方案。在这个方案中,我们使用基于概率的统计信息和在建模过程中所要预测的实际目标或者响应值,而不是使用实际的标签值进行编码。一个简单的例子是,基于过去的 IP 地址历史数据和 DDOS 攻击中所使用的历史数据,我们可以为任一 IP 地址会被 DDOS 攻击的可能性建立概率模型。使用这些信息,我们可以对输入特征进行编码,该输入特征描述了如果将来出现相同的 IP 地址,则引起 DDOS 攻击的概率值是多少。这个方案需要历史数据作为先决条件,并且要求数据非常详尽。
特征哈希方案(Feature Hashing Scheme)是处理大规模分类特征的另一个有用的特征工程方案。在该方案中,哈希函数通常与预设的编码特征的数量(作为预定义长度向量)一起使用,使得特征的哈希值被用作这个预定义向量中的索引,并且值也要做相应的更新。由于哈希函数将大量的值映射到一个小的有限集合中,因此多个不同值可能会创建相同的哈希,这一现象称为冲突。典型地,使用带符号的哈希函数,使得从哈希获得的值的符号被用作那些在适当的索引处存储在最终特征向量中的值的符号。这样能够确保实现较少的冲突和由于冲突导致的误差累积。