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

     2023-03-12     197

关键词:

【中文标题】Vowpal Wabbit 模型在使用像素 RGB 值对图像进行多类分类时效果不佳【英文标题】:Vowpal Wabbit model works badly on multiclass classification of images using pixel RGB values 【发布时间】:2015-07-10 22:12:20 【问题描述】:

我正在使用 Vowpal Wabbit 对多类图像进行分类。我的数据集类似于http://www.cs.toronto.edu/~kriz/cifar.html,由3000个训练样本和500个测试样本组成。特征是 32*32 图像的 RGB 值。我使用 Vowpal Wabbit Logistic 损失函数来训练模型,迭代次数为 100 次。在训练过程中,平均损失低于 0.02(我认为这个数字相当不错吧?)。然后我用输出模型预测训练集的标签,发现预测很糟糕。几乎所有这些都属于第六类。我真的不知道发生了什么,因为在我看来,在训练过程中,预测大多是正确的,但在我用模型预测后,它们突然变成了所有 6。

这是一个功能示例。

1 | 211 174 171 165 161 161 162 163 163 163 163 163 163 163 163 163 162 161 162 163 163 163 163 164 165 167 168 167 168 163 160 187 153 102 96 90 89 90 91 92 92 92 92 92 92 92 92 92 92 92 91 90 90 90 90 91 92 94 95 96 99 97 98 127 111 71 71 64 66 68 69 69 69 69 69 69 70 70 69 69 70 71 71 69 68 68 68 68 70 72 73 75 78 78 81 96 111 69 68 61 64 67 67 67 67 67 67 67 68 67 67 66 67 68 69 68 68 67 66 66 67 69 69 69 71 70 77 89 116 74 76 71 72 74 74 72 73 74 74 74 74 74 74 74 72 72 74 76 76 75 74 74 74 73 73 72 73 74 85 92 123 83 86 83 82 83 83 82 83 83 82 82 82 82 82 82 81 80 82 85 85 84 83 83 83 85 85 85 85 86 94 95 127 92 96 93 93 92 91 91 91 91 91 90 89 89 86 86 86 86 87 89 89 88 88 88 92 92 93 98 100 96 98 96 132 99 101 98 98 97 95 93 93 94 93 93 95 96 97 95 96 96 96 96 95 94 100 103 98 93 95 100 105 103 103 96 139 106 108 105 102 100 98 98 98 99 99 100 100 95 98 93 81 78 79 77 76 76 79 98 107 102 97 98 103 107 108 99 145 115 118 115 115 115 113 ......

这是我的训练脚本:

./vw train.vw --oaa 6 --passes 100 --loss_functionlogistic -c --holdout_off -f image_classification.model

这是我的预测脚本(在训练数据集上):

./vw -i image_classification.model -t train.vw -p train.predict --quiet

这是训练期间的统计数据:

final_regressor = image_classification.model Num weight bits = 18 学习率 = 0.5 initial_t = 0 power_t = 0.5 decay_learning_rate = 1 使用 cache_file = train.vw.cache 忽略文本输入而赞成 缓存输入数量来源 = 1 自示例以来的平均值 示例当前当前当前损失最后一个计数器 权重标签预测特征 0.000000 0.000000 1 1.0 1 1 3073 0.000000 0.000000 2 2.0 1 1 3073 0.000000 0.000000 4 4.0 1 1 3073 0.000000 0.000000 8 8.0 1 1 3073 0.000000 0.000000 16 16.0 1 1 3073 0.000000 0.000000 32 32.0 1 1 3073 0.000000 0.000000 64 64.0 1 1 3073 0.000000 0.000000 128 128.0 1 1 3073 0.000000 0.000000 256 256.0 1 1 3073 0.001953 0.003906 512 512.0 2 2 3073 0.002930 0.003906 1024 1024.0 3 3 3073 0.002930 0.002930 2048 2048.0 5 5 3073 0.006836 0.010742 4096 4096.0 3 3 3073 0.012573 0.018311 8192 8192.0 5 5 3073 0.014465 0.016357 16384 16384.0 3 3 3073 0.017029 0.019592 32768 32768.0 6 6 3073 0.017731 0.018433 65536 65536.0 6 6 3073 0.017891 0.018051 131072 131072.0 5 5 3073 0.017975 0.018059 262144 262144.0 3 3 3073

每遍完成的示例数 = 3000 遍使用 = 100 加权示例总和 = 300000.000000 加权标签总和 = 0.000000 平均损失 = 0.017887 总特征数 = 921900000

在我看来,它在训练期间可以完美预测,但在我使用输出模型后,突然一切都变成了第 6 类。我真的不知道出了什么问题。

【问题讨论】:

【参考方案1】:

您的方法存在几个问题。

1) 我猜训练集首先包含标签为 1 的所有图像,然后是标签为 2 的所有示例,以此类推,最后一个标签为 6。如果您想使用在线学习(其中是大众汽车默认的学习算法)。

2) VW 使用稀疏特征格式。一行中的特征顺序并不重要(除非您使用 --ngram)。因此,如果特征编号 1(左上像素的红色通道)的值为 211,而特征编号 2(第二个像素的红色通道)的值为 174,则需要使用:

1 | 1:211 2:147 ...

3) 要在图像识别中获得良好的结果,您需要比原始像素值的线性模型更好的东西。不幸的是,大众没有深度学习(多层神经网络),没有卷积网络。你可以尝试--nn X 来获得一个带有 X 个单元(和 tanh 激活函数)的隐藏层的神经网络,但这只是the state-of-the-art approaches to CIFAR etc 的一个糟糕的替代品。您还可以尝试 VW 中可用的其他非线性缩减(-q--cubic--lrq--ksvm--stage_poly)。一般来说,我认为 VW 不适合此类任务(图像识别),除非您应用一些生成(大量)特征(例如 SIFT)的预处理。

4) 你过拟合了。

平均损失低于 0.02(我认为这个数字相当不错吧?

没有。您使用了--holdout_off,因此报告的损失是train 损失。通过简单地记忆所有示例(即过度拟合),很容易获得几乎为零的训练损失。但是,您希望 test(或holdout)损失较低。

【讨论】:

感谢您提供如此详细的建议! 另外:--oaa 6 将使用 6 个类,CIFAR 数据集有 10 个类,所以你想要 --oaa 10 还有:--ect N 通常比 -oaa N 表现更好。

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

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

Vowpal Wabbit 多类线性分类

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

使用 Vowpal Wabbit 时计算 AUC

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

Vowpal Wabbit:不平衡的类

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

Vowpal Wabbit Logistic 回归

】VowpalWabbitLogistic回归【英文标题】:VowpalWabbitLogisticRegression【发布时间】:2015-01-0604:03:17【问题描述】:我正在使用VowpalWabbit对具有25个特征和4800万个实例的数据集执行逻辑回归。我对当前预测值有疑问。它应该在0或1以内。av... 查看详情

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

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

Vowpal Wabbit - 精确召回 f 测量

】VowpalWabbit-精确召回f测量【英文标题】:VowpalWabbit-precisionrecallf-measure【发布时间】:2015-08-1108:16:33【问题描述】:您通常如何从VowpalWabbit中针对分类问题创建的模型获得准确率、召回率和f-measure?是否有任何可用的脚本或程序... 查看详情

使用 Vowpal wabbit 的上下文强盗

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

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

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

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

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

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

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

--oaa 2 和 --loss_function=logistic 在 Vowpal Wabbit 中的效果

】--oaa2和--loss_function=logistic在VowpalWabbit中的效果【英文标题】:Effectof--oaa2and--loss_function=logisticinVowpalWabbit【发布时间】:2014-08-3117:31:36【问题描述】:我应该在VW中使用哪些参数来执行二元分类任务?例如,让我们使用rcv1_small.d... 查看详情

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

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

Vowpal Wabbit 如何表示分类特征

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

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

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

Vowpal Wabbit:低秩矩阵分解?

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

在 OSX 10.13.2、python 3.5.1、Anaconda3 上安装 vowpal wabbit python3 接口

】在OSX10.13.2、python3.5.1、Anaconda3上安装vowpalwabbitpython3接口【英文标题】:vowpalwabbitpython3interfaceinstallationonOSX10.13.2,python3.5.1,Anaconda3【发布时间】:2018-12-1816:46:33【问题描述】:我正在使用OSX10.13.2、python3.5.1、Anaconda3虚拟环境为Ana... 查看详情

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

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