Оптимизация. Линейная регрессия (метод наименьших квадратов)

Содержание

Слайд 2

Часть 1. Линейная регрессия (метод наименьших квадратов)

Часть 1. Линейная регрессия (метод наименьших квадратов)

Слайд 3

Линейная регрессия +

Линейная регрессия

 

 

 

 

+

Слайд 4

Линейная регрессия: метод наименьших квадратов

Линейная регрессия: метод наименьших квадратов

 

 

 

 

Слайд 5

Ковариационная матрица

Ковариационная матрица

 

 

 

 

Слайд 6

Доверительный интервал и интервал предсказания n=20 n=200

Доверительный интервал и интервал предсказания

 

 

n=20

n=200

Слайд 7

Задача: нахождение коэффициентов регрессии Решение % Создание выборки точек x =

Задача: нахождение коэффициентов регрессии

Решение
% Создание выборки точек
x = rand(500, 1);
y =

rand(500, 1);
z = 3*x+4*y+5+randn(size(x));
plot3(x,y,z,’bo’);
% Решение системы уравнений
X = [x y ones(size(x))];
b = X \ z [Xm,Ym]=meshgrid(0:0.1:1);
Zm = b(1)*Xm + b(2)*Ym + b(3);
hold on;
mesh(Xm,Ym,Zm);
hold off;

 

Слайд 8

Параметры коррелированы! bm = nan(3,2000); for i = 1:2000 x =

Параметры коррелированы!
bm = nan(3,2000);
for i = 1:2000
x = rand(500, 1);

y = rand(500, 1);
z = 3*x+4*y+5+randn(size(x));
bm(:,i)=[x y ones(size(x))]\z;
end
plot3(bm(1,:),bm(2,:),bm(3,:),'b.')
xlabel('a'); ylabel('b'); zlabel('c');
grid on;

 

Шаг 1. Ошибка регрессии
>> res = z–(b(1)*x+b(2)*y+b(3));
>> f = numel(res) - numel(b);
>> sigma2 = res'*res/f
sigma2 = 0.808416630656864

 

Шаг 3. Ошибки коэффициентов
>> sb = sqrt(diag(C))
0.14314 0.13741 0.10318
>> db = sb * tinv(1-0.05/2,f)
0.28124 0.26997 0.20272

Слайд 9

Часть 2. Нелинейная регрессия (метод наименьших квадратов)

Часть 2. Нелинейная регрессия (метод наименьших квадратов)

Слайд 10

Нелинейный метод наименьших квадратов Как правило, полученную систему решается только численными

Нелинейный метод наименьших квадратов

Как правило, полученную систему решается только численными методами

(не аналитическими)
Методы Ньютона и Гаусса-Ньютона
Метод Левенберга-Марквардта
Методы доверительных областей (trust region)

 

 

 

Слайд 11

Матричная запись и метод Гаусса-Ньютона Система уравнений и метод Ньютона Градиент,

Матричная запись и метод Гаусса-Ньютона

Система уравнений и метод Ньютона

Градиент, якобиан и

гессиан

МНК и метод Гаусса-Ньютона

 

 

 

 

Слайд 12

Метод Левенберга-Марквардта

Метод Левенберга-Марквардта

 

 

Слайд 13

Нелинейная регрессия: доверительные интервалы Исходная система уравнений Результат линеаризации в векторной форме Разложение в ряд Тейлора

Нелинейная регрессия: доверительные интервалы

 

 

 

 

 

Исходная система уравнений

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

Разложение в ряд

Тейлора

 

Слайд 14

Нелинейная регрессия: практическая реализация Шаг 3. Запись на MATLAB function lsqfit_ex

Нелинейная регрессия: практическая реализация

 

 

Шаг 3. Запись на MATLAB
function lsqfit_ex
[...данные...]
b0 = [0

3 2];
opt = optimset('Display','iter',...
'Jacobian', 'on', ...
'DerivativeCheck', 'on');
[b,~,res,~,~,~,J] = lsqnonlin(@(b) func(b, X, Y), b0, [], [], opt);
[...анализ и вывод результатов...]
end
function [dF, J] = func(b, x, y)
dF = b(1) + b(2)*exp(-b(3)*x) - y;
df_db1 = ones(size(x));
df_db2 = exp(-b(3)*x);
df_db3 = -b(2)*exp(-b(3)*x).*x;
J = [df_db1 df_db2 df_db3];
end

Шаг 4. Подбор начального приближение и визуализация результатов

Слайд 15

Функция optimset – настройки для lsqnonlin OPT = optimset(‘param1’, value1, ‘param2’,

Функция optimset – настройки для lsqnonlin
OPT = optimset(‘param1’, value1, ‘param2’, value2,

...);

Функции lsqnonlin и optimset: настройки

Функция lsqnonlin – реализация метода наименьших квадратов
[X,RESNORM,RESIDUAL,EXITFLAG,OUTPUT,LAMBDA,JACOBIAN] =
lsqnonlin(FUN,X0,LB,UB,OPTIONS)

Ответ

Вектор
отклонений

Функция
@(x)…

Нач.прибл.

Границы

Настройки

Код возврата

М-ца Якоби

Слайд 16

Часть 3. Системы уравнений

Часть 3. Системы уравнений

Слайд 17

Решение без якобиана >> f=@(p)[p(1)^3+cos(p(2))-2; sin(p(1)^2) + log(p(2))]; >> [p,ff] =

Решение без якобиана
>> f=@(p)[p(1)^3+cos(p(2))-2;
sin(p(1)^2) + log(p(2))];
>> [p,ff] = fsolve(f,[1 1])
Equation

solved
[...дополнительная информация]
p =
1.0280 0.4186
ff =
1.0e-09 *
-0.0506 -0.4514

Решение систем нелинейных уравнений

Обычно при решении системы линейных уравнений используются те же алгоритмы, что и для метода наименьших квадратов. В MATLAB – методы Левенберга-Марквардта и доверительных областей (trust-region dogleg)

Функция fsolve – численное решение системы уравнений
[X,FVAL,EXITFLAG,OUTPUT,JACOB] = fsolve(FUN,X0,OPTIONS)

Ф-ция @(x)…

Нач.прибл.

Настройки

Ответ

Вектор
отклонений