[regression] objective function section done
This commit is contained in:
parent
be79d450df
commit
1b14bca164
@ -1,12 +0,0 @@
|
|||||||
function mse = meanSquaredError(x, y, parameter)
|
|
||||||
% Mean squared error between a straight line and data pairs.
|
|
||||||
%
|
|
||||||
% Arguments: x, vector of the input values
|
|
||||||
% y, vector of the corresponding measured output values
|
|
||||||
% parameter, vector containing slope and intercept
|
|
||||||
% as the 1st and 2nd element, respectively.
|
|
||||||
%
|
|
||||||
% Returns: mse, the mean-squared-error.
|
|
||||||
|
|
||||||
mse = mean((y - x * parameter(1) - parameter(2)).^2);
|
|
||||||
end
|
|
11
regression/code/meanSquaredErrorCubic.m
Normal file
11
regression/code/meanSquaredErrorCubic.m
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
function mse = meanSquaredError(x, y, c)
|
||||||
|
% Mean squared error between data pairs and a cubic relation.
|
||||||
|
%
|
||||||
|
% Arguments: x, vector of the input values
|
||||||
|
% y, vector of the corresponding measured output values
|
||||||
|
% c, the factor for the cubic relation.
|
||||||
|
%
|
||||||
|
% Returns: mse, the mean-squared-error.
|
||||||
|
|
||||||
|
mse = mean((y - c*x.^3).^2);
|
||||||
|
end
|
@ -10,6 +10,6 @@ yest = c * x.^3;
|
|||||||
y = yest + noise*randn(n, 1);
|
y = yest + noise*randn(n, 1);
|
||||||
|
|
||||||
% compute mean squared error:
|
% compute mean squared error:
|
||||||
mse = mean((y - y_est).^2);
|
mse = mean((y - yest).^2);
|
||||||
|
|
||||||
fprintf('the mean squared error is %g kg^2\n', mse))
|
fprintf('the mean squared error is %.0f kg^2\n', mse)
|
||||||
|
@ -41,7 +41,7 @@ def plot_data_fac(ax, x, y, c):
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
x, y, c = create_data()
|
x, y, c = create_data()
|
||||||
print(len(x))
|
print('n=%d' % len(x))
|
||||||
fig, (ax1, ax2) = plt.subplots(1, 2)
|
fig, (ax1, ax2) = plt.subplots(1, 2)
|
||||||
fig.subplots_adjust(wspace=0.5, **adjust_fs(fig, left=6.0, right=1.5))
|
fig.subplots_adjust(wspace=0.5, **adjust_fs(fig, left=6.0, right=1.5))
|
||||||
plot_data(ax1, x, y)
|
plot_data(ax1, x, y)
|
||||||
|
@ -42,17 +42,6 @@
|
|||||||
|
|
||||||
\subsection{2D fit}
|
\subsection{2D fit}
|
||||||
|
|
||||||
\begin{exercise}{meanSquaredError.m}{}
|
|
||||||
Implement the objective function \eqref{mseline} as a function
|
|
||||||
\varcode{meanSquaredError()}. The function takes three
|
|
||||||
arguments. The first is a vector of $x$-values and the second
|
|
||||||
contains the measurements $y$ for each value of $x$. The third
|
|
||||||
argument is a 2-element vector that contains the values of
|
|
||||||
parameters \varcode{m} and \varcode{b}. The function returns the
|
|
||||||
mean square error.
|
|
||||||
\end{exercise}
|
|
||||||
|
|
||||||
|
|
||||||
\begin{exercise}{errorSurface.m}{}\label{errorsurfaceexercise}
|
\begin{exercise}{errorSurface.m}{}\label{errorsurfaceexercise}
|
||||||
Generate 20 data pairs $(x_i|y_i)$ that are linearly related with
|
Generate 20 data pairs $(x_i|y_i)$ that are linearly related with
|
||||||
slope $m=0.75$ and intercept $b=-40$, using \varcode{rand()} for
|
slope $m=0.75$ and intercept $b=-40$, using \varcode{rand()} for
|
||||||
|
@ -109,10 +109,10 @@ The mean squared error is a so called \enterm{objective function} or
|
|||||||
\enterm{cost function} (\determ{Kostenfunktion}). A cost function
|
\enterm{cost function} (\determ{Kostenfunktion}). A cost function
|
||||||
assigns to a model prediction $\{y^{est}(x_i)\}$ for a given data set
|
assigns to a model prediction $\{y^{est}(x_i)\}$ for a given data set
|
||||||
$\{(x_i, y_i)\}$ a single scalar value that we want to minimize. Here
|
$\{(x_i, y_i)\}$ a single scalar value that we want to minimize. Here
|
||||||
we aim to adapt the model parameters to minimize the mean squared
|
we aim to adapt the model parameter to minimize the mean squared error
|
||||||
error \eqref{meansquarederror}. In general, the \enterm{cost function}
|
\eqref{meansquarederror}. In general, the \enterm{cost function} can
|
||||||
can be any function that describes the quality of the fit by mapping
|
be any function that describes the quality of a fit by mapping the
|
||||||
the data and the predictions to a single scalar value.
|
data and the predictions to a single scalar value.
|
||||||
|
|
||||||
\begin{figure}[t]
|
\begin{figure}[t]
|
||||||
\includegraphics{cubicerrors}
|
\includegraphics{cubicerrors}
|
||||||
@ -125,25 +125,23 @@ the data and the predictions to a single scalar value.
|
|||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Replacing $y^{est}$ in the mean squared error \eqref{meansquarederror}
|
Replacing $y^{est}$ in the mean squared error \eqref{meansquarederror}
|
||||||
with our model, the straight line \eqref{straightline}, the cost
|
with our cubic model \eqref{cubicfunc}, the cost function reads
|
||||||
function reads
|
|
||||||
\begin{eqnarray}
|
\begin{eqnarray}
|
||||||
f_{cost}(m,b|\{(x_i, y_i)\}) & = & \frac{1}{N} \sum_{i=1}^N (y_i - f(x_i;m,b))^2 \label{msefunc} \\
|
f_{cost}(c|\{(x_i, y_i)\}) & = & \frac{1}{N} \sum_{i=1}^N (y_i - f(x_i;c))^2 \label{msefunc} \\
|
||||||
& = & \frac{1}{N} \sum_{i=1}^N (y_i - m x_i - b)^2 \label{mseline}
|
& = & \frac{1}{N} \sum_{i=1}^N (y_i - c x_i^3)^2 \label{msecube}
|
||||||
\end{eqnarray}
|
\end{eqnarray}
|
||||||
The optimization process tries to find the slope $m$ and the intercept
|
The optimization process tries to find a value for the factor $c$ such
|
||||||
$b$ such that the cost function is minimized. With the mean squared
|
that the cost function is minimized. With the mean squared error as
|
||||||
error as the cost function this optimization process is also called
|
the cost function this optimization process is also called method of
|
||||||
method of the \enterm{least square error} (\determ[quadratischer
|
\enterm{least squares} (\determ[quadratischer
|
||||||
Fehler!kleinster]{Methode der kleinsten Quadrate}).
|
Fehler!kleinster]{Methode der kleinsten Quadrate}).
|
||||||
|
|
||||||
\begin{exercise}{meanSquaredError.m}{}
|
\begin{exercise}{meanSquaredErrorCubic.m}{}
|
||||||
Implement the objective function \eqref{mseline} as a function
|
Implement the objective function \eqref{msecube} as a function
|
||||||
\varcode{meanSquaredError()}. The function takes three
|
\varcode{meanSquaredErrorCubic()}. The function takes three
|
||||||
arguments. The first is a vector of $x$-values and the second
|
arguments. The first is a vector of $x$-values and the second
|
||||||
contains the measurements $y$ for each value of $x$. The third
|
contains the measurements $y$ for each value of $x$. The third
|
||||||
argument is a 2-element vector that contains the values of
|
argument is the value of the factor $c$. The function returns the
|
||||||
parameters \varcode{m} and \varcode{b}. The function returns the
|
|
||||||
mean squared error.
|
mean squared error.
|
||||||
\end{exercise}
|
\end{exercise}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user