如何从 vowpal wabbit 中的上下文强盗中提取输出策略?
How to extract output policy from contextual bandit in vowpal wabbit?
我是 运行 这个 example 的上下文强盗,在他们的示例数据上:
1:2:0.4 | a c
3:0.5:0.2 | b d
4:1.2:0.5 | a b c
2:1:0.3 | b c
3:1.5:0.7 | a d
以命令作为他们的建议:
vw -d train.dat --cb 4 --cb_type dr -f traindModel
我想知道如何从此命令中提取策略以及如何解释它?
然后我去
vw -d train.dat --invert_hash traindModel
并收到这样的输出
Num weight bits = 18
learning rate = 0.5
initial_t = 0
power_t = 0.5
using no cache
Reading datafile = ../r-mkosinski/train.dat
num sources = 1
average since example example current current current
loss last counter weight label predict features
1.000000 1.000000 1 1.0 1.0000 0.0000 3
4.439352 7.878704 2 2.0 3.0000 0.1931 3
4.457758 4.476164 4 4.0 2.0000 1.4285 3
finished run
number of examples per pass = 5
passes used = 1
weighted example sum = 5
weighted label sum = 13
average loss = 4.14973
best constant = 2.6
total feature number = 16
如何解释这些结果?如何提取策略?
我也试过这种命令:
vw -d train.dat --cb 4 --cb_type dr --invert_hash p2222.txt
得到如下结果:
Version 7.8.0
Min label:0.000000
Max label:5.000000
bits:18
0 pairs:
0 triples:
lda:0
0 ngram:
0 skip:
options: --cb 4 --cb_type dr --csoaa 4
:0
^a:108232:0.263395
^a:108233:-0.028344
^a:108234:0.140435
^a:108235:0.215673
^a:108236:0.234253
^a:108238:0.203977
^a:108239:0.182416
^b:129036:-0.061075
^b:129037:0.242713
^b:129038:0.229821
^b:129039:0.206961
^b:129041:0.185534
^b:129042:0.137167
^b:129043:0.182416
^c:219516:0.264300
^c:219517:0.242713
^c:219518:-0.158527
^c:219519:0.206961
^c:219520:0.234253
^c:219521:0.185534
^c:219523:0.182416
^d:20940:-0.058402
^d:20941:-0.028344
^d:20942:0.372860
^d:20943:-0.056001
^d:20946:0.326036
Constant:202096:0.263742
Constant:202097:0.242226
Constant:202098:0.358272
Constant:202099:0.205581
Constant:202100:0.234253
Constant:202101:0.185534
Constant:202102:0.326036
Constant:202103:0.182416
为什么输出d
只有5条记录,而c
、b
、a
有7条记录?它是否对应于特征 c
,b
,a
在数据中出现 3 次而 d
仅出现 2 次?还有8个常量行..它们对应什么?
vw -d train.dat --invert_hash traindModel
这里没有指定contextual bandit,所以vw做了一个简单的线性回归。
How to interpet those results?
见https://github.com/JohnLangford/vowpal_wabbit/wiki/Tutorial#vws-diagnostic-information
There are also 8 constant rows.. to what do they correspond?
VW 中的上下文老虎机是使用 减少 到(在这种情况下)对成本敏感的一对一多类分类来实现的。而 csoaa 又被实现为线性回归的简化。当使用 --csoaa 4
时,每个 "original feature" 与所有可能的输出 labels 组合(或 actions 在上下文强盗的情况下) ,所以不是一个原始特征,而是四个特征(不幸的是,它们在 --invert_hash 输出中具有相同的名称,因此您无法确定哪个标签对应于哪个特征,但它们具有不同的哈希值,所以您看到这些是不同的功能)。
我认为 contextual bandit 也需要乘以特征的数量,但我不确定给定 --cb_type 的乘法因子是多少。从示例中,我们看到它至少是 2,因为最多有 8 个同名特征,而 --csoaa 4
只负责因子 4.
Why there are only 5 record for d in output, and 7 for c,b,a?
模型中不存储权重为零的特征。
Does it correspond to that features c,b,a occured in data 3 times and d only 2 times?
某种程度上是的,但不是直接的。如上所述,--invert_hash 中的特征对应于特征标签组合(即原始特征和输出标签=动作的组合)。如果一个给定的例子没有被正确预测(在线学习时),那么feature-correct_label的权重就会增加,feature-predicted_label的权重就会减少(这就是one-against-all reduction的效果)。因此,如果在训练数据中从未见过给定的特征标签组合,则其权重很可能会保持为零(永远不会增加或减少)。
我是 运行 这个 example 的上下文强盗,在他们的示例数据上:
1:2:0.4 | a c
3:0.5:0.2 | b d
4:1.2:0.5 | a b c
2:1:0.3 | b c
3:1.5:0.7 | a d
以命令作为他们的建议:
vw -d train.dat --cb 4 --cb_type dr -f traindModel
我想知道如何从此命令中提取策略以及如何解释它?
然后我去
vw -d train.dat --invert_hash traindModel
并收到这样的输出
Num weight bits = 18
learning rate = 0.5
initial_t = 0
power_t = 0.5
using no cache
Reading datafile = ../r-mkosinski/train.dat
num sources = 1
average since example example current current current
loss last counter weight label predict features
1.000000 1.000000 1 1.0 1.0000 0.0000 3
4.439352 7.878704 2 2.0 3.0000 0.1931 3
4.457758 4.476164 4 4.0 2.0000 1.4285 3
finished run
number of examples per pass = 5
passes used = 1
weighted example sum = 5
weighted label sum = 13
average loss = 4.14973
best constant = 2.6
total feature number = 16
如何解释这些结果?如何提取策略?
我也试过这种命令:
vw -d train.dat --cb 4 --cb_type dr --invert_hash p2222.txt
得到如下结果:
Version 7.8.0
Min label:0.000000
Max label:5.000000
bits:18
0 pairs:
0 triples:
lda:0
0 ngram:
0 skip:
options: --cb 4 --cb_type dr --csoaa 4
:0
^a:108232:0.263395
^a:108233:-0.028344
^a:108234:0.140435
^a:108235:0.215673
^a:108236:0.234253
^a:108238:0.203977
^a:108239:0.182416
^b:129036:-0.061075
^b:129037:0.242713
^b:129038:0.229821
^b:129039:0.206961
^b:129041:0.185534
^b:129042:0.137167
^b:129043:0.182416
^c:219516:0.264300
^c:219517:0.242713
^c:219518:-0.158527
^c:219519:0.206961
^c:219520:0.234253
^c:219521:0.185534
^c:219523:0.182416
^d:20940:-0.058402
^d:20941:-0.028344
^d:20942:0.372860
^d:20943:-0.056001
^d:20946:0.326036
Constant:202096:0.263742
Constant:202097:0.242226
Constant:202098:0.358272
Constant:202099:0.205581
Constant:202100:0.234253
Constant:202101:0.185534
Constant:202102:0.326036
Constant:202103:0.182416
为什么输出d
只有5条记录,而c
、b
、a
有7条记录?它是否对应于特征 c
,b
,a
在数据中出现 3 次而 d
仅出现 2 次?还有8个常量行..它们对应什么?
vw -d train.dat --invert_hash traindModel
这里没有指定contextual bandit,所以vw做了一个简单的线性回归。
How to interpet those results?
见https://github.com/JohnLangford/vowpal_wabbit/wiki/Tutorial#vws-diagnostic-information
There are also 8 constant rows.. to what do they correspond?
VW 中的上下文老虎机是使用 减少 到(在这种情况下)对成本敏感的一对一多类分类来实现的。而 csoaa 又被实现为线性回归的简化。当使用 --csoaa 4
时,每个 "original feature" 与所有可能的输出 labels 组合(或 actions 在上下文强盗的情况下) ,所以不是一个原始特征,而是四个特征(不幸的是,它们在 --invert_hash 输出中具有相同的名称,因此您无法确定哪个标签对应于哪个特征,但它们具有不同的哈希值,所以您看到这些是不同的功能)。
我认为 contextual bandit 也需要乘以特征的数量,但我不确定给定 --cb_type 的乘法因子是多少。从示例中,我们看到它至少是 2,因为最多有 8 个同名特征,而 --csoaa 4
只负责因子 4.
Why there are only 5 record for d in output, and 7 for c,b,a?
模型中不存储权重为零的特征。
Does it correspond to that features c,b,a occured in data 3 times and d only 2 times?
某种程度上是的,但不是直接的。如上所述,--invert_hash 中的特征对应于特征标签组合(即原始特征和输出标签=动作的组合)。如果一个给定的例子没有被正确预测(在线学习时),那么feature-correct_label的权重就会增加,feature-predicted_label的权重就会减少(这就是one-against-all reduction的效果)。因此,如果在训练数据中从未见过给定的特征标签组合,则其权重很可能会保持为零(永远不会增加或减少)。