gpt4 book ai didi

machine-learning - 在实时系统中使用 sklearn DictVectorizer

转载 作者:行者123 更新时间:2023-11-30 09:11:45 42 4
gpt4 key购买 nike

任何二进制 one-hot 编码都只知道训练中看到的值,因此在拟合过程中未遇到的特征将被默默忽略。对于实时情况,您在一秒钟内拥有数百万条记录,并且功能具有非常高的基数,您需要使用数据更新哈希器/映射器。

我们如何对哈希器进行增量更新(而不是每次遇到新的特征值对时计算整个 fit() )?这里建议的解决这个问题的方法是什么?

最佳答案

这取决于您使用的学习算法。如果您使用的是为稀疏数据集(FTRL、FFM、线性 SVM)指定的方法,则一种可能的方法如下(请注意,它会在特征和大量常量列中引入冲突)。

首先为样本的每个元素分配一个(尽可能大的)向量 V,长度为 D。

对于每个分类变量,评估 hash(var_name + "_" + var_value) % D 。这给你一个整数 i ,您可以存储 V[i] = 1 .

因此,V 永远不会随着新功能的出现而变大。然而,一旦特征数量足够多,一些特征就会发生冲突(即写在同一个地方),这可能会导致错误率增加......

编辑。您可以编写自己的矢量化器以避免冲突。首先调用L当前的特征数量。准备长度为 2L 的相同向量 V(这 2 将允许您在新功能到达时避免冲突 - 至少在一段时间内,具体取决于新功能的到达率)。

以空值开头dictionary<input_type,int> ,将每个特征与一个整数相关联。如果已经看到该特征,则返回该特征对应的int。如果没有,则使用与新索引相对应的整数创建一个新条目。我认为(但我不确定)这就是 LabelEncoder 为您所做的。

关于machine-learning - 在实时系统中使用 sklearn DictVectorizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34493556/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com