R FeatureHashing: hashed.model.matrix中的额外值

摘要

为什么由FeatureHashing生成的hashed.model矩阵在第一列总是有一个“标记”(即一个像1或2或更多的条目)?

enter image description here

详细信息

在研究特征哈希对一些简单数据的处理时,我发现了一些无法解释的情况:为什么生成的矩阵中每条记录都包含一个额外的值?(总是出现在第一列)。

数据如下:

library(FeatureHashing)df=data.frame( soup=c('broth','pea','tomato','pea','broth'),               main=c( 'fries', 'potato', 'fries', 'rice','rice') )> df    soup   main1  broth  fries2    pea potato3 tomato  fries4    pea   rice5  broth   rice

生成哈希矩阵:

m=hashed.model.matrix(~.,data=df,hash.size=16,signed.hash=FALSE,                      create.mapping=TRUE)5 x 16 sparse Matrix of class "dgCMatrix"   [[ suppressing 16 column names ‘1’, ‘2’, ‘3’ ... ]][1,] 1 . . . . . 1 . . . . . . . 1 .[2,] 2 . . . . . . . . . . . 1 . . .[3,] 1 . 1 . . . . . . . . . . . 1 .[4,] 1 . . . . . . . 1 . . . 1 . . .[5,] 1 . . . . . 1 . 1 . . . . . . .

显示映射:

hash.mapping(m)mainrice mainpotato  mainfries    souppea  soupbroth souptomato         9          1         15         13          7          3  

现在手动翻译数据框df中的第一行,使用上述映射:第一行有soupbroth->7和mainfries->15。因此,我们期望在第7列和第15列有一个标记。

查看矩阵的第一行:

[1,] 1 . . . . . 1 . . . . . . . 1 .

我们确实发现第7列和第15列有一个标记,但第1列也有一个额外的标记。实际上,第1列在所有行中都有一个标记。这是从哪里来的?它的用途是什么?

附注:记录用的是”R version 3.2.1 (2015-06-18)” / FeatureHashing_0.9


回答:

第一列是截距项,在许多机器学习包中也称为偏置项。

例如:

m1 = model.matrix(~., df)

如你所见,m1的第一列被命名为截距项,其所有值都是1

如果你想移除截距列,请尝试:

m = hashed.model.matrix(~ . -1, ...)

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

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