我有两个关于格式化数据以进行上下文强盗模型训练的问题。
如果我有如下数据......
1:1:0.2 | d1:us d2:female d3:12
Run Code Online (Sandbox Code Playgroud)
问题 1)我从 VW Wiki 中了解到,每个功能后面都可以选择跟随一个浮点数。如果我将分类特征(例如我们,女性)作为值,那么重新格式化它们的最佳方法是什么?我想我不会给它们加上一个浮点后缀,让它们有一个默认值 1。我希望这能实现 one-hot 编码。
问题 2) 我通过记录如下数据错误地训练了模型
1:1:0.2 | us female 12
Run Code Online (Sandbox Code Playgroud)
我现在意识到,“us”、“female”和“12”被视为默认值为 1 的特征。我对吗?
是的,你是对的。
输入特征格式为:与每个特征以空格分隔,<name>:<value>其中:<value>,如果存在,则必须是数字。
要表示分类值,您可以使用除和:之间的分隔符之外的其他内容。在这种情况下,整个字符串将被视为功能名称。这通常称为“one-hot 编码”(每个可能的特征+值组合都被视为一个单独的特征)。<name><value>
另请注意,特征名称12将直接哈希vw到哈希表中的槽 12(模 2^位),假设这是用户想要的,因为数字特征很常见(并且是 libSVM 约定)。--hash all可以通过命令行上的选项禁用此功能。默认值的--hash strings含义是:(murmur3)散列功能名称,看起来像字符串(不是整数),但保留(不散列)看起来像数字的功能名称。
另请参阅:如何在 vowpal-wabbit 中表示分类特征,其中包括用于表示 中输入特征的备忘单vw。
| 归档时间: |
|
| 查看次数: |
640 次 |
| 最近记录: |