🛠️
Bemind
Инструменты оценки
Инструменты оценки
  • Основные показатели стратегии
  • Инструменты оценки модели линейной регрессии
    • 1. Средняя квадратическая ошибка
    • 2. Средняя абсолютная ошибка
    • 3. Корень из средней квадратической ошибки.
    • 4. Коэффициент детерминации
    • 5. Скорректированный коэффициент детерминации:
    • 6. Коэффициенты модели
    • 7. Проверка гипотез о коэффициентах модели
    • 8. Проверка предположений о модели
  • Инструменты оценки качества обучения классифицирующей нейронной сети
    • Точность (Accuracy)
    • Матрица ошибок (Confusion Matrix)
    • Кривая ROC (Receiver Operating Characteristic)
    • Кросс-энтропийная функция потерь (Cross-Entropy Loss)
    • Precision, Recall, F1-score
    • Разделение данных на тренировочный, валидационный и тестовый наборы
    • Мониторинг метрик на валидационном наборе во время обучения для предотвращения переобучения
  • Линейная, логистическая и регрессия Пуассона.
    • Введение в простую линейную регрессию
    • Введение в регрессию Пуассона для подсчета данных
    • Введение в простую линейную регрессию
    • Полное руководство по линейной регрессии в Python
      • Как создать остаточный график в Python
      • Понимание гетероскедастичности в регрессионном анализе
      • Как выполнить тест Дарбина-Ватсона в Python
      • Четыре допущения линейной регрессии
    • Как рассчитать VIF в Python
    • Руководство по мультиколлинеарности и VIF в регрессии
  • Мультиколлинеарность и коэффициент инфляции дисперсии (VIF) в регрессионной модели (с кодом Python)
    • Фактор инфляции дисперсии в Python
  • Функции потерь в Python — простая реализация
  • CADE — интересный способ поиска аномалий в многомерных данных
  • Как использовать Python для проверки нормальности
  • Анализ карты Пуанкаре
    • Анализ Финансовых Рынков: Автокорреляция и Спектральный Анализ Криптовалют
  • Предсказания цен с использованием постоянной Фейгенбаума
  • Расчет вероятности серии убыточных сделок в серии игр.
  • Анализ данных ставок и результатов с использованием Python
Powered by GitBook
On this page
  • Реализация функций потерь в Python
  • 1. Среднеквадратическая ошибка (MSE) — Mean Squared Error
  • 2. Корень средней квадратической ошибки (RMSE) — Root Mean Squared Error
  • 3. Средняя абсолютная ошибка (MAE) — Mean Absolute Error
  • 4. Функция кросс-энтропийной потери в Python
  • Заключение

Функции потерь в Python — простая реализация

PreviousФактор инфляции дисперсии в PythonNextCADE — интересный способ поиска аномалий в многомерных данных

Last updated 1 year ago

water_loss_spin_compressed-2

Функции потерь Python являются важной частью моделей машинного обучения. Эти функции показывают, насколько сильно предсказанный моделью результат отличается от фактического.

Существует несколько способов вычислить эту разницу. В этом материале мы рассмотрим некоторые из наиболее распространенных функций потерь.

В этом уроке будут рассмотрены следующие четыре функции потерь.

Из этих четырех функций потерь первые три применяются к модели классификации.

Реализация функций потерь в Python

1. Среднеквадратическая ошибка (MSE) — Mean Squared Error

Среднеквадратичная ошибка (MSE) рассчитывается как среднее значение квадратов разностей между прогнозируемыми и фактически наблюдаемыми значениями. Математически это можно выразить следующим образом:

Реализация MSE на языке Python выглядит следующим образом:

import numpy as np

def mean_squared_error(act, pred):
   # Вычисляем разницу между предсказанными и фактическими значениями
   diff = pred - act
   
   # Возводим каждую разницу в квадрат
   differences_squared = diff ** 2
   
   # Вычисляем среднее значение квадратов разниц
   mean_diff = differences_squared.mean()
   
   # Возвращаем среднюю квадратичную ошибку
   return mean_diff

# Массив фактических значений
act = np.array([1.1,2,1.7])

# Массив предсказанных значений
pred = np.array([1,1.7,1.5])

# Выводим среднюю квадратичную ошибку между фактическими и предсказанными значениями
print(mean_squared_error(act, pred))
0.04666666666666667

Вы также можете использовать mean_squared_error из sklearn для расчета MSE. Вот как работает функция:

from sklearn.metrics import mean_squared_error
import numpy as np

# Массив фактических значений
act = np.array([1.1, 2, 1.7])

# Массив предсказанных значений
pred = np.array([1, 1.7, 1.5])

# Вычисляем среднюю квадратичную ошибку между фактическими и предсказанными значениями
mse = mean_squared_error(act, pred)

# Выводим среднюю квадратичную ошибку
print(mse)
0.04666666666666667

2. Корень средней квадратической ошибки (RMSE) — Root Mean Squared Error

Стандартное отклонение (RMSD) или среднеквадратичная ошибка (RMSE) - это часто используемая мера разницы между значением (выборочным или общим), предсказанным моделью или оценщиком, и наблюдаемым значением. и наблюдаемыми значениями, или квадратный корень из разницы между ними по второму моменту выборки, или среднеквадратичное значение этих разниц. Эти отклонения называются остатками при расчете по выборке данных, используемых для оценки, и ошибками (или ошибками предсказания) при расчете вне выборки. RMSD используется как единая мера предсказательной силы, включающая величину ошибки предсказания в разных точках данных. RMSD зависит от масштаба и поэтому сравнивает точность ошибок предсказания различных моделей для данного набора данных, а не между наборами данных.

RMSD всегда неотрицателен, при этом значение нуля (что редко достигается на практике) указывает на идеальное согласие с данными. В целом, низкий RMSD лучше, чем высокий RMSD. Однако эта мера зависит от используемой числовой шкалы, что делает невозможным сравнение между различными типами данных.

RMSD - это квадратный корень из среднего квадрата ошибок. Влияние каждой ошибки на RMSD пропорционально размеру квадрата ошибки, поэтому большие ошибки оказывают непропорционально большое влияние на RMSD. Поэтому RMSD чувствителен к выбросам.

Среднеквадратическая ошибка (RMSE) рассчитывается как квадратный корень из среднеквадратичной ошибки. Математически мы можем представить это следующим образом:

Реализация Python для RMSE выглядит следующим образом:

import numpy as np

def root_mean_squared_error(act, pred):
   # Вычисляем разницу между предсказанными и фактическими значениями
   diff = pred - act
   
   # Возводим каждую разницу в квадрат
   differences_squared = diff ** 2
   
   # Вычисляем среднее значение квадратов разниц
   mean_diff = differences_squared.mean()
   
   # Вычисляем квадратный корень из среднего значения квадратов разниц
   rmse_val = np.sqrt(mean_diff)
   
   # Возвращаем корень средней квадратичной ошибки
   return rmse_val

# Массив фактических значений
act = np.array([1.1, 2, 1.7])

# Массив предсказанных значений
pred = np.array([1, 1.7, 1.5])

# Выводим корень средней квадратичной ошибки между фактическими и предсказанными значениями
print(root_mean_squared_error(act, pred))
0.21602468994692867

Вы также можете использовать mean_squared_error из sklearn для расчета RMSE. Давайте посмотрим, как реализовать RMSE, используя ту же функцию:

from sklearn.metrics import mean_squared_error
import numpy as np

# Массив фактических значений
act = np.array([1.1, 2, 1.7])

# Массив предсказанных значений
pred = np.array([1, 1.7, 1.5])

# Вычисляем корень средней квадратичной ошибки (RMSE) между фактическими и предсказанными значениями
# Если параметр squared установлен в False, функция возвращает значение RMSE
rmse = mean_squared_error(act, pred, squared=False)

# Выводим корень средней квадратичной ошибки
print(rmse)
0.21602468994692867

Если для параметра squared установлено значение True, функция возвращает значение MSE. Если установлено значение False, функция возвращает значение RMSE.

3. Средняя абсолютная ошибка (MAE) — Mean Absolute Error

Средняя абсолютная ошибка (MAE) рассчитывается как среднее значение абсолютной разницы между прогнозами и фактическими наблюдениями. Математически мы можем представить это следующим образом:

Реализация Python для MAE выглядит следующим образом:

import numpy as np

def mean_absolute_error(act, pred):
    # Вычисляем разницу между предсказанными и фактическими значениями
    diff = pred - act
    
    # Вычисляем абсолютные значения разниц
    abs_diff = np.absolute(diff)
    
    # Вычисляем среднее значение абсолютных разниц
    mean_diff = abs_diff.mean()
    
    # Возвращаем среднюю абсолютную ошибку
    return mean_diff

# Массив фактических значений
act = np.array([1.1, 2, 1.7])

# Массив предсказанных значений
pred = np.array([1, 1.7, 1.5])

# Вычисляем и выводим среднюю абсолютную ошибку между фактическими и предсказанными значениями
print(mean_absolute_error(act, pred))
0.20000000000000004

Вы также можете использовать mean_absolute_error из sklearn для расчета MAE.

from sklearn.metrics import mean_absolute_error
import numpy as np

# Массив фактических значений
act = np.array([1.1, 2, 1.7])

# Массив предсказанных значений
pred = np.array([1, 1.7, 1.5])

# Вычисляем среднюю абсолютную ошибку между фактическими и предсказанными значениями
mae = mean_absolute_error(act, pred)

# Выводим среднюю абсолютную ошибку
print(mae)
0.20000000000000004

4. Функция кросс-энтропийной потери в Python

Перекрестная энтропийная потеря также известна как отрицательная логарифмическая вероятность. Это чаще всего используется для задач классификации. Проблема классификации — это проблема, в которой вы классифицируете пример как принадлежащий к одному из более чем двух классов.

Давайте посмотрим, как вычислить ошибку в случае проблемы бинарной классификации.

Давайте рассмотрим проблему классификации, когда модель пытается провести классификацию между собакой и кошкой.

Код Python для поиска ошибки приведен ниже.

from sklearn.metrics import log_loss

# Массив фактических классов
true_classes = ["Dog", "Cat", "Cat", "Dog"]

# Массив предсказанных вероятностей для каждого класса
predicted_probabilities = [[.1, .9], [.9, .1], [.8, .2], [.35, .65]]

# Вычисляем логарифмическую потерю (log loss) между фактическими классами и предсказанными вероятностями
log_loss_value = log_loss(true_classes, predicted_probabilities)

# Выводим значение логарифмической потери
print(log_loss_value)
0.21616187468057912

Мы используем метод log_loss из sklearn.

Первый аргумент в вызове функции — это список правильных меток классов для каждого входа. Второй аргумент — это список вероятностей, предсказанных моделью.

Вероятности представлены в следующем формате:

[P(dog), P(cat)]

Заключение

Это руководство было посвящено функциям потерь в Python. Мы рассмотрели различные функции потерь как для задач регрессии, так и для задач классификации.

Среднеквадратическая ошибка
Корень средней квадратической ошибки
Средняя абсолютная ошибка
Кросс-энтропийные потери