Vowpal Wabbit - 精确召回 f 测量

     2023-03-12     169

关键词:

【中文标题】Vowpal Wabbit - 精确召回 f 测量【英文标题】:Vowpal Wabbit - precision recall f-measure 【发布时间】:2015-08-11 08:16:33 【问题描述】:

您通常如何从 Vowpal Wabbit 中针对分类问题创建的模型获得准确率、召回率和 f-measure?

是否有任何可用的脚本或程序通常用于 vw 的输出?

使用 playtennis.txt 中的以下数据做一个最小的例子:

2 | sunny 85 85 false
2 | sunny 80 90 true
1 | overcast 83 78 false
1 | rain 70 96 false
1 | rain 68 80 false
2 | rain 65 70 true
1 | overcast 64 65 true
2 | sunny 72 95 false
1 | sunny 69 70 false
1 | rain 75 80 false
1 | sunny 75 70 true
1 | overcast 72 90 true
1 | overcast 81 75 false
2 | rain 71 80 true

我使用以下方法创建模型:

vw playtennis.txt --oaa 2 -f playtennis.model --loss_function logistic

然后,我通过以下方式获得训练模型对训练数据本身的预测和原始预测:

vw -t -i playtennis.model playtennis.txt -p playtennis.predict -r playtennis.rawp

从这里开始,在给定训练数据playtennis.txt 和对训练数据在playtennis.predict 中的预测的情况下,您通常使用哪些脚本或程序来获得精度、召回率和 f-measure?

另外,如果这是一个多标签分类问题(每个实例可以有多个目标标签,vw 也可以处理),您提出的脚本或程序是否能够处理这些问题?

【问题讨论】:

【参考方案1】:

鉴于每个示例都有一对“预测值与实际值”,您可以使用Rich Caruana's KDD perf utility 来计算这些(以及许多其他)指标。

在多类的情况下,您应该简单地将每个正确分类的情况视为成功,而将每个类不匹配视为未能正确预测。

这里有一个更详细的二进制案例:

# get the labels into *.actual (correct) file
$ cut -d' ' -f1 playtennis.txt > playtennis.actual

# paste the actual vs predicted side-by-side (+ cleanup trailing zeros)
$ paste playtennis.actual playtennis.predict | sed 's/\.0*$//' > playtennis.ap

# convert original (1,2) classes to binary (0,1):
$ perl -pe 's/1/0/g; s/2/1/g;' playtennis.ap > playtennis.ap01

# run perf to determine precision, recall and F-measure:
$ perf -PRE -REC -PRF -file playtennis.ap01
PRE    1.00000   pred_thresh  0.500000
REC    0.80000   pred_thresh  0.500000
PRF    0.88889   pred_thresh  0.500000

请注意,正如 Martin 提到的,vw 使用 -1, +1 约定进行二元分类,而 perf 使用 0, 1 约定,因此您可能需要在切换时来回转换两个。

【讨论】:

【参考方案2】:

对于二元分类,我建议使用标签 +1(打网球)和 -1(不打网球)和 --loss_function=logistic(尽管 --oaa 2 和标签 1 和 2 can be used 也是如此)。大众然后报告逻辑损失,这可能比准确度/精度/召回/f1(取决于应用程序)更具信息性/有用的评估措施。如果您想要 0/1 损失(即“一减精度”),请添加 --binary

对于精度、召回率、f1-score、auc 和其他度量,您可以使用 arielf 的答案中建议的 perf 工具。

对于标准的多类分类(每个示例一个正确的类),使用--oaa N --loss_function=logistic,VW 将报告 0/1 损失。

对于多标签多类分类(每个示例允许更多正确标签),您可以使用--multilabel_oaa N(或将每个原始示例转换为 N 个二分类示例)。

【讨论】:

Vowpal Wabbit 如何表示分类特征

】VowpalWabbit如何表示分类特征【英文标题】:VowpalWabbithowtorepresentcategoricalfeatures【发布时间】:2015-04-2219:57:57【问题描述】:我有以下所有分类变量的数据:classeducationincomesocial_standing1basiclowgood0lowhighV_good1highlownot_good0v_highhighgood... 查看详情

Vowpal Wabbit 的梯度提升

】VowpalWabbit的梯度提升【英文标题】:GradientboostingonVowpalWabbit【发布时间】:2015-07-1214:11:02【问题描述】:有没有办法使用VowpalWabbit对回归使用梯度提升?我使用VowpalWabbit附带的各种有用的技术。我想尝试梯度提升,但我找不到... 查看详情

vowpal-wabbit:使用多次通过、保持和保持期来避免过度拟合?

】vowpal-wabbit:使用多次通过、保持和保持期来避免过度拟合?【英文标题】:vowpal-wabbit:useofmultiplepasses,holdout,&holdout-periodtoavoidoverfitting?【发布时间】:2017-08-2920:01:27【问题描述】:我想使用很棒的vowpalwabbittool使用以下命令... 查看详情

Vowpal Wabbit 多类线性分类

】VowpalWabbit多类线性分类【英文标题】:VowpalWabbitMulticlassLinearClassification【发布时间】:2016-09-2103:19:40【问题描述】:是否可以使用VowpalWabbit库训练多类(多项式)线性分类模型?我尝试将--oaa与--loss_function平方一起使用,但似... 查看详情

Vowpal Wabbit:不平衡的类

】VowpalWabbit:不平衡的类【英文标题】:VowpalWabbit:unbalancedclasses【发布时间】:2016-02-0812:36:24【问题描述】:我想使用VowpalWabbit执行逻辑回归。如何处理不平衡的类(例如1000/50000)?我知道我可以使用重要性加权,但我不确定... 查看详情

使用 Vowpal Wabbit 时计算 AUC

】使用VowpalWabbit时计算AUC【英文标题】:CalculatingAUCwhenusingVowpalWabbit【发布时间】:2014-08-0712:10:39【问题描述】:有没有在VowpalWabbit中计算AUC?我使用VowpalWabbit的原因之一是数据文件的大小。我可以使用VowpalWabbit的输出计算VowpalW... 查看详情

Vowpal Wabbit:低秩矩阵分解?

】VowpalWabbit:低秩矩阵分解?【英文标题】:VowpalWabbit:Low-rankmatrixfactorization?【发布时间】:2016-12-2617:08:05【问题描述】:我有一个非常基本的问题。我想做低秩矩阵分解,我正在查看有关该主题的VowpalWabbitdocumentation。我的问题... 查看详情

使用 Vowpal wabbit 的上下文强盗

】使用Vowpalwabbit的上下文强盗【英文标题】:ContextualBanditusingVowpalwabbit【发布时间】:2015-08-0620:42:25【问题描述】:在这种情况下,输入之一是选择手臂/动作的概率,但我们如何找到该概率?找到这个概率本身不是一项艰巨的... 查看详情

Vowpal Wabbit中逻辑回归的正确性?

】VowpalWabbit中逻辑回归的正确性?【英文标题】:CorrectnessoflogisticregressioninVowpalWabbit?【发布时间】:2014-09-0910:21:17【问题描述】:我已经开始使用VowpalWabbit进行逻辑回归,但是我无法重现它给出的结果。也许它确实有一些未记... 查看详情

如何将 Vowpal Wabbit 逻辑预测转换为概率

】如何将VowpalWabbit逻辑预测转换为概率【英文标题】:HowtoconvertVowpalWabbitlogisticpredictionstoprobabilities【发布时间】:2015-09-2902:01:29【问题描述】:我给了vowpalwabbit一个带有两个标签的数据集,并用它进行了逻辑回归。问题是,它... 查看详情

在守护进程模式下从 Vowpal Wabbit 获取原始预测

】在守护进程模式下从VowpalWabbit获取原始预测【英文标题】:GetrawpredictionsfromVowpalWabbitindaemonmode【发布时间】:2014-10-0613:54:59【问题描述】:我正在使用以下命令以守护程序模式启动VowpalWabbit:vw--loss_functionhinge--ect250--quiet--passes... 查看详情

在交叉验证方面需要一些关于 Vowpal Wabbit 的指示

】在交叉验证方面需要一些关于VowpalWabbit的指示【英文标题】:NeedsomepointersonVowpalWabbitwithrespecttocrossvalidation【发布时间】:2013-09-2108:21:07【问题描述】:我的目标是在参数空间中对各种VW模型进行网格搜索(尝试不同的损失函数... 查看详情

使用 Vowpal Wabbit 获得未校准的概率输出,广告转化预测

】使用VowpalWabbit获得未校准的概率输出,广告转化预测【英文标题】:GettinguncalibratedprobabilityoutputswithVowpalWabbit,ad-conversionprediction【发布时间】:2016-10-0817:17:51【问题描述】:我正在尝试使用VowpalWabbit来预测广告展示的转化率,... 查看详情

由于 vowpal wabbit 对 boost 库的依赖而导致的错误

】由于vowpalwabbit对boost库的依赖而导致的错误【英文标题】:Errorsduetovowpalwabbit\'sdependenciesonboostlibrary【发布时间】:2012-07-1108:48:55【问题描述】:我正在努力安装vowpalwobbit,但当我运行make文件时它失败了,抛出:cdlibrary;make;cd..g... 查看详情

Vowpal Wabbit 不预测二进制值,可能是过度训练?

】VowpalWabbit不预测二进制值,可能是过度训练?【英文标题】:VowpalWabbitnotpredictingbinaryvalues,maybeovertraining?【发布时间】:2016-11-2903:50:00【问题描述】:我正在尝试使用VowpalWabbit进行二进制分类,即给定特征值vw会将其分类为1或0... 查看详情

Vowpal Wabbit 中的纠错锦标赛 (ect) 多类分类

】VowpalWabbit中的纠错锦标赛(ect)多类分类【英文标题】:ErrorCorrectingTournaments(ect)MultiClassClassificationinVowpalWabbit【发布时间】:2014-08-2718:05:29【问题描述】:我试图通过描述ECT算法的thispaper来了解它,但无法从中得到太多。我知道... 查看详情

Vowpal Wabbit reverse_hash 选项产生空输出,但为啥呢?

】VowpalWabbitreverse_hash选项产生空输出,但为啥呢?【英文标题】:VowpalWabbitinverted_hashoptionproducesemptyoutput,butwhy?VowpalWabbitreverse_hash选项产生空输出,但为什么呢?【发布时间】:2014-08-1716:44:43【问题描述】:我正在尝试使用倒置... 查看详情

Vowpal Wabbit 模型在使用像素 RGB 值对图像进行多类分类时效果不佳

】VowpalWabbit模型在使用像素RGB值对图像进行多类分类时效果不佳【英文标题】:VowpalWabbitmodelworksbadlyonmulticlassclassificationofimagesusingpixelRGBvalues【发布时间】:2015-07-1022:12:20【问题描述】:我正在使用VowpalWabbit对多类图像进行分类... 查看详情