在 Vowpal Wabbit 中,命名空间和功能之间有什么区别



在R或python中进行分析时,我们只知道特征名称(它们的值(并使用它们。在Vowpal Wabbit中,我们也有命名空间。

我无法理解:a. 命名空间是什么意思;b. 它与功能有何不同;C. 何时使用?什么时候不使用?也就是说,我们可以避免使用它吗?d. 如何使用它?

将不胜感激一两个例子。对不起,这么多问题。

在 vowpal 中使用 wabbit 命名空间是为了在运行时方便地即时生成交互功能,而无需预先声明它们。

没有命名空间的简单示例格式是:

1 | a:2 b:3

其中 1 是标注,a b是常规输入要素。

请注意,|后面有一个空格。

对比上述内容,使用两个名称空格xy(请注意|分隔符和名称空格之间没有空格(:

1 |x a:2 |y b:3

此示例与第一个示例基本等效(要素哈希位置除外(。它仍然具有两个与原始示例具有相同值的特征。不同之处在于,现在有了这些命名空间,我们可以通过将选项传递给 vw 来跨功能。 例如:

vw -q xy

将通过将名称空间中的所有功能与名称空间y中的所有功能交叉x来动态生成其他功能。自动生成的要素的名称将是两个名称空间中名称的串联,值将是它们各自值的乘积。 在这种特殊情况下,就好像我们的数据集有一个额外的特征:ab:6(*(

显然,这是一个非常简单的示例,假设您有一个在命名空间中包含 3 个特征的示例:

1 |x a:2 b:3 c:5

通过将-q xx添加到vw,您可以自动生成 6 个额外的交互功能:即时aa, ab, ac, bb, bc, cc。如果你有 3 个命名空间,比如:x, y, z ,你可以越过它们中的任何(或任何想要的子集(:-q xx -q xy -q xz -q yz -q yy -q zz在命令行上获取不同功能集之间的所有可能的交互。

仅此而已。 这是一项强大的功能,可让您即时试验和添加交互功能。

有几个选项接受(第一个字母(名称空间作为参数,其中包括:

-q
--cubic
--ignore
--keep
--redefine (very new)
--lrq

查看 vw 命令行参数 wiki 了解更多详情。

(*( 实际上,功能名称前面会带有名称空格,中间有一个^分隔符,因此实际的哈希字符串将x^a^y^b:6而不是ab:6(您可以使用 --audit 选项进行验证(,但这只是一个细节。

最新更新