Верно ли, что среднее гармоническое всегда меньше среднего арифметического?

«Верно ли, что среднее гармоническое всегда меньше среднего арифметического?» — вопрос из категории Статистика и теория вероятностей, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, это верно для любого набора положительных чисел, которые не все равны между собой. Для набора положительных чисел выполняется строгое неравенство: среднее гармоническое ≤ среднее геометрическое ≤ среднее арифметическое. Равенство достигается только в случае, когда все числа в наборе одинаковы.

Формальное определение:

  • Среднее арифметическое (AM): ( AM = frac{x_1 + x_2 + ... + x_n}{n} )
  • Среднее гармоническое (HM): ( HM = frac{n}{frac{1}{x_1} + frac{1}{x_2} + ... + frac{1}{x_n}} )

Интуитивное объяснение: Среднее гармоническое по своей сути «наказывает» за наличие очень малых значений в наборе, поскольку они вносят большой вклад в знаменатель (сумму обратных величин). Это делает гармоническое среднее более чувствительным к выбросам в сторону нуля.

Пример: Рассмотрим числа 1 и 4.

  • Среднее арифметическое: ( (1 + 4) / 2 = 2.5 )
  • Среднее гармоническое: ( 2 / (1/1 + 1/4) = 2 / (1 + 0.25) = 2 / 1.25 = 1.6 )

Практическая проверка на Python:

import numpy as np
from scipy.stats import hmean  # Функция для гармонического среднего

# Пример с разными числами
numbers = np.array([2, 5, 10])
arithmetic_mean = np.mean(numbers)
harmonic_mean = hmean(numbers)  # или len(numbers) / np.sum(1.0/numbers)

print(f"Числа: {numbers}")
print(f"Среднее арифметическое: {arithmetic_mean:.4f}")
print(f"Среднее гармоническое: {harmonic_mean:.4f}")
print(f"Гармоническое < Арифметического? {harmonic_mean < arithmetic_mean}")
# Вывод:
# Числа: [ 2  5 10]
# Среднее арифметическое: 5.6667
# Среднее гармоническое: 3.4483
# Гармоническое < Арифметического? True

# Пример с одинаковыми числами (равенство)
equal_numbers = np.array([7, 7, 7, 7])
am_eq = np.mean(equal_numbers)
hm_eq = hmean(equal_numbers)
print(f"nВсе числа равны {equal_numbers[0]}")
print(f"AM: {am_eq}, HM: {hm_eq}, Равны? {np.isclose(am_eq, hm_eq)}")

Практическое применение среднего гармонического: Оно часто используется для усреднения отношений или скоростей, где важны обратные величины. Классический пример — расчёт средней скорости на протяжении пути. Если вы проехали половину пути со скоростью 60 км/ч, а вторую половину — со скоростью 40 км/ч, то средняя скорость будет именно гармоническим средним, а не арифметическим: ( v_{avg} = frac{2}{frac{1}{60} + frac{1}{40}} = 48 ) км/ч (арифметическое среднее дало бы неверные 50 км/ч).

В машинном обучении F1-score — это гармоническое среднее между точностью (precision) и полнотой (recall), что обеспечивает баланс между этими двумя метриками.