【问题标题】:How can I de-normalize a dataset which was normalized using an unknown scaling factor?如何对使用未知比例因子进行归一化的数据集进行反规范化?
【发布时间】:2020-10-15 20:53:19
【问题描述】:

我正在使用数据集https://github.com/google-research/open-covid-19-data/blob/master/data/exports/search_trends_symptoms_dataset/README.md,它按以下方式标准化(取自他们的 github 在上面的 url 中):

  1. 首先,该算法计算该区域在该天/该周的每个症状的搜索次数。
  2. 接下来,我们将此计数除以该地区当天/每周的搜索用户总数,以计算相对流行度(可以解释为该地区的用户将在该地区搜索给定症状的概率)天/周)。我们将此比率称为症状的标准化流行度。
  3. 然后,我们使用所选时间分辨率(天/周)在所有症状中找到该地区整个已发布时间范围内标准化流行度的最大值。我们将此最大值缩放为 100。所有其他值都映射到 0-100 范围内按比例缩小的值(线性缩放)。
  4. 最后,我们存储缩放因子并在后续版本中使用它来缩放值(对于相同的区域和时间分辨率)。在未来的更新中,当症状流行度超过先前观察到的最大值(在步骤 3 中找到)时,新的缩放值将大于 100

当我尝试使用数据集来预测住院病例时,问题就来了。由于症状的相对流行程度取决于依赖于状态的比例因子,因此我无法比较不同状态的数据。所以我需要做的是以某种方式对数据进行非规范化,以找到一般症状的流行程度,而不是相对于特定状态。

我对解决方案的尝试涉及找到不同州的症状相对流行度的中位数,以及某个州的不同症状的流行度中位数。我觉得使用这些中位数可以以某种方式帮助我恢复预标准化数据,但我不确定如何。

这是一个例子:

我正在尝试恢复的预规范化数据:

         | Symptom 1 | Symptom 2 | Symptom 3 |

| State 1| 20/200  | 5/200    | 10/200  |

| State 2 | 30/100  | 1/100  | 20/100   |

| State 3 | 10/50  | 0/50 | 5/50    |

我拥有的标准化后数据:

          | Symptom 1 | Symptom 2 | Symptom 3 |

| State 1 | 100       | 25        | 50        |

| State 2 | 100       | 3.33      | 66.67     |

| State 3 | 100       | 0         | 50        |

【问题讨论】:

  • 您提到存储了缩放因子。那么这是否意味着缩放因子与缩放数据一起给出?

标签: python pandas data-analysis


【解决方案1】:

不幸的是,仅在给定数据集的情况下,在数学上不可能恢复预标准化数据。尽管 Google 存储了缩放因子,但我们无法使用这些缩放因子,没有它们,我们就没有足够的信息。

考虑以下状态值:

100 | 25 | 50

这可能意味着,对于任何 x s.t. 0

x | x/4 | x/2

即使您获得了比例因子,并且您可以以某种方式计算出 x 等于 0.1:您仍然无法计算它是 10/100、20/200、70/ 700 等,不包括每个地区的用户总数。因此,无法比较区域。

Google 已在他们的文档中将其写在您引用的行下方:

“...您不应该跨区域或时间分辨率比较症状流行度的值 - 区域和时间分辨率特定的比例使这些比较毫无意义。”

【讨论】:

  • 感谢您的回复,是的,我同意无法从数学上恢复原始数据,但我想知道是否有办法对其进行近似,以便可以对数据集执行回归
  • 不,不幸的是,如果没有更多信息,甚至无法估计它。我知道这可能不是您想要的,但您最好的解决方案可能是直接访问 Google 趋势网站:trends.google.com/trends/?geo=US
猜你喜欢
  • 2020-07-31
  • 2018-12-12
  • 2020-04-07
  • 1970-01-01
  • 2017-09-26
  • 2020-08-29
  • 1970-01-01
  • 2013-06-30
  • 2020-01-04
相关资源
最近更新 更多