Vowpal Wabbit 上下文强盗数据格式化
Vowpal Wabbit Contextual Bandit Data Formatting
我有 2 个关于为上下文老虎机模型训练格式化数据的问题。
如果我有如下数据...
1:1:0.2 | d1:us d2:female d3:12
问题 1) 我从 VW Wiki 上了解到,每个功能后面都可以选择跟一个浮点数。如果我将分类特征(例如我们,女性)作为值,重新格式化它们的最佳方法是什么?我在想我不会给它们加上浮点数的后缀,让它们的默认值为 1。我希望这能实现一次性编码。
问题 2) 我通过记录如下数据错误地训练了模型
1:1:0.2 | us female 12
我现在意识到 "us"、"female" 和“12”被视为默认值为 1 的特征。我说得对吗?
是的,你是对的。
输入特征格式为:space-separated,每个特征为 <name>:<value>
,其中 :<value>
,如果存在,必须是数字。
要表示分类值,您可以使用 :
以外的其他内容作为 <name>
和 <value>
之间的分隔符。在这种情况下,整个字符串将被视为特征名称。这通常称为 "one-hot encoding"(每个可能的特征+值组合都被视为一个单独的特征)。
另请注意,特征名称 12
将由 vw
直接散列到散列 table 中的槽 12(模 2^ 位),假设这是用户需要,因为数字特征很常见(并且是 libSVM 约定)。这可以通过命令行上的选项 --hash all
禁用。默认值是 --hash strings
意思是:(murmur3) hash feature-names 看起来像一个字符串(不是整数)但是单独留下(不要散列)看起来像数字的特征名称。
另请参阅:,其中包含一个 cheat-sheet,用于表示 vw
中的输入特征。
我有 2 个关于为上下文老虎机模型训练格式化数据的问题。
如果我有如下数据...
1:1:0.2 | d1:us d2:female d3:12
问题 1) 我从 VW Wiki 上了解到,每个功能后面都可以选择跟一个浮点数。如果我将分类特征(例如我们,女性)作为值,重新格式化它们的最佳方法是什么?我在想我不会给它们加上浮点数的后缀,让它们的默认值为 1。我希望这能实现一次性编码。
问题 2) 我通过记录如下数据错误地训练了模型
1:1:0.2 | us female 12
我现在意识到 "us"、"female" 和“12”被视为默认值为 1 的特征。我说得对吗?
是的,你是对的。
输入特征格式为:space-separated,每个特征为 <name>:<value>
,其中 :<value>
,如果存在,必须是数字。
要表示分类值,您可以使用 :
以外的其他内容作为 <name>
和 <value>
之间的分隔符。在这种情况下,整个字符串将被视为特征名称。这通常称为 "one-hot encoding"(每个可能的特征+值组合都被视为一个单独的特征)。
另请注意,特征名称 12
将由 vw
直接散列到散列 table 中的槽 12(模 2^ 位),假设这是用户需要,因为数字特征很常见(并且是 libSVM 约定)。这可以通过命令行上的选项 --hash all
禁用。默认值是 --hash strings
意思是:(murmur3) hash feature-names 看起来像一个字符串(不是整数)但是单独留下(不要散列)看起来像数字的特征名称。
另请参阅:vw
中的输入特征。