如果我有一个特征卡路里和另一个特征人数,为什么添加每个人的特征卡路里或添加特征卡路里/10 有助于改进测试?我看不出对两个特征执行简单的算术运算会如何获得更多信息。
谢谢
如果我有一个特征卡路里和另一个特征人数,为什么添加每个人的特征卡路里或添加特征卡路里/10 有助于改进测试?我看不出对两个特征执行简单的算术运算会如何获得更多信息。
谢谢
考虑您正在使用特征空间中线性(或对数线性)的分类器/回归机制。如果您的实例 x 具有特征 x_i,那么线性意味着分数类似于:
y_i = \sum_i x_i * w_i
现在考虑您认为特征之间存在一些重要的相互作用——也许您认为 x_i 只有在 x_j 取相似值时才重要,或者它们的总和比单个值更重要,或者其他什么。合并此信息的一种方法是让算法显式建模交叉产品,例如:
y_i = [ \sum_i x_i * w_i ] + [\sum_i,j x_i * x_j * w_ij]
然而,线性算法无处不在且易于使用,因此将类似交互的术语纳入标准线性分类器/回归机制的一种方法是扩大特征空间,因此对于每一对 x_i, x_j,您创建一个形式为 [x_i * x_j] 或 [x_i / x_j] 或其他。现在,您可以对特征之间的交互进行建模,而无需使用非线性算法。
执行该类型的算术允许您在未明确考虑变量非线性组合的模型中使用该信息。一些分类器试图找到最能解释/预测训练数据的特征,而且通常最好的特征可能是非线性的。
使用您的数据,假设您想预测一组人是否会平均体重增加。并且假设“正确”的答案是,如果该组中的人平均每天摄入超过 3,000 卡路里的热量,那么该组的体重就会增加。如果您的输入是group_size
和group_calories
,您将需要使用这两个变量来做出准确的预测。但是,如果您还提供group_avg_calories
(只是group_calories
/ group_size
),您可以只使用该单一功能来进行预测。即使前两个特征添加了一些额外的信息,如果你将这三个特征提供给决策树分类器,它几乎肯定会选择group_avg_calories
作为根节点,您最终会得到一个更简单的树结构。向模型中添加大量任意非线性特征组合也有一个缺点,即它会显着增加分类器的训练时间。
关于calories/10
,目前尚不清楚为什么要专门这样做,但是对输入特征进行归一化可以提高某些分类器(例如,ANN)的收敛速度,并且还可以为聚类算法提供更好的性能,因为输入特征都是相同的尺度(即,沿不同特征轴的距离是可比较的)。