From 587951f8d41d4c226aa16f5eb63be3d9d64450ec Mon Sep 17 00:00:00 2001 From: mhjensen Date: Wed, 11 Nov 2020 22:30:47 +0100 Subject: [PATCH] p3 --- .../2020/Project3/html/._Project3-bs000.html | 488 ++++++++++++++++++ .../2020/Project3/html/Project3-bs.html | 488 ++++++++++++++++++ doc/Projects/2020/Project3/html/Project3.html | 421 +++++++++++++++ .../2020/Project3/ipynb/Project3.ipynb | 364 +++++++++++++ .../Project3/ipynb/ipynb-Project3-src.tar.gz | Bin 0 -> 192 bytes doc/Projects/2020/Project3/pdf/Project3.p.tex | 441 ++++++++++++++++ doc/Projects/2020/Project3/pdf/Project3.pdf | Bin 0 -> 235031 bytes doc/Projects/2020/Project3/pdf/Project3.tex | 413 +++++++++++++++ 8 files changed, 2615 insertions(+) create mode 100644 doc/Projects/2020/Project3/html/._Project3-bs000.html create mode 100644 doc/Projects/2020/Project3/html/Project3-bs.html create mode 100644 doc/Projects/2020/Project3/html/Project3.html create mode 100644 doc/Projects/2020/Project3/ipynb/Project3.ipynb create mode 100644 doc/Projects/2020/Project3/ipynb/ipynb-Project3-src.tar.gz create mode 100644 doc/Projects/2020/Project3/pdf/Project3.p.tex create mode 100644 doc/Projects/2020/Project3/pdf/Project3.pdf create mode 100644 doc/Projects/2020/Project3/pdf/Project3.tex diff --git a/doc/Projects/2020/Project3/html/._Project3-bs000.html b/doc/Projects/2020/Project3/html/._Project3-bs000.html new file mode 100644 index 000000000..407048488 --- /dev/null +++ b/doc/Projects/2020/Project3/html/._Project3-bs000.html @@ -0,0 +1,488 @@ + + + + + + + + +Project 3 on Machine Learning, deadline December 14 + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

 

 

 

+ + + + + + +
+

Project 3 on Machine Learning, deadline December 14

+ +

+ + +

+Data Analysis and Machine Learning FYS-STK3155/FYS4155 +
+ +

+ + +

Department of Physics, University of Oslo, Norway
+
+

+

Nov 11, 2020

+
+

+

+ +

Paths for project 3

+ +

Defining the data sets to analyze yourself

+ +

+For project 3, you can propose own data sets that relate to your research interests or just use existing data sets from say + +

    +
  1. Kaggle
  2. +
  3. The University of California at Irvine (UCI) with its machine learning repository
  4. +
+ +The approach to the analysis of these new data sets should follow to a large extent what you did in projects 1 and 2. That is: + +
    +
  1. Whether you end up with a regression or a classification problem, you should employ at least two of the methods we have discussed among linear regression (including Ridge and Lasso), Logistic Regression, Neural Networks, Convolution Neural Networks, Recurrent Neural Networks, Support Vector Machines and Decision Trees, Random Forests, Bagging and Boosting. You could for example explore all of the approaches from decision trees, via bagging and voting classifiers, to random forests, boosting and finally XGboost. If you wish to venture into convolutional neural networks or recurrent neural networks, or extensions of neural networkds, feel free to do so.
  2. +
+ +For Boosting, feel also free to write your own codes. + +
    +
  1. For project 3, you should feel free to use your own codes from projects 1 and 2, eventually write your own for SVMs and/or Decision trees/random forests/bagging/boosting' or use the available functionality of Scikit-Learn, Tensorflow, etc.
  2. +
  3. The estimates you used and tested in projects 1 and 2 should also be included, that is the \( R2 \)-score, MSE, confusion matrix, accuracy score, information gain, ROC and Cumulative gains curves and other, cross-validation and/or bootstrap if these are relevant.
  4. +
  5. Similarly, feel free to explore various activations functions in deep learning and various approachs to stochastic gradient descent approaches.
  6. +
  7. If possible, you should link the data sets with exisiting research and analyses thereof. Scientific articles which have used Machine Learning algorithms to analyze the data are highly welcome. Perhaps you can improve previous analyses and even publish a new article?
  8. +
  9. A critical assessment of the methods with ditto perspectives and recommendations is also something you need to include.
  10. +
+ +All in all, the report should follow the same pattern as the two previous ones, with abstract, introduction, methods, code, results, conclusions etc.. + +

+We propose also an alternative to the above. This is a project on using machine learning methods (neural networks mainly) to the solution of ordinary differential equations and partial differential equations, with a final twist on how to diagonalize a symmetric matrix with neural networks.. + +

+This is a field with a large interest recently, spanning from studies of turbulence in fluid mechanics and meteorology to the solution of quantum mechanical systems. As reading background you can use the slides from week 43 and/or the textbook by Yadav et al. + +

The basic structure of your project

+ +

+Here follows a set up on how to structure your report and analyze the data you have opted for. + +

Part a)

+ +

+The first part deals with structuring and reading the data, much along the same lines as done in projects 1 and 2. Explain how the data are produced and place them in a proper context. + +

Part b)

+ +

+You need to include at least two central algorithms, or as an alternative explore methods from decisions tree to bagging, random forests and boosting. Explain the basics of the methods you have chosen to work with. This would be your theory part. + +

Part c)

+ +

+Then describe your algorithm and its implementation and tests you have performed. + +

Part d)

+ +

+Then presents your results and findings, link with existing literature and more. + +

Part e)

+ +

+Finally, here you should present a critical assessment of the methods you have studied and link your results with the existing literature. + +

Solving partial differential equations with neural networks

+ +

+For this variant of project 3, we will assume that you have some +background in the solution of partial differential equations using +finite difference schemes. We will study the solution of the diffusion +equation in one dimension using a standard explicit scheme and neural +networks to solve the same equations. + +

+For the explicit scheme, you can study for example chapter 10 of the lecture notes in Computational Physics or alternative sources. For the solution of ordinary and partial differential equations using neural networks, the lectures by Kristine Baluka Hein at this course are highly recommended. + +

+For the machine learning part you can use your own code from project 2 or the functionality of for example Tensorflow/Keras.. + +

Part a), setting up the problem

+ +

+The physical problem can be that of the temperature gradient in a rod of length \( L=1 \) at \( x=0 \) and \( x=1 \). +We are looking at a one-dimensional +problem + +$$ +\begin{equation*} + \frac{\partial^2 u(x,t)}{\partial x^2} =\frac{\partial u(x,t)}{\partial t}, t> 0, x\in [0,L] +\end{equation*} +$$ + +or + +$$ +\begin{equation*} +u_{xx} = u_t, +\end{equation*} +$$ + +with initial conditions, i.e., the conditions at \( t=0 \), +$$ +\begin{equation*} +u(x,0)= \sin{(\pi x)} \hspace{0.5cm} 0 < x < L, +\end{equation*} +$$ + +with \( L=1 \) the length of the \( x \)-region of interest. The +boundary conditions are + +$$ +\begin{equation*} +u(0,t)= 0 \hspace{0.5cm} t \ge 0, +\end{equation*} +$$ + +and + +$$ +\begin{equation*} +u(L,t)= 0 \hspace{0.5cm} t \ge 0. +\end{equation*} +$$ + +The function \( u(x,t) \) can be the temperature gradient of a rod. +As time increases, the velocity approaches a linear variation with \( x \). + +

+We will limit ourselves to the so-called explicit forward Euler algorithm with discretized versions of time given by a forward formula and a centered difference in space resulting in +$$ +\begin{equation*} +u_t\approx \frac{u(x,t+\Delta t)-u(x,t)}{\Delta t}=\frac{u(x_i,t_j+\Delta t)-u(x_i,t_j)}{\Delta t} +\end{equation*} +$$ + +and + +$$ +\begin{equation*} +u_{xx}\approx \frac{u(x+\Delta x,t)-2u(x,t)+u(x-\Delta x,t)}{\Delta x^2}, +\end{equation*} +$$ + +or + +$$ +\begin{equation*} +u_{xx}\approx \frac{u(x_i+\Delta x,t_j)-2u(x_i,t_j)+u(x_i-\Delta x,t_j)}{\Delta x^2}. +\end{equation*} +$$ + +

+Write down the algorithm and the equations you need to implement. +Find also the analytical solution to the problem. + +

Part b)

+ +

+Implement the explicit scheme algorithm and perform tests of the solution +for \( \Delta x=1/10 \), \( \Delta x=1/100 \) using \( \Delta t \) as dictated by the stability limit of the explicit scheme. The stability criterion for the explicit scheme requires that \( \Delta t/\Delta x^2 \leq 1/2 \). + +

+Study the solutions at two time points \( t_1 \) and \( t_2 \) where \( u(x,t_1) \) is smooth but still significantly curved +and \( u(x,t_2) \) is almost linear, close to the stationary state. + +

Part c) Neural networks

+ +

+Study now the lecture notes on solving ODEs and PDEs with neural +network and use either your own code from project 2 or the +functionality of tensorflow/keras to solve the same equation as in +part b). Discuss your results and compare them with the standard +explicit scheme. Include also the analytical solution and compare with +that. + +

Part d) Solving eigenvalue problems

+ +

+Follow the discussion in the work of Yi et al. in the article from +Computers and Mathematics with Applications 47, 1155 (2004), and +use your differential equation solver with neural networks, set up a +simple square, real and symmetric \( 6\times 6 \) matrix and find the +eigenvalues. Compare with the solution from numerical diagonalization with standard eigenvalue solvers from linear algebra. + +

Part e)

+ +

+Finally, present a critical assessment of the methods you have studied and discuss the potential for the solving differential equations and eigenvalue problems with machine learning methods. + +

Introduction to numerical projects

+ +

+Here follows a brief recipe and recommendation on how to write a report for each +project. + +

+ +

Introduction to numerical projects

+ +

+Here follows a brief recipe and recommendation on how to write a report for each +project. + +

+ +

Format for electronic delivery of report and programs

+ +

+The preferred format for the report is a PDF file. You can also use DOC or postscript formats or as an ipython notebook file. As programming language we prefer that you choose between C/C++, Fortran2008 or Python. The following prescription should be followed when preparing the report: + +

+ +Finally, +we encourage you to collaborate. Optimal working groups consist of +2-3 students. You can then hand in a common report. + +

Software and needed installations

+ +

+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 pip as + +

    +
  1. pip install numpy scipy matplotlib ipython scikit-learn tensorflow sympy pandas pillow
  2. +
+ +For Python3, replace pip with pip3. + +

+See below for a discussion of tensorflow and scikit-learn. + +

+For OSX users we recommend also, after having installed Xcode, to install brew. Brew allows +for a seamless installation of additional software via for example + +

    +
  1. brew install python3
  2. +
+ +For Linux users, with its variety of distributions like for example the widely popular Ubuntu distribution +you can use pip as well and simply install Python as + +
    +
  1. sudo apt-get install python3 (or python for python2.7)
  2. +
+ +etc etc. + +

+If you don't want to install various Python packages with their dependencies separately, we recommend two widely used distrubutions which set up all relevant dependencies for Python, namely + +

    +
  1. Anaconda Anaconda 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 conda
  2. +
  3. Enthought canopy is a Python distribution for scientific and analytic computing distribution and analysis environment, available for free and under a commercial license.
  4. +
+ +Popular software packages written in Python for ML are + + + +These are all freely available at their respective GitHub sites. They +encompass communities of developers in the thousands or more. And the number +of code developers and contributors keeps increasing. + +

+ +

+ +

+ + +
+ + + + + + + +
+ © 1999-2020, "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 +
+ + + + + + diff --git a/doc/Projects/2020/Project3/html/Project3-bs.html b/doc/Projects/2020/Project3/html/Project3-bs.html new file mode 100644 index 000000000..407048488 --- /dev/null +++ b/doc/Projects/2020/Project3/html/Project3-bs.html @@ -0,0 +1,488 @@ + + + + + + + + +Project 3 on Machine Learning, deadline December 14 + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

 

 

 

+ + + + + + +
+

Project 3 on Machine Learning, deadline December 14

+ +

+ + +

+Data Analysis and Machine Learning FYS-STK3155/FYS4155 +
+ +

+ + +

Department of Physics, University of Oslo, Norway
+
+

+

Nov 11, 2020

+
+

+

+ +

Paths for project 3

+ +

Defining the data sets to analyze yourself

+ +

+For project 3, you can propose own data sets that relate to your research interests or just use existing data sets from say + +

    +
  1. Kaggle
  2. +
  3. The University of California at Irvine (UCI) with its machine learning repository
  4. +
+ +The approach to the analysis of these new data sets should follow to a large extent what you did in projects 1 and 2. That is: + +
    +
  1. Whether you end up with a regression or a classification problem, you should employ at least two of the methods we have discussed among linear regression (including Ridge and Lasso), Logistic Regression, Neural Networks, Convolution Neural Networks, Recurrent Neural Networks, Support Vector Machines and Decision Trees, Random Forests, Bagging and Boosting. You could for example explore all of the approaches from decision trees, via bagging and voting classifiers, to random forests, boosting and finally XGboost. If you wish to venture into convolutional neural networks or recurrent neural networks, or extensions of neural networkds, feel free to do so.
  2. +
+ +For Boosting, feel also free to write your own codes. + +
    +
  1. For project 3, you should feel free to use your own codes from projects 1 and 2, eventually write your own for SVMs and/or Decision trees/random forests/bagging/boosting' or use the available functionality of Scikit-Learn, Tensorflow, etc.
  2. +
  3. The estimates you used and tested in projects 1 and 2 should also be included, that is the \( R2 \)-score, MSE, confusion matrix, accuracy score, information gain, ROC and Cumulative gains curves and other, cross-validation and/or bootstrap if these are relevant.
  4. +
  5. Similarly, feel free to explore various activations functions in deep learning and various approachs to stochastic gradient descent approaches.
  6. +
  7. If possible, you should link the data sets with exisiting research and analyses thereof. Scientific articles which have used Machine Learning algorithms to analyze the data are highly welcome. Perhaps you can improve previous analyses and even publish a new article?
  8. +
  9. A critical assessment of the methods with ditto perspectives and recommendations is also something you need to include.
  10. +
+ +All in all, the report should follow the same pattern as the two previous ones, with abstract, introduction, methods, code, results, conclusions etc.. + +

+We propose also an alternative to the above. This is a project on using machine learning methods (neural networks mainly) to the solution of ordinary differential equations and partial differential equations, with a final twist on how to diagonalize a symmetric matrix with neural networks.. + +

+This is a field with a large interest recently, spanning from studies of turbulence in fluid mechanics and meteorology to the solution of quantum mechanical systems. As reading background you can use the slides from week 43 and/or the textbook by Yadav et al. + +

The basic structure of your project

+ +

+Here follows a set up on how to structure your report and analyze the data you have opted for. + +

Part a)

+ +

+The first part deals with structuring and reading the data, much along the same lines as done in projects 1 and 2. Explain how the data are produced and place them in a proper context. + +

Part b)

+ +

+You need to include at least two central algorithms, or as an alternative explore methods from decisions tree to bagging, random forests and boosting. Explain the basics of the methods you have chosen to work with. This would be your theory part. + +

Part c)

+ +

+Then describe your algorithm and its implementation and tests you have performed. + +

Part d)

+ +

+Then presents your results and findings, link with existing literature and more. + +

Part e)

+ +

+Finally, here you should present a critical assessment of the methods you have studied and link your results with the existing literature. + +

Solving partial differential equations with neural networks

+ +

+For this variant of project 3, we will assume that you have some +background in the solution of partial differential equations using +finite difference schemes. We will study the solution of the diffusion +equation in one dimension using a standard explicit scheme and neural +networks to solve the same equations. + +

+For the explicit scheme, you can study for example chapter 10 of the lecture notes in Computational Physics or alternative sources. For the solution of ordinary and partial differential equations using neural networks, the lectures by Kristine Baluka Hein at this course are highly recommended. + +

+For the machine learning part you can use your own code from project 2 or the functionality of for example Tensorflow/Keras.. + +

Part a), setting up the problem

+ +

+The physical problem can be that of the temperature gradient in a rod of length \( L=1 \) at \( x=0 \) and \( x=1 \). +We are looking at a one-dimensional +problem + +$$ +\begin{equation*} + \frac{\partial^2 u(x,t)}{\partial x^2} =\frac{\partial u(x,t)}{\partial t}, t> 0, x\in [0,L] +\end{equation*} +$$ + +or + +$$ +\begin{equation*} +u_{xx} = u_t, +\end{equation*} +$$ + +with initial conditions, i.e., the conditions at \( t=0 \), +$$ +\begin{equation*} +u(x,0)= \sin{(\pi x)} \hspace{0.5cm} 0 < x < L, +\end{equation*} +$$ + +with \( L=1 \) the length of the \( x \)-region of interest. The +boundary conditions are + +$$ +\begin{equation*} +u(0,t)= 0 \hspace{0.5cm} t \ge 0, +\end{equation*} +$$ + +and + +$$ +\begin{equation*} +u(L,t)= 0 \hspace{0.5cm} t \ge 0. +\end{equation*} +$$ + +The function \( u(x,t) \) can be the temperature gradient of a rod. +As time increases, the velocity approaches a linear variation with \( x \). + +

+We will limit ourselves to the so-called explicit forward Euler algorithm with discretized versions of time given by a forward formula and a centered difference in space resulting in +$$ +\begin{equation*} +u_t\approx \frac{u(x,t+\Delta t)-u(x,t)}{\Delta t}=\frac{u(x_i,t_j+\Delta t)-u(x_i,t_j)}{\Delta t} +\end{equation*} +$$ + +and + +$$ +\begin{equation*} +u_{xx}\approx \frac{u(x+\Delta x,t)-2u(x,t)+u(x-\Delta x,t)}{\Delta x^2}, +\end{equation*} +$$ + +or + +$$ +\begin{equation*} +u_{xx}\approx \frac{u(x_i+\Delta x,t_j)-2u(x_i,t_j)+u(x_i-\Delta x,t_j)}{\Delta x^2}. +\end{equation*} +$$ + +

+Write down the algorithm and the equations you need to implement. +Find also the analytical solution to the problem. + +

Part b)

+ +

+Implement the explicit scheme algorithm and perform tests of the solution +for \( \Delta x=1/10 \), \( \Delta x=1/100 \) using \( \Delta t \) as dictated by the stability limit of the explicit scheme. The stability criterion for the explicit scheme requires that \( \Delta t/\Delta x^2 \leq 1/2 \). + +

+Study the solutions at two time points \( t_1 \) and \( t_2 \) where \( u(x,t_1) \) is smooth but still significantly curved +and \( u(x,t_2) \) is almost linear, close to the stationary state. + +

Part c) Neural networks

+ +

+Study now the lecture notes on solving ODEs and PDEs with neural +network and use either your own code from project 2 or the +functionality of tensorflow/keras to solve the same equation as in +part b). Discuss your results and compare them with the standard +explicit scheme. Include also the analytical solution and compare with +that. + +

Part d) Solving eigenvalue problems

+ +

+Follow the discussion in the work of Yi et al. in the article from +Computers and Mathematics with Applications 47, 1155 (2004), and +use your differential equation solver with neural networks, set up a +simple square, real and symmetric \( 6\times 6 \) matrix and find the +eigenvalues. Compare with the solution from numerical diagonalization with standard eigenvalue solvers from linear algebra. + +

Part e)

+ +

+Finally, present a critical assessment of the methods you have studied and discuss the potential for the solving differential equations and eigenvalue problems with machine learning methods. + +

Introduction to numerical projects

+ +

+Here follows a brief recipe and recommendation on how to write a report for each +project. + +

+ +

Introduction to numerical projects

+ +

+Here follows a brief recipe and recommendation on how to write a report for each +project. + +

+ +

Format for electronic delivery of report and programs

+ +

+The preferred format for the report is a PDF file. You can also use DOC or postscript formats or as an ipython notebook file. As programming language we prefer that you choose between C/C++, Fortran2008 or Python. The following prescription should be followed when preparing the report: + +

+ +Finally, +we encourage you to collaborate. Optimal working groups consist of +2-3 students. You can then hand in a common report. + +

Software and needed installations

+ +

+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 pip as + +

    +
  1. pip install numpy scipy matplotlib ipython scikit-learn tensorflow sympy pandas pillow
  2. +
+ +For Python3, replace pip with pip3. + +

+See below for a discussion of tensorflow and scikit-learn. + +

+For OSX users we recommend also, after having installed Xcode, to install brew. Brew allows +for a seamless installation of additional software via for example + +

    +
  1. brew install python3
  2. +
+ +For Linux users, with its variety of distributions like for example the widely popular Ubuntu distribution +you can use pip as well and simply install Python as + +
    +
  1. sudo apt-get install python3 (or python for python2.7)
  2. +
+ +etc etc. + +

+If you don't want to install various Python packages with their dependencies separately, we recommend two widely used distrubutions which set up all relevant dependencies for Python, namely + +

    +
  1. Anaconda Anaconda 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 conda
  2. +
  3. Enthought canopy is a Python distribution for scientific and analytic computing distribution and analysis environment, available for free and under a commercial license.
  4. +
+ +Popular software packages written in Python for ML are + + + +These are all freely available at their respective GitHub sites. They +encompass communities of developers in the thousands or more. And the number +of code developers and contributors keeps increasing. + +

+ +

+ +

+ + +
+ + + + + + + +
+ © 1999-2020, "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 +
+ + + + + + diff --git a/doc/Projects/2020/Project3/html/Project3.html b/doc/Projects/2020/Project3/html/Project3.html new file mode 100644 index 000000000..3ef33b972 --- /dev/null +++ b/doc/Projects/2020/Project3/html/Project3.html @@ -0,0 +1,421 @@ + + + + + + + + +Project 3 on Machine Learning, deadline December 14 + + + + + + + + + + + + + + + + + + + + + + + +

Project 3 on Machine Learning, deadline December 14

+ +

+ + +

+Data Analysis and Machine Learning FYS-STK3155/FYS4155 +
+ +

+ + +

Department of Physics, University of Oslo, Norway
+
+

+

Nov 11, 2020

+
+ +

Paths for project 3

+ +

Defining the data sets to analyze yourself

+ +

+For project 3, you can propose own data sets that relate to your research interests or just use existing data sets from say + +

    +
  1. Kaggle
  2. +
  3. The University of California at Irvine (UCI) with its machine learning repository
  4. +
+ +The approach to the analysis of these new data sets should follow to a large extent what you did in projects 1 and 2. That is: + +
    +
  1. Whether you end up with a regression or a classification problem, you should employ at least two of the methods we have discussed among linear regression (including Ridge and Lasso), Logistic Regression, Neural Networks, Convolution Neural Networks, Recurrent Neural Networks, Support Vector Machines and Decision Trees, Random Forests, Bagging and Boosting. You could for example explore all of the approaches from decision trees, via bagging and voting classifiers, to random forests, boosting and finally XGboost. If you wish to venture into convolutional neural networks or recurrent neural networks, or extensions of neural networkds, feel free to do so.
  2. +
+ +For Boosting, feel also free to write your own codes. + +
    +
  1. For project 3, you should feel free to use your own codes from projects 1 and 2, eventually write your own for SVMs and/or Decision trees/random forests/bagging/boosting' or use the available functionality of Scikit-Learn, Tensorflow, etc.
  2. +
  3. The estimates you used and tested in projects 1 and 2 should also be included, that is the \( R2 \)-score, MSE, confusion matrix, accuracy score, information gain, ROC and Cumulative gains curves and other, cross-validation and/or bootstrap if these are relevant.
  4. +
  5. Similarly, feel free to explore various activations functions in deep learning and various approachs to stochastic gradient descent approaches.
  6. +
  7. If possible, you should link the data sets with exisiting research and analyses thereof. Scientific articles which have used Machine Learning algorithms to analyze the data are highly welcome. Perhaps you can improve previous analyses and even publish a new article?
  8. +
  9. A critical assessment of the methods with ditto perspectives and recommendations is also something you need to include.
  10. +
+ +All in all, the report should follow the same pattern as the two previous ones, with abstract, introduction, methods, code, results, conclusions etc.. + +

+We propose also an alternative to the above. This is a project on using machine learning methods (neural networks mainly) to the solution of ordinary differential equations and partial differential equations, with a final twist on how to diagonalize a symmetric matrix with neural networks.. + +

+This is a field with a large interest recently, spanning from studies of turbulence in fluid mechanics and meteorology to the solution of quantum mechanical systems. As reading background you can use the slides from week 43 and/or the textbook by Yadav et al. + +

The basic structure of your project

+ +

+Here follows a set up on how to structure your report and analyze the data you have opted for. + +

Part a)

+ +

+The first part deals with structuring and reading the data, much along the same lines as done in projects 1 and 2. Explain how the data are produced and place them in a proper context. + +

Part b)

+ +

+You need to include at least two central algorithms, or as an alternative explore methods from decisions tree to bagging, random forests and boosting. Explain the basics of the methods you have chosen to work with. This would be your theory part. + +

Part c)

+ +

+Then describe your algorithm and its implementation and tests you have performed. + +

Part d)

+ +

+Then presents your results and findings, link with existing literature and more. + +

Part e)

+ +

+Finally, here you should present a critical assessment of the methods you have studied and link your results with the existing literature. + +

Solving partial differential equations with neural networks

+ +

+For this variant of project 3, we will assume that you have some +background in the solution of partial differential equations using +finite difference schemes. We will study the solution of the diffusion +equation in one dimension using a standard explicit scheme and neural +networks to solve the same equations. + +

+For the explicit scheme, you can study for example chapter 10 of the lecture notes in Computational Physics or alternative sources. For the solution of ordinary and partial differential equations using neural networks, the lectures by Kristine Baluka Hein at this course are highly recommended. + +

+For the machine learning part you can use your own code from project 2 or the functionality of for example Tensorflow/Keras.. + +

Part a), setting up the problem

+ +

+The physical problem can be that of the temperature gradient in a rod of length \( L=1 \) at \( x=0 \) and \( x=1 \). +We are looking at a one-dimensional +problem + +$$ +\begin{equation*} + \frac{\partial^2 u(x,t)}{\partial x^2} =\frac{\partial u(x,t)}{\partial t}, t> 0, x\in [0,L] +\end{equation*} +$$ + +or + +$$ +\begin{equation*} +u_{xx} = u_t, +\end{equation*} +$$ + +with initial conditions, i.e., the conditions at \( t=0 \), +$$ +\begin{equation*} +u(x,0)= \sin{(\pi x)} \hspace{0.5cm} 0 < x < L, +\end{equation*} +$$ + +with \( L=1 \) the length of the \( x \)-region of interest. The +boundary conditions are + +$$ +\begin{equation*} +u(0,t)= 0 \hspace{0.5cm} t \ge 0, +\end{equation*} +$$ + +and + +$$ +\begin{equation*} +u(L,t)= 0 \hspace{0.5cm} t \ge 0. +\end{equation*} +$$ + +The function \( u(x,t) \) can be the temperature gradient of a rod. +As time increases, the velocity approaches a linear variation with \( x \). + +

+We will limit ourselves to the so-called explicit forward Euler algorithm with discretized versions of time given by a forward formula and a centered difference in space resulting in +$$ +\begin{equation*} +u_t\approx \frac{u(x,t+\Delta t)-u(x,t)}{\Delta t}=\frac{u(x_i,t_j+\Delta t)-u(x_i,t_j)}{\Delta t} +\end{equation*} +$$ + +and + +$$ +\begin{equation*} +u_{xx}\approx \frac{u(x+\Delta x,t)-2u(x,t)+u(x-\Delta x,t)}{\Delta x^2}, +\end{equation*} +$$ + +or + +$$ +\begin{equation*} +u_{xx}\approx \frac{u(x_i+\Delta x,t_j)-2u(x_i,t_j)+u(x_i-\Delta x,t_j)}{\Delta x^2}. +\end{equation*} +$$ + +

+Write down the algorithm and the equations you need to implement. +Find also the analytical solution to the problem. + +

Part b)

+ +

+Implement the explicit scheme algorithm and perform tests of the solution +for \( \Delta x=1/10 \), \( \Delta x=1/100 \) using \( \Delta t \) as dictated by the stability limit of the explicit scheme. The stability criterion for the explicit scheme requires that \( \Delta t/\Delta x^2 \leq 1/2 \). + +

+Study the solutions at two time points \( t_1 \) and \( t_2 \) where \( u(x,t_1) \) is smooth but still significantly curved +and \( u(x,t_2) \) is almost linear, close to the stationary state. + +

Part c) Neural networks

+ +

+Study now the lecture notes on solving ODEs and PDEs with neural +network and use either your own code from project 2 or the +functionality of tensorflow/keras to solve the same equation as in +part b). Discuss your results and compare them with the standard +explicit scheme. Include also the analytical solution and compare with +that. + +

Part d) Solving eigenvalue problems

+ +

+Follow the discussion in the work of Yi et al. in the article from +Computers and Mathematics with Applications 47, 1155 (2004), and +use your differential equation solver with neural networks, set up a +simple square, real and symmetric \( 6\times 6 \) matrix and find the +eigenvalues. Compare with the solution from numerical diagonalization with standard eigenvalue solvers from linear algebra. + +

Part e)

+ +

+Finally, present a critical assessment of the methods you have studied and discuss the potential for the solving differential equations and eigenvalue problems with machine learning methods. + +

Introduction to numerical projects

+ +

+Here follows a brief recipe and recommendation on how to write a report for each +project. + +

+ +

Introduction to numerical projects

+ +

+Here follows a brief recipe and recommendation on how to write a report for each +project. + +

+ +

Format for electronic delivery of report and programs

+ +

+The preferred format for the report is a PDF file. You can also use DOC or postscript formats or as an ipython notebook file. As programming language we prefer that you choose between C/C++, Fortran2008 or Python. The following prescription should be followed when preparing the report: + +

+ +Finally, +we encourage you to collaborate. Optimal working groups consist of +2-3 students. You can then hand in a common report. + +

Software and needed installations

+ +

+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 pip as + +

    +
  1. pip install numpy scipy matplotlib ipython scikit-learn tensorflow sympy pandas pillow
  2. +
+ +For Python3, replace pip with pip3. + +

+See below for a discussion of tensorflow and scikit-learn. + +

+For OSX users we recommend also, after having installed Xcode, to install brew. Brew allows +for a seamless installation of additional software via for example + +

    +
  1. brew install python3
  2. +
+ +For Linux users, with its variety of distributions like for example the widely popular Ubuntu distribution +you can use pip as well and simply install Python as + +
    +
  1. sudo apt-get install python3 (or python for python2.7)
  2. +
+ +etc etc. + +

+If you don't want to install various Python packages with their dependencies separately, we recommend two widely used distrubutions which set up all relevant dependencies for Python, namely + +

    +
  1. Anaconda Anaconda 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 conda
  2. +
  3. Enthought canopy is a Python distribution for scientific and analytic computing distribution and analysis environment, available for free and under a commercial license.
  4. +
+ +Popular software packages written in Python for ML are + + + +These are all freely available at their respective GitHub sites. They +encompass communities of developers in the thousands or more. And the number +of code developers and contributors keeps increasing. + +

+ + + + +

+ © 1999-2020, "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 +
+ + + + + + diff --git a/doc/Projects/2020/Project3/ipynb/Project3.ipynb b/doc/Projects/2020/Project3/ipynb/Project3.ipynb new file mode 100644 index 000000000..d00e357db --- /dev/null +++ b/doc/Projects/2020/Project3/ipynb/Project3.ipynb @@ -0,0 +1,364 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Project 3 on Machine Learning, deadline December 14\n", + "\n", + " \n", + "**[Data Analysis and Machine Learning FYS-STK3155/FYS4155](http://www.uio.no/studier/emner/matnat/fys/FYS3155/index-eng.html)**, Department of Physics, University of Oslo, Norway\n", + "\n", + "Date: **Nov 11, 2020**\n", + "\n", + "Copyright 1999-2020, [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\n", + "\n", + "\n", + "\n", + "\n", + "# Paths for project 3\n", + "\n", + "## Defining the data sets to analyze yourself\n", + "\n", + "For project 3, you can propose own data sets that relate to your research interests or just use existing data sets from say\n", + "1. [Kaggle](https://www.kaggle.com/datasets) \n", + "\n", + "2. The [University of California at Irvine (UCI) with its machine learning repository](http://archive.ics.uci.edu/ml/datasets.html)\n", + "\n", + "The approach to the analysis of these new data sets should follow to a large extent what you did in projects 1 and 2. That is:\n", + "1. Whether you end up with a regression or a classification problem, you should employ at least two of the methods we have discussed among **linear regression (including Ridge and Lasso)**, **Logistic Regression**, **Neural Networks**, **Convolution Neural Networks**, **Recurrent Neural Networks**, **Support Vector Machines** and **Decision Trees, Random Forests**, **Bagging and Boosting**. You could for example explore all of the approaches from decision trees, via bagging and voting classifiers, to random forests, boosting and finally XGboost. If you wish to venture into **convolutional neural networks** or **recurrent neural networks**, or extensions of neural networkds, feel free to do so. \n", + "\n", + "For Boosting, feel also free to write your own codes.\n", + "\n", + "1. For project 3, you should feel free to use your own codes from projects 1 and 2, eventually write your own for SVMs and/or Decision trees/random forests/bagging/boosting' or use the available functionality of **Scikit-Learn**, **Tensorflow**, etc. \n", + "\n", + "2. The estimates you used and tested in projects 1 and 2 should also be included, that is the $R2$-score, **MSE**, confusion matrix, accuracy score, information gain, ROC and Cumulative gains curves and other, cross-validation and/or bootstrap if these are relevant.\n", + "\n", + "3. Similarly, feel free to explore various activations functions in deep learning and various approachs to stochastic gradient descent approaches.\n", + "\n", + "4. If possible, you should link the data sets with exisiting research and analyses thereof. Scientific articles which have used Machine Learning algorithms to analyze the data are highly welcome. Perhaps you can improve previous analyses and even publish a new article? \n", + "\n", + "5. A critical assessment of the methods with ditto perspectives and recommendations is also something you need to include.\n", + "\n", + "All in all, the report should follow the same pattern as the two previous ones, with abstract, introduction, methods, code, results, conclusions etc.. \n", + "\n", + "We propose also an alternative to the above. This is a project on using machine learning methods (neural networks mainly) to the solution of ordinary differential equations and partial differential equations, with a final twist on how to diagonalize a symmetric matrix with neural networks.. \n", + "\n", + "This is a field with a large interest recently, spanning from studies of turbulence in fluid mechanics and meteorology to the solution of quantum mechanical systems. As reading background you can use the slides [from week 43](https://compphysics.github.io/MachineLearning/doc/pub/week43/html/week43.html) and/or the textbook by [Yadav et al](https://www.springer.com/gp/book/9789401798150).\n", + "\n", + "## The basic structure of your project\n", + "\n", + "Here follows a set up on how to structure your report and analyze the data you have opted for.\n", + "\n", + "### Part a)\n", + "\n", + "The first part deals with structuring and reading the data, much along the same lines as done in projects 1 and 2. Explain how the data are produced and place them in a proper context.\n", + "\n", + "### Part b)\n", + "\n", + "You need to include at least two central algorithms, or as an alternative explore methods from decisions tree to bagging, random forests and boosting. Explain the basics of the methods you have chosen to work with. This would be your theory part.\n", + "\n", + "\n", + "### Part c)\n", + "\n", + "Then describe your algorithm and its implementation and tests you have performed.\n", + "\n", + "### Part d)\n", + "\n", + "Then presents your results and findings, link with existing literature and more.\n", + "\n", + "### Part e)\n", + "\n", + "Finally, here you should present a critical assessment of the methods you have studied and link your results with the existing literature. \n", + "\n", + "## Solving partial differential equations with neural networks\n", + "\n", + "For this variant of project 3, we will assume that you have some\n", + "background in the solution of partial differential equations using\n", + "finite difference schemes. We will study the solution of the diffusion\n", + "equation in one dimension using a standard explicit scheme and neural\n", + "networks to solve the same equations.\n", + "\n", + "For the explicit scheme, you can study for example chapter 10 of the lecture notes in [Computational Physics](https://github.com/CompPhysics/ComputationalPhysics/blob/master/doc/Lectures/lectures2015.pdf) or alternative sources. For the solution of ordinary and partial differential equations using neural networks, the lectures by [Kristine Baluka Hein](https://compphysics.github.io/MachineLearning/doc/pub/odenn/html/odenn-bs.html) at this course are highly recommended.\n", + "\n", + "For the machine learning part you can use your own code from project 2 or the functionality of for example **Tensorflow/Keras**.. \n", + "\n", + "### Part a), setting up the problem\n", + "\n", + "The physical problem can be that of the temperature gradient in a rod of length $L=1$ at $x=0$ and $x=1$.\n", + "We are looking at a one-dimensional\n", + "problem" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial^2 u(x,t)}{\\partial x^2} =\\frac{\\partial u(x,t)}{\\partial t}, t> 0, x\\in [0,L]\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "or" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "u_{xx} = u_t,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "with initial conditions, i.e., the conditions at $t=0$," + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "u(x,0)= \\sin{(\\pi x)} \\hspace{0.5cm} 0 < x < L,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "with $L=1$ the length of the $x$-region of interest. The \n", + "boundary conditions are" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "u(0,t)= 0 \\hspace{0.5cm} t \\ge 0,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "u(L,t)= 0 \\hspace{0.5cm} t \\ge 0.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The function $u(x,t)$ can be the temperature gradient of a rod.\n", + "As time increases, the velocity approaches a linear variation with $x$. \n", + "\n", + "We will limit ourselves to the so-called explicit forward Euler algorithm with discretized versions of time given by a forward formula and a centered difference in space resulting in" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "u_t\\approx \\frac{u(x,t+\\Delta t)-u(x,t)}{\\Delta t}=\\frac{u(x_i,t_j+\\Delta t)-u(x_i,t_j)}{\\Delta t}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "u_{xx}\\approx \\frac{u(x+\\Delta x,t)-2u(x,t)+u(x-\\Delta x,t)}{\\Delta x^2},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "or" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "u_{xx}\\approx \\frac{u(x_i+\\Delta x,t_j)-2u(x_i,t_j)+u(x_i-\\Delta x,t_j)}{\\Delta x^2}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Write down the algorithm and the equations you need to implement.\n", + "Find also the analytical solution to the problem. \n", + "\n", + "### Part b)\n", + "\n", + "Implement the explicit scheme algorithm and perform tests of the solution \n", + "for $\\Delta x=1/10$, $\\Delta x=1/100$ using $\\Delta t$ as dictated by the stability limit of the explicit scheme. The stability criterion for the explicit scheme requires that $\\Delta t/\\Delta x^2 \\leq 1/2$. \n", + "\n", + "Study the solutions at two time points $t_1$ and $t_2$ where $u(x,t_1)$ is smooth but still significantly curved\n", + "and $u(x,t_2)$ is almost linear, close to the stationary state.\n", + "\n", + "\n", + "### Part c) Neural networks\n", + "\n", + "Study now the lecture notes on solving ODEs and PDEs with neural\n", + "network and use either your own code from project 2 or the\n", + "functionality of tensorflow/keras to solve the same equation as in\n", + "part b). Discuss your results and compare them with the standard\n", + "explicit scheme. Include also the analytical solution and compare with\n", + "that.\n", + "\n", + "\n", + "### Part d) Solving eigenvalue problems\n", + "\n", + "Follow the discussion in the work of Yi *et al.* in the article from\n", + "[Computers and Mathematics with Applications 47, 1155 (2004)](https://www.sciencedirect.com/science/article/pii/S0898122104901101), and\n", + "use your differential equation solver with neural networks, set up a\n", + "simple square, real and symmetric $6\\times 6$ matrix and find the\n", + "eigenvalues. Compare with the solution from numerical diagonalization with standard eigenvalue solvers from linear algebra.\n", + "\n", + "### Part e)\n", + "\n", + "Finally, present a critical assessment of the methods you have studied and discuss the potential for the solving differential equations and eigenvalue problems with machine learning methods. \n", + "\n", + "\n", + "## Introduction to numerical projects\n", + "\n", + "Here follows a brief recipe and recommendation on how to write a report for each\n", + "project.\n", + "\n", + " * Give a short description of the nature of the problem and the eventual numerical methods you have used.\n", + "\n", + " * Describe the algorithm you have used and/or developed. Here you may find it convenient to use pseudocoding. In many cases you can describe the algorithm in the program itself.\n", + "\n", + " * Include the source code of your program. Comment your program properly.\n", + "\n", + " * If possible, try to find analytic solutions, or known limits in order to test your program when developing the code.\n", + "\n", + " * Include your results either in figure form or in a table. Remember to label your results. All tables and figures should have relevant captions and labels on the axes.\n", + "\n", + " * Try to evaluate the reliabilty and numerical stability/precision of your results. If possible, include a qualitative and/or quantitative discussion of the numerical stability, eventual loss of precision etc.\n", + "\n", + " * Try to give an interpretation of you results in your answers to the problems.\n", + "\n", + " * Critique: if possible include your comments and reflections about the exercise, whether you felt you learnt something, ideas for improvements and other thoughts you've made when solving the exercise. We wish to keep this course at the interactive level and your comments can help us improve it.\n", + "\n", + " * Try to establish a practice where you log your work at the computerlab. You may find such a logbook very handy at later stages in your work, especially when you don't properly remember what a previous test version of your program did. Here you could also record the time spent on solving the exercise, various algorithms you may have tested or other topics which you feel worthy of mentioning.\n", + "\n", + "## Introduction to numerical projects\n", + "\n", + "Here follows a brief recipe and recommendation on how to write a report for each\n", + "project.\n", + "\n", + " * Give a short description of the nature of the problem and the eventual numerical methods you have used.\n", + "\n", + " * Describe the algorithm you have used and/or developed. Here you may find it convenient to use pseudocoding. In many cases you can describe the algorithm in the program itself.\n", + "\n", + " * Include the source code of your program. Comment your program properly.\n", + "\n", + " * If possible, try to find analytic solutions, or known limits in order to test your program when developing the code.\n", + "\n", + " * Include your results either in figure form or in a table. Remember to label your results. All tables and figures should have relevant captions and labels on the axes.\n", + "\n", + " * Try to evaluate the reliabilty and numerical stability/precision of your results. If possible, include a qualitative and/or quantitative discussion of the numerical stability, eventual loss of precision etc.\n", + "\n", + " * Try to give an interpretation of you results in your answers to the problems.\n", + "\n", + " * Critique: if possible include your comments and reflections about the exercise, whether you felt you learnt something, ideas for improvements and other thoughts you've made when solving the exercise. We wish to keep this course at the interactive level and your comments can help us improve it.\n", + "\n", + " * Try to establish a practice where you log your work at the computerlab. You may find such a logbook very handy at later stages in your work, especially when you don't properly remember what a previous test version of your program did. Here you could also record the time spent on solving the exercise, various algorithms you may have tested or other topics which you feel worthy of mentioning.\n", + "\n", + "## Format for electronic delivery of report and programs\n", + "\n", + "The preferred format for the report is a PDF file. You can also use DOC or postscript formats or as an ipython notebook file. As programming language we prefer that you choose between C/C++, Fortran2008 or Python. The following prescription should be followed when preparing the report:\n", + "\n", + " * Use Canvas to hand in your projects, log in at with your normal UiO username and password.\n", + "\n", + " * Upload **only** the report file or the link to your GitHub/GitLab or similar typo of repos! For the source code file(s) you have developed please provide us with your link to your GitHub/GitLab or similar domain. The report file should include all of your discussions and a list of the codes you have developed. Do not include library files which are available at the course homepage, unless you have made specific changes to them.\n", + "\n", + " * In your GitHub/GitLab or similar repository, please include a folder which contains selected results. These can be in the form of output from your code for a selected set of runs and input parameters.\n", + "\n", + "Finally, \n", + "we encourage you to collaborate. Optimal working groups consist of \n", + "2-3 students. You can then hand in a common report. \n", + "\n", + "\n", + "\n", + "## Software and needed installations\n", + "\n", + "If you have Python installed (we recommend Python3) and you feel pretty familiar with installing different packages, \n", + "we recommend that you install the following Python packages via **pip** as\n", + "1. pip install numpy scipy matplotlib ipython scikit-learn tensorflow sympy pandas pillow\n", + "\n", + "For Python3, replace **pip** with **pip3**.\n", + "\n", + "See below for a discussion of **tensorflow** and **scikit-learn**. \n", + "\n", + "For OSX users we recommend also, after having installed Xcode, to install **brew**. Brew allows \n", + "for a seamless installation of additional software via for example\n", + "1. brew install python3\n", + "\n", + "For Linux users, with its variety of distributions like for example the widely popular Ubuntu distribution\n", + "you can use **pip** as well and simply install Python as \n", + "1. sudo apt-get install python3 (or python for python2.7)\n", + "\n", + "etc etc. \n", + "\n", + "If you don't want to install various Python packages with their dependencies separately, we recommend two widely used distrubutions which set up all relevant dependencies for Python, namely\n", + "1. [Anaconda](https://docs.anaconda.com/) Anaconda 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 **conda**\n", + "\n", + "2. [Enthought canopy](https://www.enthought.com/product/canopy/) is a Python distribution for scientific and analytic computing distribution and analysis environment, available for free and under a commercial license.\n", + "\n", + "Popular software packages written in Python for ML are\n", + "\n", + "* [Scikit-learn](http://scikit-learn.org/stable/), \n", + "\n", + "* [Tensorflow](https://www.tensorflow.org/),\n", + "\n", + "* [PyTorch](http://pytorch.org/) and \n", + "\n", + "* [Keras](https://keras.io/).\n", + "\n", + "These are all freely available at their respective GitHub sites. They \n", + "encompass communities of developers in the thousands or more. And the number\n", + "of code developers and contributors keeps increasing." + ] + } + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/doc/Projects/2020/Project3/ipynb/ipynb-Project3-src.tar.gz b/doc/Projects/2020/Project3/ipynb/ipynb-Project3-src.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..ea82d56ce18b0fcbe893d1bc8055044c3efa4a26 GIT binary patch literal 192 zcmV;x06+g9iwFSLSFB$E1MSbv3c@f92k@Qu6nTQt+HE}x?%+Wf;tO=HbDi4EwgdO} z?gR9sco`z}cli?%LbA`+n_U*Uy9*XW2ub4@#^h--C0Wh&gi;Qa@r03t@l^_hGM2Ic z$Z{vWbk+$ooKiPZTdCj94P#aHVbA;uJo8T+YGq-Y_pU|_8l5Z<&yX8z?>JD%rx-j^OS7iCKT2mk 0, x\in [0,L] +\end{equation*} +or + +\begin{equation*} +u_{xx} = u_t, +\end{equation*} +with initial conditions, i.e., the conditions at $t=0$, +\begin{equation*} +u(x,0)= \sin{(\pi x)} \hspace{0.5cm} 0 < x < L, +\end{equation*} +with $L=1$ the length of the $x$-region of interest. The +boundary conditions are + +\begin{equation*} +u(0,t)= 0 \hspace{0.5cm} t \ge 0, +\end{equation*} +and + +\begin{equation*} +u(L,t)= 0 \hspace{0.5cm} t \ge 0. +\end{equation*} +The function $u(x,t)$ can be the temperature gradient of a rod. +As time increases, the velocity approaches a linear variation with $x$. + +We will limit ourselves to the so-called explicit forward Euler algorithm with discretized versions of time given by a forward formula and a centered difference in space resulting in +\begin{equation*} +u_t\approx \frac{u(x,t+\Delta t)-u(x,t)}{\Delta t}=\frac{u(x_i,t_j+\Delta t)-u(x_i,t_j)}{\Delta t} +\end{equation*} +and + +\begin{equation*} +u_{xx}\approx \frac{u(x+\Delta x,t)-2u(x,t)+u(x-\Delta x,t)}{\Delta x^2}, +\end{equation*} +or + +\begin{equation*} +u_{xx}\approx \frac{u(x_i+\Delta x,t_j)-2u(x_i,t_j)+u(x_i-\Delta x,t_j)}{\Delta x^2}. +\end{equation*} + +Write down the algorithm and the equations you need to implement. +Find also the analytical solution to the problem. + +\paragraph{Part b).} +Implement the explicit scheme algorithm and perform tests of the solution +for $\Delta x=1/10$, $\Delta x=1/100$ using $\Delta t$ as dictated by the stability limit of the explicit scheme. The stability criterion for the explicit scheme requires that $\Delta t/\Delta x^2 \leq 1/2$. + +Study the solutions at two time points $t_1$ and $t_2$ where $u(x,t_1)$ is smooth but still significantly curved +and $u(x,t_2)$ is almost linear, close to the stationary state. + + +\paragraph{Part c) Neural networks.} +Study now the lecture notes on solving ODEs and PDEs with neural +network and use either your own code from project 2 or the +functionality of tensorflow/keras to solve the same equation as in +part b). Discuss your results and compare them with the standard +explicit scheme. Include also the analytical solution and compare with +that. + + +\paragraph{Part d) Solving eigenvalue problems.} +Follow the discussion in the work of Yi \emph{et al.} in the article from +\href{{https://www.sciencedirect.com/science/article/pii/S0898122104901101}}{Computers and Mathematics with Applications 47, 1155 (2004)}, and +use your differential equation solver with neural networks, set up a +simple square, real and symmetric $6\times 6$ matrix and find the +eigenvalues. Compare with the solution from numerical diagonalization with standard eigenvalue solvers from linear algebra. + +\paragraph{Part e).} +Finally, present a critical assessment of the methods you have studied and discuss the potential for the solving differential equations and eigenvalue problems with machine learning methods. + + +\subsection{Introduction to numerical projects} + +Here follows a brief recipe and recommendation on how to write a report for each +project. + +\begin{itemize} + \item Give a short description of the nature of the problem and the eventual numerical methods you have used. + + \item Describe the algorithm you have used and/or developed. Here you may find it convenient to use pseudocoding. In many cases you can describe the algorithm in the program itself. + + \item Include the source code of your program. Comment your program properly. + + \item If possible, try to find analytic solutions, or known limits in order to test your program when developing the code. + + \item Include your results either in figure form or in a table. Remember to label your results. All tables and figures should have relevant captions and labels on the axes. + + \item Try to evaluate the reliabilty and numerical stability/precision of your results. If possible, include a qualitative and/or quantitative discussion of the numerical stability, eventual loss of precision etc. + + \item Try to give an interpretation of you results in your answers to the problems. + + \item Critique: if possible include your comments and reflections about the exercise, whether you felt you learnt something, ideas for improvements and other thoughts you've made when solving the exercise. We wish to keep this course at the interactive level and your comments can help us improve it. + + \item Try to establish a practice where you log your work at the computerlab. You may find such a logbook very handy at later stages in your work, especially when you don't properly remember what a previous test version of your program did. Here you could also record the time spent on solving the exercise, various algorithms you may have tested or other topics which you feel worthy of mentioning. +\end{itemize} + +\noindent +\subsection{Introduction to numerical projects} + +Here follows a brief recipe and recommendation on how to write a report for each +project. + +\begin{itemize} + \item Give a short description of the nature of the problem and the eventual numerical methods you have used. + + \item Describe the algorithm you have used and/or developed. Here you may find it convenient to use pseudocoding. In many cases you can describe the algorithm in the program itself. + + \item Include the source code of your program. Comment your program properly. + + \item If possible, try to find analytic solutions, or known limits in order to test your program when developing the code. + + \item Include your results either in figure form or in a table. Remember to label your results. All tables and figures should have relevant captions and labels on the axes. + + \item Try to evaluate the reliabilty and numerical stability/precision of your results. If possible, include a qualitative and/or quantitative discussion of the numerical stability, eventual loss of precision etc. + + \item Try to give an interpretation of you results in your answers to the problems. + + \item Critique: if possible include your comments and reflections about the exercise, whether you felt you learnt something, ideas for improvements and other thoughts you've made when solving the exercise. We wish to keep this course at the interactive level and your comments can help us improve it. + + \item Try to establish a practice where you log your work at the computerlab. You may find such a logbook very handy at later stages in your work, especially when you don't properly remember what a previous test version of your program did. Here you could also record the time spent on solving the exercise, various algorithms you may have tested or other topics which you feel worthy of mentioning. +\end{itemize} + +\noindent +\subsection{Format for electronic delivery of report and programs} + +The preferred format for the report is a PDF file. You can also use DOC or postscript formats or as an ipython notebook file. As programming language we prefer that you choose between C/C++, Fortran2008 or Python. The following prescription should be followed when preparing the report: + +\begin{itemize} + \item Use Canvas to hand in your projects, log in at \href{{https://www.uio.no/english/services/it/education/canvas/}}{\nolinkurl{https://www.uio.no/english/services/it/education/canvas/}} with your normal UiO username and password. + + \item Upload \textbf{only} the report file or the link to your GitHub/GitLab or similar typo of repos! For the source code file(s) you have developed please provide us with your link to your GitHub/GitLab or similar domain. The report file should include all of your discussions and a list of the codes you have developed. Do not include library files which are available at the course homepage, unless you have made specific changes to them. + + \item In your GitHub/GitLab or similar repository, please include a folder which contains selected results. These can be in the form of output from your code for a selected set of runs and input parameters. +\end{itemize} + +\noindent +Finally, +we encourage you to collaborate. Optimal working groups consist of +2-3 students. You can then hand in a common report. + + + +\subsection{Software and needed installations} + +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 \textbf{pip} as +\begin{enumerate} +\item pip install numpy scipy matplotlib ipython scikit-learn tensorflow sympy pandas pillow +\end{enumerate} + +\noindent +For Python3, replace \textbf{pip} with \textbf{pip3}. + +See below for a discussion of \textbf{tensorflow} and \textbf{scikit-learn}. + +For OSX users we recommend also, after having installed Xcode, to install \textbf{brew}. Brew allows +for a seamless installation of additional software via for example +\begin{enumerate} +\item brew install python3 +\end{enumerate} + +\noindent +For Linux users, with its variety of distributions like for example the widely popular Ubuntu distribution +you can use \textbf{pip} as well and simply install Python as +\begin{enumerate} +\item sudo apt-get install python3 (or python for python2.7) +\end{enumerate} + +\noindent +etc etc. + +If you don't want to install various Python packages with their dependencies separately, we recommend two widely used distrubutions which set up all relevant dependencies for Python, namely +\begin{enumerate} +\item \href{{https://docs.anaconda.com/}}{Anaconda} Anaconda 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 \textbf{conda} + +\item \href{{https://www.enthought.com/product/canopy/}}{Enthought canopy} is a Python distribution for scientific and analytic computing distribution and analysis environment, available for free and under a commercial license. +\end{enumerate} + +\noindent +Popular software packages written in Python for ML are + +\begin{itemize} +\item \href{{http://scikit-learn.org/stable/}}{Scikit-learn}, + +\item \href{{https://www.tensorflow.org/}}{Tensorflow}, + +\item \href{{http://pytorch.org/}}{PyTorch} and + +\item \href{{https://keras.io/}}{Keras}. +\end{itemize} + +\noindent +These are all freely available at their respective GitHub sites. They +encompass communities of developers in the thousands or more. And the number +of code developers and contributors keeps increasing. + + + + + +% ------------------- end of main content --------------- + +% #ifdef PREAMBLE +\end{document} +% #endif + diff --git a/doc/Projects/2020/Project3/pdf/Project3.pdf b/doc/Projects/2020/Project3/pdf/Project3.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3b34403ffea554c8efac45dbfbaa60e616449baa GIT binary patch literal 235031 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

=6*Fhr;nK`H=-qQsUnN0_Cr;ZE9jx=B=J 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

iCW-==T381_v{YJaZ2VKA9VCCW?zFi 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 literal 0 HcmV?d00001 diff --git a/doc/Projects/2020/Project3/pdf/Project3.tex b/doc/Projects/2020/Project3/pdf/Project3.tex new file mode 100644 index 000000000..5bfb593fb --- /dev/null +++ b/doc/Projects/2020/Project3/pdf/Project3.tex @@ -0,0 +1,413 @@ +%% +%% Automatically generated file from DocOnce source +%% (https://github.com/hplgit/doconce/) +%% +%% + + +%-------------------- begin preamble ---------------------- + +\documentclass[% +oneside, % oneside: electronic viewing, twoside: printing +final, % draft: marks overfull hboxes, figures with paths +10pt]{article} + +\listfiles % print all files needed to compile this document + +\usepackage{relsize,makeidx,color,setspace,amsmath,amsfonts,amssymb} +\usepackage[table]{xcolor} +\usepackage{bm,ltablex,microtype} + +\usepackage[pdftex]{graphicx} + +\usepackage[T1]{fontenc} +%\usepackage[latin1]{inputenc} +\usepackage{ucs} +\usepackage[utf8x]{inputenc} + +\usepackage{lmodern} % Latin Modern fonts derived from Computer Modern + +% Hyperlinks in PDF: +\definecolor{linkcolor}{rgb}{0,0,0.4} +\usepackage{hyperref} +\hypersetup{ + breaklinks=true, + colorlinks=true, + linkcolor=linkcolor, + urlcolor=linkcolor, + citecolor=black, + filecolor=black, + %filecolor=blue, + pdfmenubar=true, + pdftoolbar=true, + bookmarksdepth=3 % Uncomment (and tweak) for PDF bookmarks with more levels than the TOC + } +%\hyperbaseurl{} % hyperlinks are relative to this root + +\setcounter{tocdepth}{2} % levels in table of contents + +% --- fancyhdr package for fancy headers --- +\usepackage{fancyhdr} +\fancyhf{} % sets both header and footer to nothing +\renewcommand{\headrulewidth}{0pt} +\fancyfoot[LE,RO]{\thepage} +% Ensure copyright on titlepage (article style) and chapter pages (book style) +\fancypagestyle{plain}{ + \fancyhf{} + \fancyfoot[C]{{\footnotesize \copyright\ 1999-2020, "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}} +% \renewcommand{\footrulewidth}{0mm} + \renewcommand{\headrulewidth}{0mm} +} +% Ensure copyright on titlepages with \thispagestyle{empty} +\fancypagestyle{empty}{ + \fancyhf{} + \fancyfoot[C]{{\footnotesize \copyright\ 1999-2020, "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}} + \renewcommand{\footrulewidth}{0mm} + \renewcommand{\headrulewidth}{0mm} +} + +\pagestyle{fancy} + + +% prevent orhpans and widows +\clubpenalty = 10000 +\widowpenalty = 10000 + +% --- end of standard preamble for documents --- + + +% insert custom LaTeX commands... + +\raggedbottom +\makeindex +\usepackage[totoc]{idxlayout} % for index in the toc +\usepackage[nottoc]{tocbibind} % for references/bibliography in the toc + +%-------------------- end preamble ---------------------- + +\begin{document} + +% matching end for #ifdef PREAMBLE + +\newcommand{\exercisesection}[1]{\subsection*{#1}} + + +% ------------------- main content ---------------------- + + + +% ----------------- title ------------------------- + +\thispagestyle{empty} + +\begin{center} +{\LARGE\bf +\begin{spacing}{1.25} +Project 3 on Machine Learning, deadline December 14 +\end{spacing} +} +\end{center} + +% ----------------- author(s) ------------------------- + +\begin{center} +{\bf \href{{http://www.uio.no/studier/emner/matnat/fys/FYS3155/index-eng.html}}{Data Analysis and Machine Learning FYS-STK3155/FYS4155}} +\end{center} + + \begin{center} +% List of all institutions: +\centerline{{\small Department of Physics, University of Oslo, Norway}} +\end{center} + +% ----------------- end author(s) ------------------------- + +% --- begin date --- +\begin{center} +Nov 11, 2020 +\end{center} +% --- end date --- + +\vspace{1cm} + + +\section*{Paths for project 3} + +\subsection*{Defining the data sets to analyze yourself} + +For project 3, you can propose own data sets that relate to your research interests or just use existing data sets from say +\begin{enumerate} +\item \href{{https://www.kaggle.com/datasets}}{Kaggle} + +\item The \href{{http://archive.ics.uci.edu/ml/datasets.html}}{University of California at Irvine (UCI) with its machine learning repository} +\end{enumerate} + +\noindent +The approach to the analysis of these new data sets should follow to a large extent what you did in projects 1 and 2. That is: +\begin{enumerate} +\item Whether you end up with a regression or a classification problem, you should employ at least two of the methods we have discussed among \textbf{linear regression (including Ridge and Lasso)}, \textbf{Logistic Regression}, \textbf{Neural Networks}, \textbf{Convolution Neural Networks}, \textbf{Recurrent Neural Networks}, \textbf{Support Vector Machines} and \textbf{Decision Trees, Random Forests}, \textbf{Bagging and Boosting}. You could for example explore all of the approaches from decision trees, via bagging and voting classifiers, to random forests, boosting and finally XGboost. If you wish to venture into \textbf{convolutional neural networks} or \textbf{recurrent neural networks}, or extensions of neural networkds, feel free to do so. +\end{enumerate} + +\noindent +For Boosting, feel also free to write your own codes. + +\begin{enumerate} +\item For project 3, you should feel free to use your own codes from projects 1 and 2, eventually write your own for SVMs and/or Decision trees/random forests/bagging/boosting' or use the available functionality of \textbf{Scikit-Learn}, \textbf{Tensorflow}, etc. + +\item The estimates you used and tested in projects 1 and 2 should also be included, that is the $R2$-score, \textbf{MSE}, confusion matrix, accuracy score, information gain, ROC and Cumulative gains curves and other, cross-validation and/or bootstrap if these are relevant. + +\item Similarly, feel free to explore various activations functions in deep learning and various approachs to stochastic gradient descent approaches. + +\item If possible, you should link the data sets with exisiting research and analyses thereof. Scientific articles which have used Machine Learning algorithms to analyze the data are highly welcome. Perhaps you can improve previous analyses and even publish a new article? + +\item A critical assessment of the methods with ditto perspectives and recommendations is also something you need to include. +\end{enumerate} + +\noindent +All in all, the report should follow the same pattern as the two previous ones, with abstract, introduction, methods, code, results, conclusions etc.. + +We propose also an alternative to the above. This is a project on using machine learning methods (neural networks mainly) to the solution of ordinary differential equations and partial differential equations, with a final twist on how to diagonalize a symmetric matrix with neural networks.. + +This is a field with a large interest recently, spanning from studies of turbulence in fluid mechanics and meteorology to the solution of quantum mechanical systems. As reading background you can use the slides \href{{https://compphysics.github.io/MachineLearning/doc/pub/week43/html/week43.html}}{from week 43} and/or the textbook by \href{{https://www.springer.com/gp/book/9789401798150}}{Yadav et al}. + +\subsection*{The basic structure of your project} + +Here follows a set up on how to structure your report and analyze the data you have opted for. + +\paragraph{Part a).} +The first part deals with structuring and reading the data, much along the same lines as done in projects 1 and 2. Explain how the data are produced and place them in a proper context. + +\paragraph{Part b).} +You need to include at least two central algorithms, or as an alternative explore methods from decisions tree to bagging, random forests and boosting. Explain the basics of the methods you have chosen to work with. This would be your theory part. + + +\paragraph{Part c).} +Then describe your algorithm and its implementation and tests you have performed. + +\paragraph{Part d).} +Then presents your results and findings, link with existing literature and more. + +\paragraph{Part e).} +Finally, here you should present a critical assessment of the methods you have studied and link your results with the existing literature. + +\subsection*{Solving partial differential equations with neural networks} + +For this variant of project 3, we will assume that you have some +background in the solution of partial differential equations using +finite difference schemes. We will study the solution of the diffusion +equation in one dimension using a standard explicit scheme and neural +networks to solve the same equations. + +For the explicit scheme, you can study for example chapter 10 of the lecture notes in \href{{https://github.com/CompPhysics/ComputationalPhysics/blob/master/doc/Lectures/lectures2015.pdf}}{Computational Physics} or alternative sources. For the solution of ordinary and partial differential equations using neural networks, the lectures by \href{{https://compphysics.github.io/MachineLearning/doc/pub/odenn/html/odenn-bs.html}}{Kristine Baluka Hein} at this course are highly recommended. + +For the machine learning part you can use your own code from project 2 or the functionality of for example \textbf{Tensorflow/Keras}.. + +\paragraph{Part a), setting up the problem.} +The physical problem can be that of the temperature gradient in a rod of length $L=1$ at $x=0$ and $x=1$. +We are looking at a one-dimensional +problem + +\begin{equation*} + \frac{\partial^2 u(x,t)}{\partial x^2} =\frac{\partial u(x,t)}{\partial t}, t> 0, x\in [0,L] +\end{equation*} +or + +\begin{equation*} +u_{xx} = u_t, +\end{equation*} +with initial conditions, i.e., the conditions at $t=0$, +\begin{equation*} +u(x,0)= \sin{(\pi x)} \hspace{0.5cm} 0 < x < L, +\end{equation*} +with $L=1$ the length of the $x$-region of interest. The +boundary conditions are + +\begin{equation*} +u(0,t)= 0 \hspace{0.5cm} t \ge 0, +\end{equation*} +and + +\begin{equation*} +u(L,t)= 0 \hspace{0.5cm} t \ge 0. +\end{equation*} +The function $u(x,t)$ can be the temperature gradient of a rod. +As time increases, the velocity approaches a linear variation with $x$. + +We will limit ourselves to the so-called explicit forward Euler algorithm with discretized versions of time given by a forward formula and a centered difference in space resulting in +\begin{equation*} +u_t\approx \frac{u(x,t+\Delta t)-u(x,t)}{\Delta t}=\frac{u(x_i,t_j+\Delta t)-u(x_i,t_j)}{\Delta t} +\end{equation*} +and + +\begin{equation*} +u_{xx}\approx \frac{u(x+\Delta x,t)-2u(x,t)+u(x-\Delta x,t)}{\Delta x^2}, +\end{equation*} +or + +\begin{equation*} +u_{xx}\approx \frac{u(x_i+\Delta x,t_j)-2u(x_i,t_j)+u(x_i-\Delta x,t_j)}{\Delta x^2}. +\end{equation*} + +Write down the algorithm and the equations you need to implement. +Find also the analytical solution to the problem. + +\paragraph{Part b).} +Implement the explicit scheme algorithm and perform tests of the solution +for $\Delta x=1/10$, $\Delta x=1/100$ using $\Delta t$ as dictated by the stability limit of the explicit scheme. The stability criterion for the explicit scheme requires that $\Delta t/\Delta x^2 \leq 1/2$. + +Study the solutions at two time points $t_1$ and $t_2$ where $u(x,t_1)$ is smooth but still significantly curved +and $u(x,t_2)$ is almost linear, close to the stationary state. + + +\paragraph{Part c) Neural networks.} +Study now the lecture notes on solving ODEs and PDEs with neural +network and use either your own code from project 2 or the +functionality of tensorflow/keras to solve the same equation as in +part b). Discuss your results and compare them with the standard +explicit scheme. Include also the analytical solution and compare with +that. + + +\paragraph{Part d) Solving eigenvalue problems.} +Follow the discussion in the work of Yi \emph{et al.} in the article from +\href{{https://www.sciencedirect.com/science/article/pii/S0898122104901101}}{Computers and Mathematics with Applications 47, 1155 (2004)}, and +use your differential equation solver with neural networks, set up a +simple square, real and symmetric $6\times 6$ matrix and find the +eigenvalues. Compare with the solution from numerical diagonalization with standard eigenvalue solvers from linear algebra. + +\paragraph{Part e).} +Finally, present a critical assessment of the methods you have studied and discuss the potential for the solving differential equations and eigenvalue problems with machine learning methods. + + +\subsection*{Introduction to numerical projects} + +Here follows a brief recipe and recommendation on how to write a report for each +project. + +\begin{itemize} + \item Give a short description of the nature of the problem and the eventual numerical methods you have used. + + \item Describe the algorithm you have used and/or developed. Here you may find it convenient to use pseudocoding. In many cases you can describe the algorithm in the program itself. + + \item Include the source code of your program. Comment your program properly. + + \item If possible, try to find analytic solutions, or known limits in order to test your program when developing the code. + + \item Include your results either in figure form or in a table. Remember to label your results. All tables and figures should have relevant captions and labels on the axes. + + \item Try to evaluate the reliabilty and numerical stability/precision of your results. If possible, include a qualitative and/or quantitative discussion of the numerical stability, eventual loss of precision etc. + + \item Try to give an interpretation of you results in your answers to the problems. + + \item Critique: if possible include your comments and reflections about the exercise, whether you felt you learnt something, ideas for improvements and other thoughts you've made when solving the exercise. We wish to keep this course at the interactive level and your comments can help us improve it. + + \item Try to establish a practice where you log your work at the computerlab. You may find such a logbook very handy at later stages in your work, especially when you don't properly remember what a previous test version of your program did. Here you could also record the time spent on solving the exercise, various algorithms you may have tested or other topics which you feel worthy of mentioning. +\end{itemize} + +\noindent +\subsection*{Introduction to numerical projects} + +Here follows a brief recipe and recommendation on how to write a report for each +project. + +\begin{itemize} + \item Give a short description of the nature of the problem and the eventual numerical methods you have used. + + \item Describe the algorithm you have used and/or developed. Here you may find it convenient to use pseudocoding. In many cases you can describe the algorithm in the program itself. + + \item Include the source code of your program. Comment your program properly. + + \item If possible, try to find analytic solutions, or known limits in order to test your program when developing the code. + + \item Include your results either in figure form or in a table. Remember to label your results. All tables and figures should have relevant captions and labels on the axes. + + \item Try to evaluate the reliabilty and numerical stability/precision of your results. If possible, include a qualitative and/or quantitative discussion of the numerical stability, eventual loss of precision etc. + + \item Try to give an interpretation of you results in your answers to the problems. + + \item Critique: if possible include your comments and reflections about the exercise, whether you felt you learnt something, ideas for improvements and other thoughts you've made when solving the exercise. We wish to keep this course at the interactive level and your comments can help us improve it. + + \item Try to establish a practice where you log your work at the computerlab. You may find such a logbook very handy at later stages in your work, especially when you don't properly remember what a previous test version of your program did. Here you could also record the time spent on solving the exercise, various algorithms you may have tested or other topics which you feel worthy of mentioning. +\end{itemize} + +\noindent +\subsection*{Format for electronic delivery of report and programs} + +The preferred format for the report is a PDF file. You can also use DOC or postscript formats or as an ipython notebook file. As programming language we prefer that you choose between C/C++, Fortran2008 or Python. The following prescription should be followed when preparing the report: + +\begin{itemize} + \item Use Canvas to hand in your projects, log in at \href{{https://www.uio.no/english/services/it/education/canvas/}}{\nolinkurl{https://www.uio.no/english/services/it/education/canvas/}} with your normal UiO username and password. + + \item Upload \textbf{only} the report file or the link to your GitHub/GitLab or similar typo of repos! For the source code file(s) you have developed please provide us with your link to your GitHub/GitLab or similar domain. The report file should include all of your discussions and a list of the codes you have developed. Do not include library files which are available at the course homepage, unless you have made specific changes to them. + + \item In your GitHub/GitLab or similar repository, please include a folder which contains selected results. These can be in the form of output from your code for a selected set of runs and input parameters. +\end{itemize} + +\noindent +Finally, +we encourage you to collaborate. Optimal working groups consist of +2-3 students. You can then hand in a common report. + + + +\subsection*{Software and needed installations} + +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 \textbf{pip} as +\begin{enumerate} +\item pip install numpy scipy matplotlib ipython scikit-learn tensorflow sympy pandas pillow +\end{enumerate} + +\noindent +For Python3, replace \textbf{pip} with \textbf{pip3}. + +See below for a discussion of \textbf{tensorflow} and \textbf{scikit-learn}. + +For OSX users we recommend also, after having installed Xcode, to install \textbf{brew}. Brew allows +for a seamless installation of additional software via for example +\begin{enumerate} +\item brew install python3 +\end{enumerate} + +\noindent +For Linux users, with its variety of distributions like for example the widely popular Ubuntu distribution +you can use \textbf{pip} as well and simply install Python as +\begin{enumerate} +\item sudo apt-get install python3 (or python for python2.7) +\end{enumerate} + +\noindent +etc etc. + +If you don't want to install various Python packages with their dependencies separately, we recommend two widely used distrubutions which set up all relevant dependencies for Python, namely +\begin{enumerate} +\item \href{{https://docs.anaconda.com/}}{Anaconda} Anaconda 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 \textbf{conda} + +\item \href{{https://www.enthought.com/product/canopy/}}{Enthought canopy} is a Python distribution for scientific and analytic computing distribution and analysis environment, available for free and under a commercial license. +\end{enumerate} + +\noindent +Popular software packages written in Python for ML are + +\begin{itemize} +\item \href{{http://scikit-learn.org/stable/}}{Scikit-learn}, + +\item \href{{https://www.tensorflow.org/}}{Tensorflow}, + +\item \href{{http://pytorch.org/}}{PyTorch} and + +\item \href{{https://keras.io/}}{Keras}. +\end{itemize} + +\noindent +These are all freely available at their respective GitHub sites. They +encompass communities of developers in the thousands or more. And the number +of code developers and contributors keeps increasing. + + + + + +% ------------------- end of main content --------------- + +\end{document} +