【发布时间】:2016-01-05 17:57:53
【问题描述】:
我正在尝试用 Vowpal Wabbit 解决多重分类问题。
我有一个如下所示的火车文件:
1 |feature_space
2 |特征空间
3 |特征空间
作为输出,我想获得属于每个类的测试项目的概率,如下所示:
1:0.13 2:0.57 3:0.30
以 sklearn 分类器 predict_proba 方法为例。
我尝试了以下方法:
1) vw -oaa 3 train.file -f model.file --loss_function 逻辑 --link 逻辑 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 逻辑 我已经相应地修改了输入文件以适应 cs 格式。 csoaa 不接受带有以下错误消息的 loss_function 逻辑:“您使用的标签不是 -1 或 1,而损失函数期望这样!”
如果与默认平方损失函数和类似的输出命令一起使用,我会得到 pred.txt,其中包含每个项目的每个类的原始预测,例如:
2.33 1.67 0.55
我相信这是结果平方距离。
有没有办法让大众输出类别概率或以某种方式将这些距离转换为概率?
【问题讨论】:
-
是的,有一种方法可以完全按照您的意愿行事。在回答之前,我想知道“1 |feature_space 2 |feature_space 3 |feature_space”是什么意思。根据我认为的预期输出,这是一个具有三个类和标签相关特征的分类。那么“2”和“3”是标签,而不是特征?我对吗?您能否提供一个您的 train.file 的真实示例(可能会缩短)?
-
对不起,我的火车文件实际上是这样的:true_class(for ex. 1) |feature_space1 |feature_space2 等等,它只是因为某种原因在文本中被折叠了。为了更清楚,我已经编辑了原文
-
你应该使用
--raw_predictions=pred.txt而不是-raw_predictions = pred.txt(即:等号周围没有空格,双破折号)。 -
--raw_predictions=pred.txt 实际使用。如果你使用 -raw_predictions = pred.txt 你会得到“选项'--data'不能被指定超过一次”错误。您提出的命令是导致空 raw_prediction 文件的原因 - 它已生成,但不包含任何记录
-
你可以试试这个:
cd vowpal_wabbit/test/train-sets/; vw -d multiclass --oaa=10 --raw_predictions=RAW.txt; cat RAW.txt吗?当我尝试它时,RAW.txt 不是空的。
标签: machine-learning vowpalwabbit