连续特征离散化的一些理解

上学的时候,手写 Naive Bayes,当时处理特征非常 Naive 。就是直接去统计每一个出现的数值,计算一个这个值和标签的相关出现概率。
结果总是下溢,效果就别想了。。。

连续特征离散化,为构造特征和简化模型带来了一些好处。
通过前期的经验和一些方法,可以将连续特征分成一些桶。这样对于同一个数据输入,可以划分成不同的段,然后再进行权重的学习,或者进行更高级的特征组合。

好处

  1. 数据分段之后,就可以在学习权重的时候非常容易剔除某个数值段。仅仅需要一个权重就可以办到,而不需要复杂的模型来处理。优势显而易见。
  2. 和上面一条一样,数据分段,相当于引入先天经验,对不同的数值段进行不同的加权处理。就相当于引入了一个人工构造的非线性的处理函数。而且这个处理函数,可解释性非常强。有了这个模型之后,再配合一些简单的线性模型,就能非常容易的学习出对应的权重。大大简化了后面学习、训练、优化、调参、解释等等工作。
  3. 分段之后,每个桶的数值都变成了 0、1 ,计算起来的速度就非常快了。参考里面说容易储存,大概是可以引入稀疏矩阵的相关优化吧,这里并不是很明白。
  4. 离散化之后,对开区间的异常数值兼容性好。可以用一个边界桶,来表示任意极端的值。比如超过 300 岁的人放到最后一个桶里面(例子来自参考)。
  5. 离散化之后,可以通过经验把一个阶段的数据放到一起表达。比如年龄段的问题(参考里讲的不错)。这样可以提高模型的学习效果。当然如果桶分的过细,就又变成了连续特征。这个度是我们这些程序员的价值所在。
  6. 离散后,可以通过特征组合进一步提高非线性表达能力。
  7. 通过离散化,引入非线性的同时可以使用更简单的模型。降低过拟合的风险。其实这个不太懂。

一些注意的点

  1. 通过经验离散化,有可能会忽略掉一些信息。毕竟先天经验和真实数据分布之间还是存在差异的。

参考

https://zhuanlan.zhihu.com/p/91180828

你可能感兴趣的:(机器学习)