vowpalwabbit

VW 9.8.0 CCB Multi line input format that includes included action ids, action cost and probabilities


I'm running into some confusion around the multi line example format and ccb; Using Python (vw 9.8.0), when starting vw with --cb_explore_adf and using learn with examples (b) or (c), below, I get cb_adf: badly formatted example, only one cost can be known but found 2 errors, respectively. In example (a) where only action ids are provided (see: https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Conditional-Contextual-Bandit) the same error is returned. What's the correct way to specify the chosen action, with cost, probability along with action ids to include? When I remove action ids to include the examples run but for my use case I need to specify action id sets and it would also be helpful to specify costs.

[Example A]
shared | s_1 s_2
action | a:1 b:1 c:1
action | a:0.5 b:2 c:1
action | a:0.5 
action | c:1
slot 0,1 tag1| d:7
slot 2,3 tag2|
[Example B]
shared | s_1 s_2
action | a:1 b:1 c:1
action | a:0.5 b:2 c:1
action | a:0.5 
action | c:1
slot 1:0:0.8 0,1 tag1| d:4
slot 2:0:0.2 2,3 tag2| d:7
[Example C]
ccb shared | s_1 s_2
ccb action | a:1 b:1 c:1
ccb action | a:0.5 b:2 c:1
ccb action | a:0.5 
ccb action | c:1
ccb slot | d:4
ccb slot 1:0.8,0:0.2 0,1,3 | d:7

Solution

  • The argument string passed into vw.Workspace was not setting Input Label to CCB. The following code, largely copied from vw's Python unittests, achieves what I was looking for,

    ccb_workspace = vowpalwabbit.Workspace(
        quiet=False,
        ccb_explore_adf=True
    )
    
    ccb_ex = """
    ccb shared |User b
    ccb action |Action d
    ccb action |Action e
    ccb action |Action f
    ccb action |Action ff
    ccb action |Action fff
    ccb slot 4:1:0.2 0,1,3 |
    """
    ccb_workspace.learn(ccb_ex)
    ccb_workspace.finish()