在 vowpal wabbit 中使用的是什么类型的特征提取器?

sklearn中,当我们将句子传递给算法时,我们可以使用文本特征提取器,例如CountVectorizerTfidfVectorizer等……我们会得到一个浮点数数组。

但是,当我们将如下格式的输入文件传递给vowpal wabbit时,我们会得到什么?

-1 |Words The sun is blue1 |Words The sun is yellow

vowpal wabbit 的内部实现中使用了什么?这些文本是如何转换的?


回答:

这里有两个独立的问题:

问题1: 为什么在使用 vowpal wabbit 时不能(也不应该)使用像 tf-idf 这样的转换?

回答1: vowpal wabbit 不是一个批量学习系统,而是一个在线学习系统。为了计算像 tf-idf 这样的度量(每个文档中的词频与整个语料库的对比),你需要先看到所有数据(语料库),并且有时需要对数据进行多次处理。vowpal wabbit 作为一个在线/增量学习系统,设计目的是处理那些你提前没有完整数据的问题。详见这个回答了解更多细节。

问题2: vowpal wabbit 是如何“转换”它看到的特征的?

回答2: 它并不进行转换。它只是将每个词特征即时映射到内存中的哈希位置。在线学习步骤由重复的优化循环(例如SGDBFGS)驱动,逐个样本地最小化建模误差。你可以选择要优化的损失函数

然而,如果你已经有了想要训练的完整数据,没有什么能阻止你先使用其他工具对其进行转换,然后将转换后的值输入给 vowpal wabbit。这是你的选择。根据具体数据,使用转换预处理可能会比直接使用 vowpal wabbit 进行多次处理(查看 vw --passes 选项)得到更好或更差的结果。

为了完成回答,让我们再添加一个相关问题:

问题3: 我可以使用预转换的(例如 tf-idf)数据与 vowpal wabbit 一起使用吗?

回答3: 是的,你可以。只要使用以下(转换后)的格式。不要使用单词,而是使用整数作为特征ID,并且由于任何特征都可以有一个可选的明确权重,使用 tf-idf 浮点数作为权重,遵循典型的 SVMlight 格式中的 : 分隔符:

-1 |  1:0.534  15:0.123  3:0.27  29:0.066  ...1  |  3:0.1  102:0.004  24:0.0304  ...

之所以这样有效,是因为 vw 有一个很好的特性,可以区分字符串和整数特征。它不会对看起来像整数的特征名称进行哈希处理(除非你明确使用 --hash_all 选项)。整数特征编号直接用作特征的哈希结果。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注