【问题标题】:Anonymizing geo location coordinates in python在python中匿名地理位置坐标
【发布时间】:2018-03-21 07:22:55
【问题描述】:

我有一个包含姓名、交易金额以及交易执行地点的准确经度和纬度的 csv。 我希望将最终文档匿名化-为此,我需要将其更改为 CSV,其中名称被散列(这应该很容易),并且经度和纬度在 2 公里的半径内被掩盖。 即,更改坐标,使其与原始位置的距离不超过 2 公里,但采用随机方式,因此无法通过公式恢复。 有谁知道如何以这种方式处理坐标?

【问题讨论】:

  • 散列姓名不会使他们匿名,您仍然可以关联一个人的所有交易。对于坐标,您可以将它们四舍五入(例如,到最接近的 0.1 弧分)而不是随机化它们,但去匿名化通常可以做您意想不到的事情!

标签: python python-3.x geolocation coordinates geohashing


【解决方案1】:

您可以使用locality sensitive hashing (LSH) 将相似的坐标(即在 2 公里半径内)映射到相同的值,概率很高。因此,映射到同一个桶的坐标在欧几里得空间中会更靠近。

否则,另一种技术是使用任何标准散列函数 y = H(x),并以 N 为模计算 y,其中 N 是坐标范围。假设您的坐标是 P = (500,700),并且您希望从 P 返回 [-x,x] KM 范围内的随机值。

P = (500,700)
Range = 1000 #1000 meters for example
#Anonymize co-ordinates to within specified range
ANON_X = hash(P[0]) % Range
ANON_Y = hash(P[1]) % Range
#Randomly add/subtract range
P = (P + ANON_X*random.choice([-1,1]), P+ANON_Y*random.choice([-1,1]))

【讨论】:

  • 如果你“从 P 返回一个 [-x,x] KM 范围内的随机值”,那么有人需要做的就是用相同的 P 取很多它们并平均它们,然后他们找到了 P。
  • 还有random.choice([-1, 1]) 只选择either -1 或 1,中间什么都没有!
  • 理论上对大量 P 进行平均是可行的,但我假设原始坐标稀疏地分布在欧几里得空间中,因此您将无法取很多点来平均. random.choice() 会起作用,因为ANON_X 已经在提供的范围内存储了一个随机值,我们必须决定在该范围内增加或减少该值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多