给定标题和正文,我Scikit Learn用来猜测 Stack Overflow 帖子的标签。我将标题和正文表示为两个 300 维的浮点向量。Scikit learn 的文档SGDClassifier说明:
为了使用默认学习率计划获得最佳结果,数据应具有零均值和单位方差。
使用一维数据,我了解均值和方差是什么,但是当我们进入更高维度时,如何计算数据集的均值和方差?
给定标题和正文,我Scikit Learn用来猜测 Stack Overflow 帖子的标签。我将标题和正文表示为两个 300 维的浮点向量。Scikit learn 的文档SGDClassifier说明:
为了使用默认学习率计划获得最佳结果,数据应具有零均值和单位方差。
使用一维数据,我了解均值和方差是什么,但是当我们进入更高维度时,如何计算数据集的均值和方差?
它只是一维均值和标准差的扩展。假设您正在尝试估计一个人的体重,并且您有两个输入,即薪水和身高。为了找到权重,您有两个不同尺度的输入,因此您尝试分别使用数据样本找到每个特征、薪水和身高的均值和方差。假设您在一个元组中有两个数据样本,例如 (salary, height)。它们如下:
(10000, 180)
(5000, 175)
虽然第一个家伙看起来很丰富,但关于第一个和第二个数据样本的真正意义在于它们的规模不一样。方法是这样的:
(10000 + 5000) / 2 = 7500(180 + 175) / 2 = 177.52500薪水。2.5高度。减少每个数据样本对应特征的均值量,然后除以对应特征的标准差。
(10000 - 7500) / 2500 = 1
(5000 - 7500) / 2500 = -1
(180 - 177.5) / 2.5 = 1
(175 - 177.5) / 2.5 = -1
现在已经归一化的数据样本如下:
(1, 1)
(-1, -1)
每当您对数据进行规范化时,您的成本函数就会更容易学习。在您的特征不在同一范围内的情况下,权重不必努力达到较高的值。