Верно ли что среднее гармоническое всегда меньше среднего арифметического
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Сравнение среднего гармонического и арифметического
Краткий ответ
ДА, это верно: среднее гармоническое (HM) ВСЕГДА меньше или равно среднему арифметическому (AM).
Математически:
HM ≤ AM
Равенство выполняется только когда все числа одинаковые.
Математическое доказательство
Определения:
- Арифметическое среднее: AM = (a + b) / 2
- Гармоническое среднее: HM = 2 / (1/a + 1/b)
Расширим HM:
HM = 2 / (1/a + 1/b)
= 2 / ((a+b) / (ab))
= 2ab / (a+b)
Доказательство неравенства:
Нужно показать: HM ≤ AM
2ab / (a+b) ≤ (a+b) / 2
Умножаем обе части на 2(a+b) (положительное число):
4ab ≤ (a+b)²
4ab ≤ a² + 2ab + b²
0 ≤ a² - 2ab + b²
0 ≤ (a-b)² ✓
Это неравенство всегда верно, и равно нулю только когда a = b.
Пример на Python
import numpy as np
def harmonic_mean(a, b):
return 2 * a * b / (a + b)
def arithmetic_mean(a, b):
return (a + b) / 2
# Примеры
print("Пример 1: a=1, b=9")
a, b = 1, 9
hm = harmonic_mean(a, b)
am = arithmetic_mean(a, b)
print(f"HM = {hm:.2f}")
print(f"AM = {am:.2f}")
print(f"HM < AM? {hm < am}")
print()
print("Пример 2: a=10, b=20")
a, b = 10, 20
hm = harmonic_mean(a, b)
am = arithmetic_mean(a, b)
print(f"HM = {hm:.2f}")
print(f"AM = {am:.2f}")
print(f"HM < AM? {hm < am}")
print()
print("Пример 3: a=5, b=5 (одинаковые)")
a, b = 5, 5
hm = harmonic_mean(a, b)
am = arithmetic_mean(a, b)
print(f"HM = {hm:.2f}")
print(f"AM = {am:.2f}")
print(f"HM = AM? {hm == am}")
Результат:
Пример 1: a=1, b=9
HM = 1.80
AM = 5.00
HM < AM? True
Пример 2: a=10, b=20
HM = 13.33
AM = 15.00
HM < AM? True
Пример 3: a=5, b=5
HM = 5.00
AM = 5.00
HM = AM? True
Общая иерархия средних
Для положительных чисел существует устойчивое неравенство:
MIN ≤ HM ≤ GM ≤ AM ≤ MAX
где:
- MIN — минимальное значение
- HM — гармоническое среднее
- GM — геометрическое среднее
- AM — арифметическое среднее
- MAX — максимальное значение
import numpy as np
def visualize_means(values):
n = len(values)
# Минимум и максимум
min_val = np.min(values)
max_val = np.max(values)
# Арифметическое среднее
am = np.mean(values)
# Геометрическое среднее
gm = np.exp(np.mean(np.log(values)))
# Гармоническое среднее
hm = n / np.sum(1 / values)
print(f"MIN: {min_val:.2f}")
print(f"HM: {hm:.2f}")
print(f"GM: {gm:.2f}")
print(f"AM: {am:.2f}")
print(f"MAX: {max_val:.2f}")
print()
print(f"HM ≤ GM ≤ AM? {hm <= gm <= am}")
values = np.array([1, 10])
print("Значения: [1, 10]")
visualize_means(values)
values = np.array([2, 4, 8, 16])
print("\nЗначения: [2, 4, 8, 16]")
visualize_means(values)
Почему это важно
1. F1-score использует гармоническое среднее
Вспомним: F1 = 2 * (Precision * Recall) / (Precision + Recall)
Это гармоническое среднее Precision и Recall. Оно сильнее штрафует дисбаланс, чем арифметическое:
precision, recall = 0.9, 0.1
am = (precision + recall) / 2 # 0.5
hm = 2 * precision * recall / (precision + recall) # 0.1818
print(f"Арифметическое: {am:.2f}")
print(f"Гармоническое: {hm:.2f}")
print(f"Гармоническое штрафует дисбаланс!")
2. Скорость и время
Гармоническое среднее используется для расчёта средней скорости:
# Едем 100 км со скоростью 50 км/ч
time1 = 100 / 50 # 2 часа
# Едем обратно 100 км со скоростью 100 км/ч
time2 = 100 / 100 # 1 час
# НЕПРАВИЛЬНО: средняя скорость = (50 + 100) / 2 = 75 км/ч
# На самом деле: 200 км за 3 часа = 66.67 км/ч
average_speed = 200 / (time1 + time2)
print(f"Истинная средняя скорость: {average_speed:.2f} км/ч")
# ПРАВИЛЬНО: гармоническое среднее
hm_speed = 2 * 50 * 100 / (50 + 100)
print(f"Гармоническое среднее: {hm_speed:.2f} км/ч")
3. Проверка равенства
def means_equal(values):
n = len(values)
am = sum(values) / n
hm = n / sum(1/v for v in values)
# Они равны только если все элементы одинаковые
return abs(am - hm) < 1e-9
print(means_equal([5, 5, 5])) # True
print(means_equal([1, 2, 3])) # False
Ответ на вопрос
ДА, верно. Среднее гармоническое ВСЕГДА меньше или равно среднему арифметическому. Равенство наступает только когда все числа одинаковые. Это фундаментальное неравенство в математике, и оно важно для понимания различных метрик в machine learning.