Geo散列字符串是我的稀疏逻辑回归模型中的一个特性。因此,我使用java字符串hashCode在Geo散列上生成int值,以获得特性id。但是我发现hashCode方法在类似的地哈希字符串上表现很差。它导致不同的特征具有相同的特征id,这在模型优化中可能存在缺陷,即使是相似的特征也是如此。例如,这些相似的地哈希字符串对具有相同的hashCode。
<"wws8vw", "wws8x9">
"wws8vw".hashCode() = -774715770
"wws8x9".hashCode() = -774715770
<"wmxy0", "wmxwn">
"wmxy0".hashCode() = 113265337
"wmxwn".hashCode() = 113265337
我猜它在Geo散列生成器方法和java hashCode方法之间有一定的关系。所以,任何人都可以解释我的真正原因,以及如何减少地哈希字符串上的碰撞?
发布于 2016-07-29 07:43:43
我认为您误解了 method的目的--一般不是散列,而是为什么对象有这种方法:
哈希表(如HashMap提供的哈希表)支持此方法。
因此,如果您试图将此方法用作机器学习模型的输入,则没有将其用于其预期目的。
答案是相当明显的:您需要设计自己的散列方法--或者选择一个预先存在的方法--为您的预期输入提供所需的碰撞配置文件。你不能改变String.hashCode()
使用的那种。
https://stackoverflow.com/questions/38652644
复制相似问题