【问题标题】:The use of feature scaling in scikit learnscikit learn中特征缩放的使用
【发布时间】:2019-01-10 14:26:53
【问题描述】:

我正在从这里学习机器学习,课程使用回归中的“scikit learn” - https://www.udemy.com/machinelearning/

我可以看到,对于一些训练回归算法,作者使用特征缩放,而对于一些他没有,因为一些“scikit learn”回归算法自己处理特征缩放。

如何知道我们需要在哪种训练算法中进行特征缩放以及在哪些地方不需要?

【问题讨论】:

  • 为什么要投反对票?这是一个合乎逻辑的问题?
  • 这是我写的关于一般缩放问题的完整答案,您可能会发现它很有用:stats.stackexchange.com/questions/189652/…
  • 它可能被否决了,因为如果您的问题确实特定于 scikit learn 实现,听起来正确的答案是“阅读 scikit learn 文档”。所以可能有点残酷,是的,但我认为这将是我自己的正确答案。另外,如果你在做 ML,它真的应该放在网站的 stats/datascience 分支上,而不是在这里

标签: python machine-learning scikit-learn regression


【解决方案1】:

一个非常简单的答案。即使您不这样做,有些算法也会进行特征缩放,有些则不会。因此,如果算法没有,则需要手动缩放特征。

您可以通过谷歌搜索哪种算法进行特征缩放,但通过手动缩放特征可以确保安全。始终确保对特征进行缩放,否则算法会将输出偏移量设置为理想值。

【讨论】:

  • 因此,为了我在 Scikit Learn 中的安全性和稳定性,我应该始终应用特征缩放,无论我使用的算法是否具有内部特征缩放系统。对吧?
  • @Gissipi_453:这实际上取决于您的应用程序。当您的数据依赖于单位或比例时,即使您的算法可以缩放数据,也是一种很好的做法。缩放也有计算时间的好处。对于 SVM 等较慢的算法,最好对数据进行缩放,使其收敛更快。
  • @Gissipi_453:但是当单位对你很重要时,你不应该缩放数据。当您缩放数据时,系数会发生变化,因为您的数据已被缩放。因此,如果系数对您很重要,请避免缩放数据。
【解决方案2】:

这取决于您使用的算法和您的数据集。

  • 支持向量机 (SVM),如果您扩展特征,这些模型会更快收敛。缩放的主要优点是避免较大数值范围内的属性支配较小数值范围内的属性

  • 在 K 均值聚类中,您可以找出将不同数据点聚类在一起的欧几里得距离。因此,扩展特征似乎是一个很好的理由,这样质心就不会受到大值或异常值的太大影响。

  • 在回归的情况下,缩放特征不会有太大帮助,因为原始数据集之间的系数关系和缩放数据集之间的系数关系将是相同的。

  • 对于决策树,它们通常不需要特征缩放。

  • 对于涉及学习率并使用梯度下降的模型,输入比例确实会影响梯度。所以在这种情况下会考虑特征缩放。

【讨论】:

  • 因此,为了我在 Scikit Learn 中的安全性和稳定性,我应该始终应用特征缩放,无论我使用的算法是否具有内部特征缩放系统。对吧?
  • 这是我找到的对这个话题最简洁、最有帮助的解释!
【解决方案3】:

没有机器学习技术需要特征缩放,对于某些算法,缩放输入使计算机上的优化更容易,从而缩短训练时间。

通常,利用距离或假设正态性的算法会从特征缩放中受益。 https://medium.com/greyatom/why-how-and-when-to-scale-your-features-4b30ab09db5e

【讨论】:

  • 因此,为了我在 Scikit Learn 中的安全性和稳定性,我应该始终应用特征缩放,无论我使用的算法是否具有内部特征缩放系统。对吧?
猜你喜欢
  • 2018-09-07
  • 2016-02-25
  • 2018-02-24
  • 2018-06-01
  • 2014-02-17
  • 2014-11-05
  • 2021-03-26
  • 2015-09-08
相关资源
最近更新 更多