我们评估系统的第一部分是使用哈希法。 记住,因为我们使用有很多特征值的特征,没有降低维数运行逻辑回归 是不可行的。

哈希法的重点在于保持最重要的值。回到4.2节的例子,如果一个特征可以取5个值,但只有2个 是重要的,我们将使用2位编码该特征,它们都是0 当特征值不重要时。

找到重要价值的两种简单的启发式是:

Count:选择最常用的值。

Mutual information:选择最有用的确定目标的值。

这种方法的缺点是模型需要以字典的方式存储 而不是数组。该字典将每个重要值映射到其权证。字典 需要避免碰撞和追踪重要的特征值。 其大小取决于实现,但下界可以条目12字节:键4个字节 ,值4个字节,链表中的指针4个字节。在C#中 每个条目需要20-25个字节。

图3显示了模型大小的对数似然函数:哈希4d和 模型字典12d,其中d是模型权重的数量。事实证明,相同的模型大小,基于散列的模型稍更优越。 另外两个优点是方便:没有必要找到最重要的 值并保留在字典中;和实时效率:散列比字典查找快。

为了比较,图3还包括其他方法 ,通过使用正规化选择重要的特征值。这是 通过在(2)中的w上加上L1范数并使目标函数最小化来实现[Bach et al. 2011,chapter 3]。曲线上的每个点对应 到集合{1, 3, 10, 30, 300, 1000, 3000}中的正则化参数:较大 参数,稀疏模。L2正则化参数保存在其他方法里的值。即使产生的模型需要 存储在字典中,这种方法在准确率和模型大小实现了良好的权衡 。请注意,这种技术不容易扩展:在训练过程中, 对训练集中观察到的每个值需要一个权重。在图3中,因为我们认为一个相当小的训练集只有33M不同 值是可行的。但是在实际环境中,特征的数量可以容易地超过十亿。

results matching ""

    No results matching ""