Vowpal Wabbit 如何表示分类特征

     2023-03-13     260

关键词:

【中文标题】Vowpal Wabbit 如何表示分类特征【英文标题】:Vowpal Wabbit how to represent categorical features 【发布时间】:2015-04-22 19:57:57 【问题描述】:

我有以下所有分类变量的数据:

    class  education    income    social_standing
    1       basic       low       good
    0        low        high      V_good
    1        high       low       not_good
    0        v_high     high      good

这里的教育有四个级别(基础、低、高和 v_high)。收入有低和高两个层次;并且 social_standing 具有三个级别(好、v_good 和 not_good)。

就我对将上述数据转换为大众格式的理解而言,它将是这样的:

    1 |person education_basic income_low social_standing_good
    0 |person education_low income_high social_standing_v_good
    1 |person education_high income_low social_standing_not_good
    0 |person education_v_high income_high social_standing_good

这里,“person”是命名空间,所有其他都是特征值,以各自的特征名称为前缀。我对么?不知何故,这种特征值的表示让我很困惑。有没有其他方式来表示特征?将不胜感激。

【问题讨论】:

【参考方案1】:

是的,你是对的。

这种表示肯定适用于 vowpal wabbit,但在某些情况下,可能不是最佳的(视情况而定)。

为了表示无序、分类变量(具有离散值),标准的 vowpal wabbit 技巧是对每个可能的(名称,值) 组合(例如person_is_good, color_blue, color_red)。这样做的原因是vw 隐含地假定一个值是1,只要缺少一个值。 color_red, color=redcolor_is_red 甚至 (color,red)color_red:1 之间没有实际区别,除了内存中的哈希位置。唯一不能在变量名中使用的字符是特殊分隔符(:|)和空格。

术语说明:这种将每个(特征 + 值)对转换为单独特征的技巧有时称为“One Hot Encoding”。

但在这种情况下,变量值可能不是“严格分类的”。他们可能是:

严格排序,例如 (low < basic < high < v_high) 可能与您尝试预测的标签存在单调关系

因此,通过将它们设为“严格分类”(我对具有离散范围的变量的术语,它不具有上述两个属性),您可能会丢失一些可能有助于学习的信息。

在您的特定情况下,您可以通过将值转换为数字来获得更好的结果,例如(1, 2, 3, 4) 用于教育。即你可以使用类似的东西:

1 |person education:2 income:1 social_standing:2
0 |person education:1 income:2 social_standing:3
1 |person education:3 income:1 social_standing:1
0 |person education:4 income:2 social_standing:2

问题中的训练集应该可以正常工作,因为即使您将所有离散变量都转换为布尔变量,vw 也应该通过数据本身的标签自行发现排序和单调性,只要上面两个属性都成立,并且有足够的数据可以推导出来。

这是在 vowpal wabbit 中编码变量的简短备忘单:

Variable type       How to encode                readable example
-------------       -------------                ----------------
boolean             only encode the true case    is_alive
categorical         append value to name         color=green
ordinal+monotonic   :approx_value                education:2
numeric             :actual_value                height:1.85

最后的笔记:

vw 中,所有变量都是数字。编码技巧只是使事物显示categoricalboolean 的实用方法。布尔变量只是数字 0 或 1;分类变量可以编码为布尔值:name+value:1。 值与标签不单调的任何变量在数字编码时可能不太有用。 任何与标签不是线性相关的变量都可以在训练前从非线性变换中受益。 任何具有零值的变量都不会对模型产生影响(例外:使用 --initial_weight <value> 选项时),因此可以从训练集中删除它 解析特征时,只有: 被视为特殊分隔符(在变量名与其数值之间),其他任何内容都被视为名称的一部分,整个名称字符串被散列到内存中的某个位置。缺少:<value> 部分意味着:1

编辑:命名空间呢?

名称空间以特殊字符分隔符添加到特征名称之前,因此它们将相同的特征映射到不同的哈希位置。示例:

|E low |I low

本质上等同于(无名称空间平面示例):

|  E^low:1 I^low:1

名称空间的主要用途是轻松地将名称空间的所有成员重新定义为其他名称,忽略功能的完整名称空间,将名称空间的功能与另一个名称空间交叉等(请参阅-q,@ 987654346@、--redefine--ignore--keep 选项)。

【讨论】:

谢谢。非常非常清楚。除了布尔值(备忘单的第一行),我是理解逻辑还是二进制?也就是说,如果它是二进制的(具有任意两个值,不一定是真/假),我不必为列名添加前缀,而只需按原样写值,但在其他三种情况下,列名必须以某种形式出现在值之前。 谢谢。所有这些说明使使用 Vowpal Wabbit 变得更加容易。 @arielf 感谢您详尽的回答!唯一的问题:我是否需要为 不同 命名空间中的分类特征明确指定前缀?也就是说,这些东西:|E low |I low 是否会被大众视为不同的功能?从input format doc 我知道它会的。 我也分享了好问题! @kurtosis - 是的,不同的名称空间会将相同的功能名称映射到不同的位置 - 即单独的功能。我会将其添加到答案中。

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

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

Vowpal Wabbit Logistic 回归

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

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

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

Vowpal Wabbit - 精确召回 f 测量

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

l1/l2 正则化导致 vowpal wabbit 中所有特征权重为零是不是合理?

】l1/l2正则化导致vowpalwabbit中所有特征权重为零是不是合理?【英文标题】:Isitreasonableforl1/l2regularizationtocauseallfeatureweightstobezeroinvowpalwabbit?l1/l2正则化导致vowpalwabbit中所有特征权重为零是否合理?【发布时间】:2015-12-2113:17:36【... 查看详情

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

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

Vowpal Wabbit:低秩矩阵分解?

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

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

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

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

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

Vowpal Wabbit:不平衡的类

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

使用 Vowpal wabbit 的上下文强盗

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

Vowpal Wabbit 的梯度提升

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

使用 Vowpal Wabbit 时计算 AUC

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

--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获取原始预测【英文标题】: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来预测广告展示的转化率,... 查看详情