Как обеспечить пользовательскую функцию стоимости для robustfit или fitlm в MATLAB - PullRequest
0 голосов
/ 14 мая 2018

Если я правильно знаю - за попытку подгонять модель;некоторый итерационный алгоритм используется там, где целью является минимизация функции стоимости (например, OLS, MSE, RMSE, MMSE).

Я знаю, что метод robustfit() выполняет подгонку для регрессионной модели с использованием OLS (Обычная функция наименьших квадратов), а затем выполняет дополнительную взвешенную регрессию для получения окончательной модели.Кроме того, я думаю, fitlm() использует RMSE в качестве функции стоимости.

Мой первый запрос: в Matlab, являются ли функция стоимости и функция веса одинаковыми или нет.Кроме того, как обеспечить мою пользовательскую функцию стоимости (например, MSE), позволяя MATLAB делать примерку?

Я узнал, что robustfit() может принимать дополнительную / функцию пользовательского веса .Но опять же я запутался, будет ли это рассматриваться как функция стоимости?Или мне нужно использовать какой-то другой тип аргумента для предоставления моей пользовательской функции стоимости?

1 Ответ

0 голосов
/ 26 февраля 2019

Как вы и сказали, функция стоимости - это функция, которую вы хотите минимизировать, чтобы найти правильные коэффициенты вашего предиктора.Например, функция стоимости может быть cost(a) = sqrt(mean((a).^2));, a, обычно равной y - y_est.

С другой стороны, функция веса, относящаяся к робастной регрессии, - это способ оказать меньшее влияние или устранитьслучайные измерения по алгоритму.Если вы посмотрите на форму весовой функции:

weight

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

Способ, которым функция оценивает ошибку, не открыт для пользовательской настройки, есть только весовая функция.

...