文章目录
有没有听过均值分为 算术、几何和谐波均值 三种?是否知道这三者的联系和区别?
计算变量或数字列表的平均值是机器学习中的常见操作。
这是每天都可以直接使用的操作,例如汇总数据时,或间接使用的操作,例如拟合模型时较大过程中的较小步骤。
平均值是平均值的同义词,平均值是代表概率分布中最可能值的数字。因此,有多种不同的方法可以根据使用的数据类型来计算平均值。
如果对数据使用错误的均值,这可能会让失望。在使用性能指标评估模型时,还可以输入其中一些更奇特的平均值计算,例如 G-mean 或 F-Measure。
什么是平均值?
该集中趋势是表示用于符号列表中最常见的值的单个符号。
从技术上讲,它是描述变量可能具有的所有可能值的概率分布中具有最高概率的值。
有许多方法来计算数据样本集中趋势,如平均其总值来计算,该模式,这是在数据分布中的最常见的值或中值,这是如果所有的中间值数据样本中的值是有序的。
该平均是均值的常用词。它们可以互换使用。
均值与中位数和众数的不同之处在于它是根据数据计算的集中趋势的度量。因此,根据数据类型有不同的方法来计算平均值。
可能会遇到的三种常见的平均计算类型是算术平均、几何平均和调和平均。还有其他均值和更多的集中趋势测度,但这三种均值可能是最常见的(例如 Pythagorean means)。
让我们依次仔细看看每个平均值的计算。
算术平均值
算术平均值被计算为通过值的总数目除以值的总和,被称为N.
- 算术平均值 = (x1 + x2 + … + xN) / N
计算算术平均值的一种更方便的方法是计算值的总和并将其乘以值数量的倒数(1 对 N);例如:
- 算术平均值 = (1/N) * (x1 + x2 + … + xN)
当数据样本中的所有值都具有相同的度量单位时,算术平均值是合适的,例如所有数字都是高度、美元或英里等。
计算算术平均值时,这些值可以是正数、负数或零。
如果观测样本包含异常值(在特征空间中与所有其他值相距很远的几个值),或者对于具有非高斯分布的数据(例如多个峰值,所谓的多模态概率分布)。
在总结变量时,算术平均值在机器学习中很有用,例如报告最可能的值。当变量具有高斯或类高斯数据分布时,这更有意义。
可以使用mean() NumPy 函数计算算术平均值。
下面的示例演示了如何计算包含 10 个数字的列表的算术平均值。
from numpy import mean
data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
result = mean(data)
print('Arithmetic Mean: %.3f' % result)
运行该示例计算算术平均值并报告结果。
Arithmetic Mean: 4.500
几何平均数
几何平均值被计算为所有值之积,其中N是值的数量的N次方根。
例如,如果数据仅包含两个值,则这两个值的乘积的平方根就是几何平均值。对于三个值,使用立方根,依此类推。
当数据包含具有不同度量单位的值时,几何平均值是合适的,例如一些度量是高度,一些是美元,一些是英里等。
几何平均值不接受负值或零值,例如所有值都必须为正值。
机器学习中几何均值的一个常见示例是计算所谓的G-Mean(几何均值)度量,它是一种模型评估度量,计算为灵敏度和特异性度量的几何平均值。
可以使用gmean() SciPy 函数计算几何平均值。
下面的示例演示了如何计算包含 10 个数字的列表的几何平均值。
from scipy.stats import gmean
data = [1, 2, 3, 40, 50, 60, 0.7, 0.88, 0.9, 1000]
result = gmean(data)
print('Geometric Mean: %.3f' % result)
运行示例计算几何平均值并报告结果。
Geometric Mean: 7.246
谐波平均值
调和平均值计算为值的数量N除以这些值的倒数之和(每个值 1)。
- 谐波平均值 = N / (1/x1 + 1/x2 + … + 1/xN)
如果只有两个值(x1 和 x2),调和平均值的简化计算可以计算为:
- 谐波平均值 = (2 * x1 * x2) / (x1 + x2)
如果数据由速率组成,调和平均值是合适的平均值。
回想一下,比率是具有不同度量(例如速度、加速度、频率等)的两个量之间的比率。
在机器学习中,我们在评估模型时有比率,例如预测中的真阳性率或假阳性率。
调和平均值不采用负值或零值的费率,例如所有费率必须为正值。
在机器学习中使用调和平均值的一个常见示例是F-Measure(也称为 F1-Measure 或 Fbeta-Measure)的计算;这是一个模型评估指标,计算为精度和召回指标的调和平均值。
可以使用hmean() SciPy 函数计算调和平均值。
下面的示例演示了如何计算九个数字列表的调和平均值。
# example of calculating the harmonic mean
from scipy.stats import hmean
# define the dataset
data = [0.11, 0.22, 0.33, 0.44, 0.55, 0.66, 0.77, 0.88, 0.99]
# calculate the mean
result = hmean(data)
print('Harmonic Mean: %.3f' % result)
运行示例计算调和平均值并报告结果。
Harmonic Mean: 0.350
如何选择正确的均值?
我们已经回顾了计算变量或数据集的平均值或均值的三种不同方法。
算术平均值是最常用的平均值,尽管在某些情况下可能不合适。
每个均值适用于不同类型的数据;例如:
- 如果值具有相同的单位:使用算术平均值。
- 如果值具有不同的单位:使用几何平均值。
- 如果值为 rate:使用调和平均值。
例外情况是,如果数据包含负值或零值,则不能直接使用几何平均值和调和平均值。