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

use*_*777 4 namespaces command-line-arguments feature-selection vowpalwabbit

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

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

将会感激一两个例子.很抱歉这么多问题.

ari*_*elf 7

在vowpal wabbit名称空间用于在运行时方便地生成交互功能,而无需预先声明它们.

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

1 | a:2 b:3
Run Code Online (Sandbox Code Playgroud)

1标签在哪里a,b是常规输入功能.

请注意,之后有一个空格|.

对比上面使用两个名字空间xy(注意之间没有空格|分隔符和名称空间):

1 |x a:2 |y b:3
Run Code Online (Sandbox Code Playgroud)

此示例与第一个示例基本相同(功能散列位置除外).它仍然具有两个与原始示例具有相同值的功能.不同的是,现在使用这些名称空间,我们可以通过传递选项来交叉功能vw.例如:

vw -q xy
Run Code Online (Sandbox Code Playgroud)

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

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

1 |x a:2 b:3 c:5
Run Code Online (Sandbox Code Playgroud)

通过添加-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
Run Code Online (Sandbox Code Playgroud)

查看vw命令行参数wiki以获取更多详细信息.

(*)在实践中,功能名称将在后面附加给他们一个名字空间^分隔符之间,因此实际散列串会x^a^y^b:6,而不是ab:6(您可以通过使用验证这个--audit选项),但是这仅仅是一个细节.