288 lines
11 KiB
HTML
288 lines
11 KiB
HTML
<!--
|
|
Automatically generated HTML file from DocOnce source
|
|
(https://github.com/hplgit/doconce/)
|
|
-->
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<meta name="generator" content="DocOnce: https://github.com/hplgit/doconce/" />
|
|
<meta name="description" content="Homework 1">
|
|
|
|
<title>Homework 1</title>
|
|
|
|
<!-- Bootstrap style: bootstrap -->
|
|
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
|
|
<!-- not necessary
|
|
<link href="https://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
|
|
-->
|
|
|
|
<style type="text/css">
|
|
|
|
/* Add scrollbar to dropdown menus in bootstrap navigation bar */
|
|
.dropdown-menu {
|
|
height: auto;
|
|
max-height: 400px;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
/* Adds an invisible element before each target to offset for the navigation
|
|
bar */
|
|
.anchor::before {
|
|
content:"";
|
|
display:block;
|
|
height:50px; /* fixed header height for style bootstrap */
|
|
margin:-50px 0 0; /* negative fixed header height */
|
|
}
|
|
</style>
|
|
|
|
|
|
</head>
|
|
|
|
<!-- tocinfo
|
|
{'highest level': 2,
|
|
'sections': [('Exercise 1', 2, None, '___sec0'),
|
|
('Exercise 2', 2, None, '___sec1'),
|
|
('Exercise 3, variance of the parameters $\\beta$ in linear '
|
|
'regression',
|
|
2,
|
|
None,
|
|
'___sec2')]}
|
|
end of tocinfo -->
|
|
|
|
<body>
|
|
|
|
|
|
|
|
<script type="text/x-mathjax-config">
|
|
MathJax.Hub.Config({
|
|
TeX: {
|
|
equationNumbers: { autoNumber: "none" },
|
|
extensions: ["AMSmath.js", "AMSsymbols.js", "autobold.js", "color.js"]
|
|
}
|
|
});
|
|
</script>
|
|
<script type="text/javascript" async
|
|
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<!-- Bootstrap navigation bar -->
|
|
<div class="navbar navbar-default navbar-fixed-top">
|
|
<div class="navbar-header">
|
|
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
</button>
|
|
<a class="navbar-brand" href="hw1-bs.html">Homework 1</a>
|
|
</div>
|
|
|
|
<div class="navbar-collapse collapse navbar-responsive-collapse">
|
|
<ul class="nav navbar-nav navbar-right">
|
|
<li class="dropdown">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Contents <b class="caret"></b></a>
|
|
<ul class="dropdown-menu">
|
|
<!-- navigation toc: --> <li><a href="#___sec0" style="font-size: 80%;">Exercise 1</a></li>
|
|
<!-- navigation toc: --> <li><a href="#___sec1" style="font-size: 80%;">Exercise 2</a></li>
|
|
<!-- navigation toc: --> <li><a href="#___sec2" style="font-size: 80%;">Exercise 3, variance of the parameters \( \beta \) in linear regression</a></li>
|
|
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div> <!-- end of navigation bar -->
|
|
|
|
<div class="container">
|
|
|
|
<p> </p><p> </p><p> </p> <!-- add vertical space -->
|
|
|
|
<a name="part0000"></a>
|
|
<!-- ------------------- main content ---------------------- -->
|
|
|
|
|
|
|
|
<div class="jumbotron">
|
|
<center><h1>Homework 1</h1></center> <!-- document title -->
|
|
|
|
<p>
|
|
<!-- author(s): <a href="http://www.uio.no/studier/emner/matnat/fys/FYS3155/index-eng.html" target="_self">Data Analysis and Machine Learning FYS-STK3155/FYS4155</a> -->
|
|
|
|
<center>
|
|
<b><a href="http://www.uio.no/studier/emner/matnat/fys/FYS3155/index-eng.html" target="_self">Data Analysis and Machine Learning FYS-STK3155/FYS4155</a></b>
|
|
</center>
|
|
|
|
<p>
|
|
<!-- institution -->
|
|
|
|
<center><b>Department of Physics, University of Oslo, Norway</b></center>
|
|
<br>
|
|
<p>
|
|
<center><h4>Aug 27, 2018</h4></center> <!-- date -->
|
|
<br>
|
|
<p>
|
|
</div> <!-- end jumbotron -->
|
|
|
|
<h2 id="___sec0" class="anchor">Exercise 1 </h2>
|
|
|
|
<p>
|
|
The first exercise here is of a mere technical art. We want you have installed
|
|
|
|
<ul>
|
|
<li> git as a version control software and to establish a user account on a provider like GitHub. Other providers like GitLab etc are equally fine. You can also use the University of Oslo <a href="https://www.uio.no/tjenester/it/maskin/filer/versjonskontroll/github.html" target="_self">GitHub facilities</a>.</li>
|
|
<li> Install various Python packages</li>
|
|
</ul>
|
|
|
|
We will make extensive use of Python as programming language and its
|
|
myriad of available libraries. You will find
|
|
IPython/Jupyter notebooks invaluable in your work. You can run <b>R</b>
|
|
codes in the Jupyter/IPython notebooks, with the immediate benefit of
|
|
visualizing your data. You can also use compiled languages like C++,
|
|
Rust, Fortran etc if you prefer. The focus in these lectures will be
|
|
on Python, but we will provide many code examples for those of you who
|
|
prefer R or compiled languages. You can integrate C++ codes and R in for example
|
|
a Jupyter notebook.
|
|
|
|
<p>
|
|
If you have Python installed (we recommend Python3) and you feel
|
|
pretty familiar with installing different packages, we recommend that
|
|
you install the following Python packages via <b>pip</b> as
|
|
|
|
<ol>
|
|
<li> pip install numpy scipy matplotlib ipython scikit-learn sympy pandas pillow</li>
|
|
</ol>
|
|
|
|
For <b>Tensorflow</b>, we recommend following the instructions in the text of
|
|
<a href="http://shop.oreilly.com/product/0636920052289.do" target="_self">Aurelien Geron, Hands‑On Machine Learning with Scikit‑Learn and TensorFlow, O'Reilly</a>
|
|
|
|
<p>
|
|
We will come back to <b>tensorflow</b> later.
|
|
|
|
<p>
|
|
For Python3, replace <b>pip</b> with <b>pip3</b>.
|
|
|
|
<p>
|
|
For OSX users we recommend, after having installed Xcode, to
|
|
install <b>brew</b>. Brew allows for a seamless installation of additional
|
|
software via for example
|
|
|
|
<ol>
|
|
<li> brew install python3</li>
|
|
</ol>
|
|
|
|
For Linux users, with its variety of distributions like for example the widely popular Ubuntu distribution,
|
|
you can use <b>pip</b> as well and simply install Python as
|
|
|
|
<ol>
|
|
<li> sudo apt-get install python3 (or python for pyhton2.7)</li>
|
|
</ol>
|
|
|
|
If you don't want to perform these operations separately and venture
|
|
into the hassle of exploring how to set up dependencies and paths, we
|
|
recommend two widely used distrubutions which set up all relevant
|
|
dependencies for Python, namely
|
|
|
|
<ul>
|
|
<li> <a href="https://docs.anaconda.com/" target="_self">Anaconda</a>,</li>
|
|
</ul>
|
|
|
|
which is an open source
|
|
distribution of the Python and R programming languages for large-scale
|
|
data processing, predictive analytics, and scientific computing, that
|
|
aims to simplify package management and deployment. Package versions
|
|
are managed by the package management system <b>conda</b>.
|
|
|
|
<ul>
|
|
<li> <a href="https://www.enthought.com/product/canopy/" target="_self">Enthought canopy</a></li>
|
|
</ul>
|
|
|
|
is a Python
|
|
distribution for scientific and analytic computing distribution and
|
|
analysis environment, available for free and under a commercial
|
|
license.
|
|
|
|
<p>
|
|
We recommend using <b>Anaconda</b>.
|
|
|
|
<h2 id="___sec1" class="anchor">Exercise 2 </h2>
|
|
|
|
<p>
|
|
We will generate our own dataset for function \( y(x) \) where \( x \in [0,2] \) and defined by random numbers computed with the uniform distribution. The function \( y \) is a quadratic polynomial in \( x \) with added stochastic noise according to the normal distribution \( \cal {N}(0,1) \).
|
|
The following simple Python instructions define our \( x \) and \( y \) values (with 100 data points).
|
|
<p>
|
|
|
|
<!-- code=python (!bc pycod) typeset with pygments style "default" -->
|
|
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%"><span></span>x <span style="color: #666666">=</span> np<span style="color: #666666">.</span>random<span style="color: #666666">.</span>rand(<span style="color: #666666">100</span>,<span style="color: #666666">1</span>)
|
|
y <span style="color: #666666">=</span> <span style="color: #666666">5*</span>x<span style="color: #666666">*</span>x<span style="color: #666666">+0.1*</span>np<span style="color: #666666">.</span>random<span style="color: #666666">.</span>randn(<span style="color: #666666">100</span>,<span style="color: #666666">1</span>)
|
|
</pre></div>
|
|
<ol>
|
|
<li> Write your own code (following the examples under the <a href="https://compphysics.github.io/MachineLearning/doc/pub/Regression/html/Regression-bs.html" target="_self">regression slides</a> for computing the parametrization of the data set fitting a second-order polynomial.</li>
|
|
<li> Use thereafter <b>scikit-learn</b> (see again the examples in the regression slides) and compare with your own code.</li>
|
|
<li> Using scikit-learn, compute also the mean square error, a risk metric corresponding to the expected value of the squared (quadratic) error or loss defined as</li>
|
|
</ol>
|
|
|
|
$$ MSE(\hat{y},\hat{\tilde{y}}) = \frac{1}{n}
|
|
\sum_{i=0}^{n-1}(y_i-\tilde{y}_i)^2,
|
|
$$
|
|
|
|
and the \( R^2 \) score function.
|
|
If \( \tilde{\hat{y}}_i \) is the predicted value of the \( i-th \) sample and \( y_i \) is the corresponding true value, then the score \( R^2 \) is defined as
|
|
$$
|
|
R^2(\hat{y}, \tilde{\hat{y}}) = 1 - \frac{\sum_{i=0}^{n - 1} (y_i - \tilde{y}_i)^2}{\sum_{i=0}^{n - 1} (y_i - \bar{y})^2},
|
|
$$
|
|
|
|
where we have defined the mean value of \( \hat{y} \) as
|
|
$$
|
|
\bar{y} = \frac{1}{n} \sum_{i=0}^{n - 1} y_i.
|
|
$$
|
|
|
|
<p>
|
|
Discuss the meaning of these results. Try also to vary the coefficient in front of the added stochastic noise term and discuss the quality of the fits.
|
|
|
|
<h2 id="___sec2" class="anchor">Exercise 3, variance of the parameters \( \beta \) in linear regression </h2>
|
|
|
|
<p>
|
|
Show that the variance of the parameters \( \beta \) in the linear regression method (chapter 3, equation (3.8) of <a href="https://www.springer.com/gp/book/9780387848570" target="_self">Trevor Hastie, Robert Tibshirani, Jerome H. Friedman, The Elements of Statistical Learning, Springer</a>) is given as
|
|
|
|
$$
|
|
mathrm{Var}(\hat{\beta}) = \left(\hat{X}^T\hat{X}\right)^{-1}\sigma^2,
|
|
$$
|
|
|
|
with
|
|
$$
|
|
\sigma^2 = \frac{1}{N-p-1}\sum_{i=1}{N} (y_i-\tilde{y}_i)^2,
|
|
$$
|
|
|
|
where we have assumed that we fit a function of degree \( p-1 \) (for example a polynomial in \( x \)).
|
|
|
|
<p>
|
|
<!-- navigation buttons at the bottom of the page -->
|
|
<ul class="pagination">
|
|
<li class="active"><a href="._hw1-bs000.html">1</a></li>
|
|
</ul>
|
|
<!-- ------------------- end of main content --------------- -->
|
|
|
|
</div> <!-- end container -->
|
|
<!-- include javascript, jQuery *first* -->
|
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
|
|
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
|
|
|
<!-- Bootstrap footer
|
|
<footer>
|
|
<a href="http://..."><img width="250" align=right src="http://..."></a>
|
|
</footer>
|
|
-->
|
|
|
|
|
|
<center style="font-size:80%">
|
|
<!-- copyright --> © 1999-2018, "Data Analysis and Machine Learning FYS-STK3155/FYS4155":"http://www.uio.no/studier/emner/matnat/fys/FYS3155/index-eng.html". Released under CC Attribution-NonCommercial 4.0 license
|
|
</center>
|
|
|
|
|
|
</body>
|
|
</html>
|
|
|
|
|