Что такое взвешенное среднее (Weighted Mean)?

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

Ответ

Взвешенное среднее (Weighted Mean) — это обобщение среднего арифметического, где каждому элементу выборки присваивается вес, отражающий его важность или частоту. Элементы с большим весом вносят больший вклад в итоговое значение.

Формула: weighted_mean = Σ (w_i * x_i) / Σ w_i где x_i — значения, w_i — их веса.

Зачем это нужно в ML/Data Science:

  1. Обработка несбалансированных данных: При вычислении средней ошибки или метрики по классам можно дать больше веса редкому, но важному классу.
  2. Агрегация оценок моделей: Например, ensemble-модель, где итоговый прогноз — это взвешенное среднее прогнозов базовых моделей, а веса отражают их точность.
  3. Метрики качества: F1-score с параметром average='weighted' вычисляет метрику для каждого класса, а затем усредняет их, взвешивая по поддержке класса (количеству экземпляров).

Примеры на Python:

import numpy as np

# Пример 1: Базовый расчет
values = np.array([85, 90, 78])
weights = np.array([0.3, 0.5, 0.2])  # Важность каждой оценки
weighted_mean = np.average(values, weights=weights)
print(f"Взвешенное среднее оценок: {weighted_mean}")  # 85.7

# Пример 2: Имитация вычисления взвешенного MSE для несбалансированных классов
y_true = np.array([1, 1, 0, 0, 0, 0, 0])  # 2 позитивных, 5 негативных
predicted = np.array([0.9, 0.8, 0.3, 0.2, 0.1, 0.4, 0.2])
class_weights = np.array([2.5, 0.4])  # Вес для класса 1 и класса 0
# Создаем массив весов для каждого образца
sample_weights = np.where(y_true == 1, class_weights[1], class_weights[0])

# Вычисляем взвешенную среднеквадратичную ошибку
weighted_mse = np.average((y_true - predicted) ** 2, weights=sample_weights)
print(f"Взвешенная MSE: {weighted_mse:.4f}")

# Сравним с обычным MSE
regular_mse = np.mean((y_true - predicted) ** 2)
print(f"Обычная MSE: {regular_mse:.4f}")

Ключевой вывод: Взвешенное среднее позволяет управлять вкладом отдельных наблюдений или групп в итоговую агрегированную статистику, что критически важно при работе с неоднородными данными.