【问题标题】:How to normalize extremely large number for logistic regression?如何对逻辑回归的极大数进行归一化?
【发布时间】:2012-11-27 13:48:35
【问题描述】:

我正在尝试在Python 中实现逻辑回归学习算法。 我实现的假设函数是:

   def hypothesis(params, features):
       z = sum(p * f for p, f in zip(params, features))
       return 1 / (1 + math.e ** -z)

我用于测试的数据集来自UCI Machine Learning Repository,它包含这样的数据(第一列是目标,其他列是选定的特征):

1,14.23,1.71,2.43,15.6,127,2.8,3.06,.28,2.29,5.64,1.04,3.92,1065
3,13.2,1.78,2.14,11.2,100,2.65,2.76,.26,1.28,4.38,1.05,3.4,1050
2,13.16,2.36,2.67,18.6,101,2.8,3.24,.3,2.81,5.68,1.03,3.17,1185
1,14.37,1.95,2.5,16.8,113,3.85,3.49,.24,2.18,7.8,.86,3.45,1480

如您所见,与其他功能相比,某些功能非常庞大。 所以我的hypothesis 函数中的ze 的幂相比太大了。 事实上,对于更大的值,zs 都是0.0。 如果我将分子更改为 3,则会引发 OverflowError

也许我应该在将数据提供给我的程序之前对其进行标准化,知道我该怎么做吗?

【问题讨论】:

  • @Blender 我已经编辑了问题并对此进行了解释。第一列是目标,其他列是选定的特征。
  • params 是否应该看起来像 [n, n, n, ...],而 n 总是相同的数字?
  • @Blender params 是向量 [θ1, θ2, θ3 ...]z 是该向量与所选特征实例的点积。
  • @satoru,以下链接可能对您帖子的未来读者有用;-) en.wikipedia.org/wiki/Feature_scaling

标签: python machine-learning normalization


【解决方案1】:

其实不是 StackOverflow 问题 =/

在我看来,这个问题应该在其他地方问 - 看起来您正在寻找一种算法,而不是一种算法的实现。

除此之外 - 您将按列规范化此数据集。计算每列的 SD 和平均值,并将其标准化为 2 的 SD 和 10 的平均值。这只是意味着一旦你计算了列的 SD 和它的平均值,你就可以计算每个条目的新值该列首先计算出与该列的平均值相差多少 SD,然后得到数字 10 并从 10 中添加或减去那么多 2(取决于数据是高于该列的平均值还是低于该列的平均值)。

例如,假设我们有一列包含一些数字,我们计算出 SD 为 3,平均值为 50。我们现在遇到了该列的一个成员 - 数字 56。56 是两个 SD 高于 50(均值),因此将其归一化为 14(10(新均值)+2(新 SD)*2(列均值上方 SD 的列数))。

数字 10 和 2 可以替换为其他数字,但我认为 10 和 2 似乎是正确的。

有关计算运行 SD(标准差)和均值的帮助,请参阅另一个 StackOverflow 问题 - How to efficiently calculate a running standard deviation?

【讨论】:

  • 但它确实引发了溢出错误;p
  • 算法问题是否离题?您能否链接到常见问题解答中的位置,因为我找不到它?
  • 请注意,Z 归一化在特征分布非常偏斜的情况下可能不起作用。例如,z 对具有对数正态分布的事物进行归一化仍然可以产生非常大的值。有各种可行的归一化方式(z 分数、对数变换、概率、logit 等),理想情况下,您希望所有特征的尺度大致相同,这可能意味着对不同的特征使用不同的归一化方案。
  • (at)BenAllison - 正在使用的数据集似乎没有非常倾斜的分布。 (at)nikie - 授予;可以询问针对某个问题使用什么算法;但那是我很好 - 问题是要求一种标准化数据的方法。据我所知,数据的规范化是一个统计问题,而不是一个计算机科学问题。 @Satoru.Logic - :PP 我希望我的回答有帮助:)
猜你喜欢
  • 1970-01-01
  • 2019-08-17
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-19
  • 2015-02-21
  • 2018-08-11
  • 2017-08-13
相关资源
最近更新 更多