2010年11月5日,星期五

编码技巧

我用 Vowpal兔子 eHarmony广泛使用,主要用于可伸缩性目的。尽管我们不是Google或Yahoo规模的公司,但我们确实做了一些我们想建模的数十亿次匹配(在一个主要的广告网络中,一到两天就有10亿次展示;因此,在数据方面小3个数量级)。 Vowpal通过在原始线性表示上实现梯度下降的简单性来实现高速,但这实际上意味着人们花时间尝试对原始数据进行非线性变换以提高模型性能。

这是一种广泛适用的编码方案,我已将其用于几个不同的问题,以提高性能。它与 分段回归 (针对统计预测人员)以及 类型2的特殊订单集 (适用于运筹学人员)。我们实际上在办公室将其称为``SOS2编码''。

在一个维度上,它的工作方式如下:为变量选择一组点,然后为任何输入值激活对应于包围该值的点的两个要素,权重对应于两个要素之间的线性插值。例如,对于在线约会,两个人之间的实际距离有助于预测很多兴趣。为了对两个人之间的距离进行编码以输入模型,我首先获取距离的$ \ log_2 $(即席直觉变换),然后使用积分点进行SOS2编码。因此,如果两个人的距离差为72英里,则两个要素输出将为
LOG2_DISTANCE_6:0.83 LOG2_DISTANCE_7:0.19
由于这种编码是稀疏的,因此最终与其他变量进行了很好的交互(即,涉及SOS2编码特征的二次vowpal术语会产生有用的提升)。在一个二维问题中,我SOS2对每个维度进行了编码,然后二次成功地进行了交互。对于更高维度的问题,我从其他技术(例如, VQ )。

2条评论:

  1. 有趣的技术!我觉得在那里'一个错字:LOG2_DISTANCE的权重应该是.17而不是.19?

    您是否与其他做这类事情的方法做了很多比较?例如,仅取最接近的点,然后使特征值成为离散值和实际值之间的差异或百分比变化,该怎么办?

    回复 删除
    回覆
    1. 是的,这是一个错字,感谢您的注意(我'将其保留下来,以便您的评论继续有意义……对读者有帮助的练习……)

      回复:比较,我避风港'没有系统地做任何事情。由于域可变性,所以很多数据科学都是启发式的。

      请注意,此技术对应于线性(带-q的二次方)样条插值。您的建议听起来像是分段线性(二次),但没有在端点处强制执行连续性。如果您怀疑应该在控制点处进行跳跃,则可能会更好。

      删除