总的来说,数据并不总是以规范的特征向量的形式呈现的,一般是按数据库记录、 协议缓冲区或其他任何形式。所以必须要根据这些数据来创建特征向量。
实践中,机器学习从业人员将大约 75% 的时间花在特征工程方面了; 特征就是我们要的东西。
有以下几种方式或者几点需要注意:
- 用 one-hot 的方式去编码 枚举值
- 一个特征至少应该具有非 0 值,而且在数据集中出现过多次
- 特征最好具有清晰明确的意义
- 特征值不应随时间而变化
- 特征值不应具有非理性的离群值,去除离群点,采用分箱技术
下面简单对上面几点进行介绍
- 如果有可以直接作为特征值的还好,比如 age=20, 够买次数=15 等,但对于有些指标如 street="wall street", brand="qiaopai" 等,就不太好规范化,可以用 one-hot 的方式编码。用一组特征向量, [0,0,0 ... , 1,0,0]这样,对可能出现的枚举值,当前值为 1,其他为 0 来有效处理
- 如果某个特征都是 0 值,或者绝大多数都是 0 值,则可能不是一个好的特征,在预处理的时候可以去掉
- 明确的定义,比如 age=25,而不是用小时或者秒来计算
- 有些特征的值可能是从上游模型传导下来的,这时候应该尽量保证特征的值不会随时间改变或者漂移
- 去除离群点、完全不合理的点,对于特征的训练没有价值;分箱技术是类似直方图的方式,虽然纵向没有直接的可比性或者可编码的方式,可以用直方图分割区间,每个区间有类似的特性,然后再用
one-hot
的方式编码。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于