【问题标题】:How to extract output policy from contextual bandit in vowpal wabbit?如何从 vowpal wabbit 中的上下文强盗中提取输出策略?
【发布时间】:2015-04-11 18:42:02
【问题描述】:

我正在为上下文强盗运行此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个常量行..它们对应什么?

【问题讨论】:

    标签: vowpalwabbit


    【解决方案1】:

    vw -d train.dat --invert_hash traindModel

    这里没有指定上下文强盗,所以 vw 做了一个简单的线性回归。

    如何解释这些结果?

    见https://github.com/JohnLangford/vowpal_wabbit/wiki/Tutorial#vws-diagnostic-information

    还有8个常量行..它们对应什么?

    VW 中的上下文强盗是使用 reduction 实现的(在这种情况下)成本敏感的一对多多类分类。而 csoaa 又被实现为对线性回归的简化。当使用--csoaa 4 时,每个“原始特征”都与所有可能的输出标签(或动作,在上下文强盗的情况下)相结合,因此不是一个原始特征,而是是四个特征(不幸的是,它们在 --invert_hash 输出中具有相同的名称,因此您无法确定哪个标签对应于哪个特征,但是它们具有不同的哈希值,因此您会看到这些是不同的特征)。

    我认为上下文强盗也需要乘以特征数量,但我不确定给定 --cb_type 的乘数是多少。从示例中,我们看到它至少是 2,因为最多有 8 个同名特征,而--csoaa 4 只负责因子 4。

    为什么输出中d只有5条记录,c,b,a有7条记录?

    权重为零的特征不存储在模型中。

    是否对应特征 c,b,a 在数据中出现 3 次而 d 仅出现 2 次?

    不知何故是的,但不是直接的。如上所述,--invert_hash 中的特征对应于特征标签组合(即原始特征和输出标签=动作的组合)。如果给定的示例没有正确预测(在线学习期间),则会增加 feature-correct_label 权重并减少 feature-predicted_label 权重(这是一对一减少的效果)。因此,如果在训练数据中从未见过给定的特征标签组合,则它的权重很可能会保持为零(永远不会增加或减少)。

    猜你喜欢
    • 2015-08-06
    • 2017-05-31
    • 2020-04-22
    • 2020-04-08
    • 2021-10-13
    • 2014-12-08
    • 2015-07-01
    • 2014-11-08
    • 2021-10-09
    相关资源
    最近更新 更多