在R或python中进行分析时,我们只知道特征名称(它们的值(并使用它们。在Vowpal Wabbit中,我们也有命名空间。
我无法理解:a. 命名空间是什么意思;b. 它与功能有何不同;C. 何时使用?什么时候不使用?也就是说,我们可以避免使用它吗?d. 如何使用它?
将不胜感激一两个例子。对不起,这么多问题。
在 vowpal 中使用 wabbit 命名空间是为了在运行时方便地即时生成交互功能,而无需预先声明它们。
没有命名空间的简单示例格式是:
1 | a:2 b:3
其中 1
是标注,a
b
是常规输入要素。
请注意,|
后面有一个空格。
对比上述内容,使用两个名称空格x
和y
(请注意|
分隔符和名称空格之间没有空格(:
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
选项进行验证(,但这只是一个细节。