我正在尝试使用Vowpal Wabbit进行多类分类问题。
我的训练文件看起来像这样:
1 |feature_space
2 |feature_space
3 |feature_space
作为输出,我希望获得测试项目属于每个类的概率,如下所示:
1: 0.13 2:0.57 3:0.30
可以参考sklearn分类器的predict_proba方法作为例子。
我尝试了以下方法:
1) vw -oaa 3 train.file -f model.file –loss_function logistic –link logistic vw -p predict.file -t test.file -i model.file -raw_predictions = pred.txt
但是pred.txt文件是空的(没有记录,但文件被创建了)。predict.file只包含最终类别,没有概率信息。
2) vw – csoaa3 train.file -f model.file –link logistic我相应地修改了输入文件以适应cs格式。csoaa不接受logistic损失函数,并显示以下错误信息:“您使用了不是-1或1的标签,而损失函数期望这些标签!”
如果使用默认的平方损失函数,并使用类似的输出命令,我得到了pred.txt文件,其中包含每个项目每个类的原始预测,例如:
2.33 1.67 0.55
我认为这是结果的平方距离。
有没有办法让VW输出类概率,或者将这些距离转换为概率?
回答:
在VW版本7.9.0中存在一个导致原始预测文件为空的错误,该错误已在7.10.0版本中修复。
自2015年11月起,获取概率的最简单方法是使用--oaa=N --loss_function=logistic --probabilities -p probs.txt
。(或者,如果您需要依赖标签的特征:--csoaa_ldf=mc --loss_function=logistic --probabilities -p probs.txt
。)