问题标签 [vowpalwabbit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
99 浏览

svm - vowpal_wabbit 训练数据

我试图了解训练和测试数据的 vowpal_wabbit 数据结构,但似乎无法理解它们。

我有一些训练数据,比如。

特征 1:0 特征 2:1 特征 3:10 特征 4:5 类别标签:A

特征 1:0 特征 2:2 特征 3:30 特征 4:8 类别标签:C

特征 1:2 特征 2:10 特征 3:9 特征 4:7 类别标签:B

我已经基于这个网站探索了一些训练数据示例。

http://hunch.net/~vw/validate.html

我的验证数据

但是,我不明白为什么它声称我分别有 4 个和 5 个功能。

验证:

验证反馈

0 投票
0 回答
133 浏览

vowpalwabbit - 如何在上下文强盗模式下使用 -a (审计)选项解释 vw 输出?

我正在对 2 个不同的集合运行上下文强盗方法,这些集合仅在动作变量上有所不同。我在 (klaster3.model) 上构建模型的一组具有 6 种不同的动作类型,而我也在其上构建模型的另一组 (klaster8.model) 具有 7 种不同的动作类型。

当我 head testLabels -n 1 | vw -i klaster8.model -t -p /dev/stdout --quiet 在命令行中运行这样的一行时,我会得到 5.000000 Mloda_kobieta 看起来像是从该上下文的策略中选择的操作。

但是,当我使用 (audit) 选项尝试相同的代码时,-a我会收到这样的输出:

0.943965 Mloda_kobieta Constant:142055:1:0.50745 ^K:136407:1:0.236886 ^Young:101199:1:0.199628 0.994175 Mloda_kobieta Constant:142056:1:0.488827 ^K:136408:1:0.281023 ^Young:101200:1:0.224326 0.948740 Mloda_kobieta Constant:142057:1:0.482498 ^K:136409:1:0.2568 ^Young:101201:1:0.209442 0.979921 Mloda_kobieta Constant:142058:1:0.497253 ^K:136410:1:0.241421 ^Young:101202:1:0.241247 0.910945 Mloda_kobieta Constant:142059:1:0.506602 ^K:136411:1:0.208468 ^Young:101203:1:0.195875 1.004143 Mloda_kobieta Constant:142060:1:0.49813 ^K:136412:1:0.280554 ^Young:101204:1:0.225459 0.934807 Mloda_kobieta Constant:142061:1:0.494118 ^K:136413:1:0.240735 ^Young:101205:1:0.199954 0.953710 Mloda_kobieta Constant:142048:1:0.582269 ^K:136400:1:0.213502 ^Young:101192:1:0.15794 0.994442 Mloda_kobieta Constant:142049:1:0.526175 ^K:136401:1:0.243671 ^Young:101193:1:0.224595 0.944228 Mloda_kobieta Constant:142050:1:0.504455 ^K:136402:1:0.22308 ^Young:101194:1:0.216693 0.979964 Mloda_kobieta Constant:142051:1:0.521737 ^K:136403:1:0.233687 ^Young:101195:1:0.22454 0.907704 Mloda_kobieta Constant:142052:1:0.547686 ^Young:101196:1:0.186401 ^K:136404:1:0.173617 1.004132 Mloda_kobieta Constant:142053:1:0.549014 ^K:136405:1:0.247787 ^Young:101197:1:0.207331 0.937724 Mloda_kobieta Constant:142054:1:0.525254 ^K:136406:1:0.236784 ^Young:101198:1:0.175686 5.000000 Mloda_kobieta

这看起来像是对这种情况下的某种动作评分,在我看来,应该选择得分最低的动作(本例中的动作 5)。我想知道为什么有 14 行,而我在这个数据集中只有 7 种不同的动作类型?以及为什么当我有 6 种不同的操作类型时会收到 12 行。它看起来像 number_of_different_acion_types*2。就我而言,只有两个解释变量,年龄和性别。

问题是:

1) 带有审计 (-a) 的输出中的行数是否对应于等式:number_of_different_acion_types*number_of_explanatory_variables

2)如果是,前 7 行(在该示例中)是否对应于第一个变量,而其他 7 行对应于第二个变量?

3)如何知道输出的顺序是什么?哪个变量被视为第一个变量,哪个变量被视为第二个变量?它是否对应于输入数据集中的列顺序?

4)如果前 7 行对应于第一个变量的成本系数,其他 7 行对应于第二个变量的成本系数,输出策略是否选择这些系数总和最小的臂/动作?(每个动作有 2 个系数,因为有 2 个变量)。

我怀疑输出的顺序对应于输入中列的顺序,但我不确定。

感谢您的回答。

0 投票
1 回答
125 浏览

text - 文本特征编码规则

我想用大众来训练这些数据:

-1 | 单词1 单词2

1 | 单词1 单词3 单词1

... ETC

如您所见,“word1”在第二个示例中重复了两次。

VW 文档说 VW 的默认行为是自动将“:1”添加到每个令牌,例如对于第一个示例:

-1 | 字1:1 字2:1

我的问题是:在第二个示例中我必须做什么?

  • 选项#1:将其转换如下:

1 | 字1:2字3

  • 选项#2:保持“原样”:

1 | 单词1 单词3 单词1

(在这种情况下,我认为会发生一些碰撞)

0 投票
2 回答
628 浏览

c++ - 使用 vowpal wabbit 的典型技术堆栈?

嗨,我想查看一个使用 vowpal wabbit 的示例技术堆栈。

这可以是人们正在使用的实际应用程序,也可以是说明大众汽车如何适应的虚构应用程序。

我们目前面临一个常见的遗留代码问题。我们的后端是使用关系数据库在 C++ 中实现的 Web 服务集合,而前端是在这些 Web 服务之上构建的基于 Javascript 的 Web 应用程序。

现在我们想扩展我们的后端以提供一些使用机器学习功能的分析服务。环顾四周,我非常喜欢 Apache Spark + ML + GraphX,因为图已经在我们的服务器逻辑中具有重要的功能。但问题是它们不是 C++。虽然它们可以与它集成,但由于我们将编写很多我们自己的东西,我们将不得不编写非 C++/Javascript 代码,目前尚未考虑。

Vowpal Wabbit 是另一个符合我们标准的候选者,但我不确定它是否适合从原始数据存储到应用程序逻辑。因此问题。

0 投票
1 回答
184 浏览

bash - 以“docker run daemon”开头的守护进程不工作

当我运行这个命令时,没有守护进程在监听。当我跑

没有进程,但是当我去 docker container bash 并运行时

有一个守护进程监听,在 docker ps 中也可见。有任何想法吗?

0 投票
2 回答
51 浏览

bash - 将守护进程可选输出发送到哪里,以便可读

我的守护进程有选项

守护进程正在侦听端口 26542 并在同一端口上写入,我也希望将其他数据输出到 26542,我尝试使用

它不起作用,当我这样做时

我得到连接被拒绝。我使用的守护进程:vowpal_wabbit,机器学习库。有什么想法吗?

0 投票
1 回答
635 浏览

vowpalwabbit - Vowpal Wabbit 可读模型权重解释

最近我正在使用 Vowpal Wabbit 进行分类,我收到一个关于 readable_model 的问题。

这是我的命令: vw --quiet --save_resume --compressed aeroplane.txt.gzip --loss_function=hinge --readable_model aeroplane.txt

可读的模型文件如下:

对于每个示例,我有 1024 个特征,并使用 i-1 作为 i 特征的特征名称。我的问题是:为什么我为每个功能获得 3 个权重?不是应该只有1个重量吗?我对 ML 比较陌生并且很困惑。

0 投票
1 回答
616 浏览

machine-learning - Vowpal Wabbit 输出的解释

我正在使用 Vowpal Wabbit 使用基本的 unigram 特征进行二元情感分类(正面和负面)。这是我的火车功能的样子:

每行都以标签开头,然后是词汇表中的一系列单词索引。这些特征采用默认值 1。

我使用这个命令来训练:

这是我用于测试的命令:

这是输出文件 test.pred 的样子:

值范围在 -0.114076 和 28.641335 之间。如果我使用一个规则,如果值大于阈值,比如 14,那么它是正的,否则它是负的,那么我得到 51% 的准确度和 40.7% 的 f-measure。

但我正在关注的论文报告该数据集的准确率为 81%。因此,我在实施或对结果的解释中肯定有问题。我无法弄清楚那是什么。

编辑:我在测试命令中使用了 --binary 选项,这给了我标签 {-1,+1}。我对其进行了评估,得到了以下结果——准确度为 51.25%,f-measure 为 34.88%。

0 投票
1 回答
631 浏览

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

我正在使用 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 90 91 92 94 95 96 99 97 97 98 127 111 71 71 71 71 64 66 66 69 69 69 69 69 69 69 69 69 69 69 69 69 70 70 70 70 69 69 69 71 71 71 71 69 68 68 68 68 68 68 68 68 68 68 68 68 72 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 86 83 83 82 83 83 83 83 83 82 82 82 82 82 82 82 82 82 82 82 81 80 81 80 81 82 82 85 85 85 84 83 83 83 83 85 85 85 85 85 85 85 86 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

这是我的训练脚本:

./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 learning rate = 0.5 initial_t = 0 power_t = 0.5 decay_learning_rate = 1 using cache_file = train.vw.cache 忽略文本输入有利于缓存输入 num sources = 1 自示例以来的平均值
示例当前当前当前丢失最后一个计数器
weight label predict features 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.001953 0.003906 512 512.0 2 2 3073 0.002930 0.002930 0.003906 1024 1024 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 3073014465 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 3073014465 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 类。我真的不知道出了什么问题。

0 投票
0 回答
385 浏览

machine-learning - Vowpal Wabbit 多类 (csoaa) 分类始终返回最大标签,即使对于训练数据也是如此

我正在尝试使用 Vowpal Wabbit 进行简单的多类分类,但尽管阅读了所有可用的示例和 stackoverflow 帖子,但它无法正常工作。这就是我的训练文件 train.vw 的样子 [大约 60k 行,类示例分布均匀]:

这是我的测试文件 test.vw 的样子 [>100k 示例]:

我使用csoaa,所以我调用这样的训练:

train.pred 包含正确标记的示例。

然后我像这样测试:

有趣的是, train.predict 包含

在 test.vw 上进行测试时也会发生同样的情况。

如果您查看 train.raw,您确实会看到标签 9 始终具有最高的概率:

我的问题是:为什么会发生这种情况,我需要做些什么来确保为测试示例分配了合理的标签?

我见过很多人有类似的问题,但通常归结为使用不正确的输入格式。

我正在使用 Vowpal Wabbit v7.10.1。

非常感谢你的帮助,

克里斯