hashing trick或者feature hashing是什么

  统计/机器学习 数据预处理 数据降维
2

我看到有人说可以用hashing trick来进行降维?这个hashing trick是什么意思?怎么降维?

好像feature hashing也是这个意思。


 

开门呀是我   2017-03-29 10:13



   1个回答 
4

Hashing trick,有时候也叫做feature hashing,在自然语音中已经用作降维的手段。在一般的机器学习任务中,它也可以对categorical feature进行降维。

举个例子,比如你是淘宝的算法工程师,你要做一个退货的预测模型,假设有一个feature是location_id,表示商品的产地。这个是categorical feature,所以你通常需要做one-hot encoding,把这一列转化为dummy variable。商品来自全国各市、全球各国,可能这个location_id就有成千上万个数值。转码之后,模型就会增加这一万个dummy变量。这对数据的读取、操作,模型的训练都是极大的挑战。

Hashing trick就是用hashing function这个小技巧来降维。若location_id都是整数,我们可以对所有的location_id取余,location_id (mod p),这个取余函数就是我们使用的hashing function。很显然进行取余操作之后,我们最多只有p个不同的数值了。在此之上再用one-hot encoding,我们只增加了p列。

location_id        location_id (mod 5)

21                        1

9126                    1

45                        0

10                        0

1189                    4

Hashing trick有三个主要的优点

1.降维程度大

2.计算快速、方便

3. 不要额外的存储空间(额外的参考词典等)

但是,也有些缺点。比如我们观察到上面产地编号9126和21除以5的余数都是1,它们就被放到了一起。在Hashing trick中,这种冲突和合并是无法避免的。但是根据一些论文和大量业界应用的结果,这种冲突合并对预测模型的表现的影响微乎其微。另一个缺点,因为大量的数值并合并,这使得模型和结果不易interpret。

五道口少年   2017-04-05 10:17



相关问题

分类变量,进行One hot编码,维度升高,如何处理?   0回答

维数大于样本数的问题   3回答

如何简单理解正则化   1回答

python里怎么实现t-SNE降维?   1回答

NLP中的hashing trick是什么?   1回答

t-SNE如何实现降维?   0回答

线性回归或者逻辑回归中常提到的AIC和BIC是什么意思?   1回答

PCA降维之前为什么要先标准化?   1回答

sklearn.decomposition.PCA方法中fit, fit_transform, transform应该怎么用   1回答

在数据预处理阶段,特征的标准化有哪些方法?   1回答

为什么PCA被称作非监督式学习?   2回答

让DataFrame中的行按照某一列元素的绝对值从大到小排列   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!