Почему SciPy минимизирует возврат различных решений при минимизации суммы квадратичной ошибки по сравнению со среднеквадPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему SciPy минимизирует возврат различных решений при минимизации суммы квадратичной ошибки по сравнению со среднеквад

Сообщение Anonymous »

Я сейчас подгоняю кривую к данным с помощью scipy.optimize.minimize. Для этого я определил целевую функцию, которая возвращает либо сумму квадратов ошибок, либо среднеквадратическую ошибку, в зависимости от того, что я указываю в качестве выходных данных. Я считаю, что эта метрика не должна оказывать существенного влияния на находящиеся минимумы, поскольку RMSE должно приводить к масштабированной версии тех же минимумов, что и при SSE, однако это не так (см. прикрепленное изображение). Чтобы гарантировать, что разница в минимумах не является результатом метода минимизации, я вручную определил свой метод минимизации как BFGS (один из трех значений по умолчанию функции минимизации). Следует отметить, что когда я использую SSE в качестве показателя целевой функции, я получаю три предупреждения во время выполнения, вставленные сюда:
C:\Users\Admin\AppData\Local\Temp\ipykernel_33104 \472201149.py:23: RuntimeWarning: в квадрате обнаружено переполнение
SSE = np.sum(np.abs(y - y_pred)**2)
C:\Users \Admin\AppData\Roaming\Python\Python39\site-packages\scipy\optimize_numdiff.py:576: RuntimeWarning: при вычитании обнаружено недопустимое значение
df = fun(x) - f0
C:\Users\Admin\AppData\Local\Temp\ipykernel_33104\472201149.py:23: RuntimeWarning: переполнение обнаружено в квадрате
SSE = np.sum(np.abs(y - y_pred)** 2)
Ниже приведен пример моего кода.
import numpy as np
from scipy.optimize import minimize

# Generate data
A = -6.899 # Parameter 1 (scale)
B = 0.0221 # Parameter 2 (concavity)
C = 9.909 # Parameter 3 (intercept)

x = np.linspace(0, 100, 101) # A bunch of evenly spaced points

y = A*np.exp(B*x) + C

# Function to calculate SSE or RMSE between function and data
def loss_func(parameters, x, y):
A, B, C = parameters

y_pred = A*np.exp(B*x) + C
SSE = np.sum(np.abs(y - y_pred)**2)
RMSE = np.sqrt(SSE / len(y))
return RMSE # Change this to SSE or RMSE as desired

guess = [1, 1, 1]

# Optimize the function
sol = minimize(loss_func, guess, args=(x, y), method = 'BFGS', bounds=None, constraints=None)
print("Optimized parameters:", sol.x)

Кто-нибудь знает, почему я наблюдаю разницу в настроенных параметрах, приводящую к минимуму моей целевой функции в зависимости от применяемой метрики? Ищу ответы, которые могут объяснить любые ошибки, которые я могу сделать, нюансы в scipy.optimize.minimize или различия между SSE и RMSE, которые могут вызвать различия в обнаруженных минимумах.
Изображение

Изменить:
После дальнейшего исследования решения После моей минимизации я заметил следующее при использовании SSE в качестве метрики целевой функции, что указывает на то, что в этом случае сходимость вообще не достигается. Однако использование RMSE в качестве показателя целевой функции также приводит к сообщению «успех: ложь». Теперь у меня возникает вопрос: почему я не нахожу успешного решения и почему использование RMSE по-прежнему дает результаты, более близкие к целевым, чем использование SSE?
fun: 54279.23221060659
hess_inv: array([[ 9.99899697e-01, -1.00146569e-02, 2.07889631e-88],
[-1.00146569e-02, 1.00303413e-04, 2.07564554e-86],
[ 2.07889631e-88, 2.07564554e-86, 1.00000000e+00]])
jac: array([ 1668.19189453, 117747.58496094, 3464.14257812])
message: 'Desired error not necessarily achieved due to precision loss.'
nfev: 34
nit: 1
njev: 6
status: 2
success: False
x: array([ 0.98988469, -0.00994935, 1. ])


Подробнее здесь: https://stackoverflow.com/questions/782 ... -of-square
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • SciPy минимизирует, чтобы найти обратную функцию?
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • SciPy минимизирует, чтобы найти обратную функцию?
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • SciPy минимизирует, чтобы найти обратную функцию?
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • SciPy минимизирует, чтобы найти обратную функцию?
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • SciPy минимизирует, чтобы найти обратную функцию?
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»