线性机器学习算法中的分类特征

机器算法验证 机器学习 分类数据 线性模型
2022-04-13 08:42:05

如何处理线性 ML 算法中的分类特征?显而易见的解决方案是将每个值表示为二进制特征。例如,如果分类特征颜色具有三个可能的值:红色、蓝色和绿色,那么我们将其替换为三个二值特征 [color == red]、[color == green]、[color == blue]。有更好的解决方案吗?

具体来说,我正在使用 Vowpal Wabbit 的逻辑回归。据我从教程中了解到 VW 可以使用分类功能进行操作,但我没有发现它是如何工作的。

1个回答

您所说的分类特征称为特征二值化这是非常容易和常用的。如果您的特征由一个单词组成,那基本上是唯一可行的算法。

Vowpal Wabbit 包(以及我知道的大多数包,如 scipy、scikit)中使用的东西更常见一点,称为Bag of Words

假设你的特征是两个或多个词:“红木”或“蓝铁”。然后你可以评估所有单词的频率,而不是短语。对于每个样本,您现在将拥有其中单词的频率向量。如果你用整体频率对其进行归一化,你将得到词袋表示。

例如,这里给出了更详细的描述

谈到 Vowpal Wabbit 包,他们在文件 *parse_primitives.cc*中的函数tokenize中实现它。

希望它会有所帮助。