use*_*777 4 namespaces command-line-arguments feature-selection vowpalwabbit
在R或python中进行分析时,我们只知道特征名称(它们的值)并使用它们.在Vowpal Wabbit,我们也有命名空间.
我无法理解:a.Namespace是什么意思; 湾 它与功能有何不同; C.什么时候使用?什么时候不用?也就是说,我们可以避免使用它.d.它是如何使用的?
将会感激一两个例子.很抱歉这么多问题.
在vowpal wabbit名称空间用于在运行时方便地生成交互功能,而无需预先声明它们.
没有名称空间的简单示例格式是:
1 | a:2 b:3
Run Code Online (Sandbox Code Playgroud)
1标签在哪里a,b是常规输入功能.
请注意,之后有一个空格|.
对比上面使用两个名字空间x和y(注意之间没有空格|分隔符和名称空间):
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选项),但是这仅仅是一个细节.