目前业务所用模型都需要把连续的特征转化为离散值,特做总结如下:
1. Bucket 分桶: 把范围较广的连续值分桶
分桶的个数一般由特征意义和经验人为设定,比如年龄可以根据小学,初中,高中,大学等分桶,
此处以日期举例:
优势:
连续性特征拆分成一个四元素向量,那么模型现在可以学习四个单独的权重,与单个权重相比,离散的向量特征,由于只有一个元素置位 (1),其他三个元素清零 (0),分桶可以让模型清楚地区分不同桶的类别。即,模型可以为每个单独的分桶类别学习单独的权重,解耦。
2. 较少数字型或字符型特征分桶:也可以说是one-hot
每个桶表示一个唯一的整数或类别。
3. 如果类别很多,非常占用内存,如何one-hot?
使用哈希的方法,将原始类别转化为指定类别个数,如将‘然后再one-hot。
如我们有一万个单词,实践中不允许有一万维的one--hot向量怎么办?只能通过构建哈希函数,先给每个单词赋予一个标签,如1,2,3,4… 然后通过哈希得到哈希值(哈希值的个数可以通过哈希函数的构造限定),可以将一万个单词哈希为100个哈希值,然后再做one-hot。
如果几个类别被哈希到了同一个哈希值怎么办?哈希冲突!即获得同一个类别。——> 与机器学习中许多有悖常理的现象一样,哈希通常可以在实践中很好地运行,用就完事了。