将属性添加到训练集

时间:2012-11-28 04:22:18

标签: machine-learning

如果我有功能卡路里和其他功能人数,为什么每人添加功能卡路里或添加功能卡路里/ 10有助于改善测试?我没有看到如何对两个功能执行简单的算术将获得更多信息。

由于

2 个答案:

答案 0 :(得分:0)

考虑您正在使用特征空间中线性(或对数线性)的分类器/回归机制。如果您的实例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]或其他。现在,您可以对要素之间的交互进行建模,而无需使用非线性算法。

答案 1 :(得分:0)

执行该类算法允许您在未明确考虑非线性变量组合的模型中使用该信息。一些分类器试图找到最能解释/预测训练数据的特征,并且通常最佳特征可能是非线性的。

使用您的数据,假设您想预测一群人平均会增加体重。并且假设“正确”的答案是,如果该群体中的人每天平均消耗超过3,000卡路里,该群体将会增加体重。如果您的输入为group_sizegroup_calories,则需要使用这两个变量进行准确预测。但是,如果您还提供group_avg_calories(仅group_calories / group_size),则可以使用该单一功能进行预测。即使前两个特性添加了一些额外的信息,如果你要将这3个特征提供给决策树分类器,它几乎肯定会选择group_avg_calories作为根节点,你最终会得到一个更简单的树结构。向模型添加大量任意非线性特征组合也存在缺点,即它可以显着增加分类器的训练时间。

关于calories/10,不清楚为什么你会这样做,但规范化输入特征可以提高某些分类器(例如人工神经网络)的收敛速度,也可以为聚类算法提供更好的性能,因为输入特征将全部处于相同的比例(即,沿不同特征轴的距离是可比较的)。