生成简单的特征
当第一次开始建模过程时,尝试生成尽可能多的简单特征,尝试生成不需要花很长时间编码的特征。例如,与其训练Word2vec模型,不如先实现一个简单的词袋,它用最少的代码生成数千个特性。一开始就想使用任何可测量为特征的东西,因为没有明确的方法可以提前知道一个或多个特征组合是否对预测有用。
id也可以是特征(如果需要的话)
将ID添加为特性集的一部分可能听起来很愚蠢,因为唯一的ID可能不会对模型的泛化做出太多贡献。然而,包含id使从业者能够创建一个在一般情况下具有一种行为而在其他情况下具有不同行为的模型。
例如,假设我们想根据描述某个位置的一些特征对某个位置进行预测。通过将位置的id作为特征集的一部分,我们将能够为一个一般位置添加更多的训练示例,并训练模型在其他特定位置表现不同。
减少基数(如果可能的话)
作为一般经验法则,如果我们有一些具有许多不同独特值的分类特征(比如超过12个),我们应该只在希望模型根据该功能做出不同行为时才使用该功能。例如,在美国有50个州,因此你可以考虑使用一个称为“州”的特征,如果你希望模型的期望行为在加利福尼亚是一种方式,在佛罗里达是另一种方式。
另一方面,如果我们不需要一个依赖于“州”特性的行为不同的模型,那么我们最好减少“州”特性的基数。
注意计数的问题
在某些情况下,随着时间的推移,总数大致保持在相同的范围内——如果文档长度没有随着时间的推移而增加或减少,例如词袋(BoW)就是这种情况。
计数可能导致问题的实例。 例如,在一个场景中,我们具有一个特哼,可以统计用户自订阅服务以来进行的呼叫次数。 如果提供订阅服务的公司已经存在很长时间了,那么单纯的统计会看到他们拨打了很多电话。
随着数据的增长,今天不那么频繁的值在将来可能会变得越来越频繁。所以处理这类的问题需要增加时间窗口
进行特征选择
以下是只在绝对必要时才执行特性选择的一些理由;
模型必须是可解释的,所以最好保留最重要的特性
有严格的硬件要求
没有太多的时间来执行大量的实验和/或为生产环境重建模式
在多个模型训练之间会有预期的分布变化