We are planning to refine and expand the current API of BEMBFlex
.
- Currently the model supports predicting binary
batch.label
or multi-classbatch.item_index
. We plan to support arbitrary multi-class classifications.- In particular, you don't need to change anything if
pred_item=True
, the model will know the number of classes is exactly thenum_items
parameter. Also, in this case, yourChoiceDataset
object does not need to have alabel
attribute, since the model will look for theitem_index
as the ground truth for training. - In contrast, if
pred_item=False
, now you need to supply anum_classes
to theBEMBFlex.__init__()
method. Also, you would need alabel
attribute in theChoiceDataset
object. Thelabel
attribute should be aLongTensor
with values from{0, 1, ..., num_classes}
.
- In particular, you don't need to change anything if
- Thanks to feedbacks from our valued users, we are planning to reorganize our post-estimation prediction methods for better user experience.
- We will implement a method called
predict_proba()
, the same name as inference methods of scikit-learn models. - This method will have
@torch.no_grad()
as a decorator, so you can use it however you want without being worried about gradient tracking. - With
pred_items = True
, thebatch
needsitem_index
attribute only if it's involved in the utility computation (e.g., within-category computation). - With
pred_items = False,
thebatch
does not need to have alabel
attribute. - The preliminary API of
predict_proba()
is used as the following:
- We will implement a method called
batch = ChoiceDataset(...)
bemb = BEMBFlex(..., pred_item=True, ...)
proba = bemb.predict_proba(batch) # shape = (len(batch), num_items)
batch = ChoiceDataset(...)
# not that batch doesn't need to have a label attribute.
bemb = BEMBFlex(..., pred_item=False, num_classes=..., ...)
proba = bemb.predict_proba(batch) # shape = (len(batch), num_classes)
- We received feedbacks that the naming of
price
-variation is ambiguous, we propose to change it tosessionitem
-variation instead (this is precisely the definition of such variables).