From 9923bb2339dbbb0a9887465d83a12700c58201f8 Mon Sep 17 00:00:00 2001 From: Morten Hjorth-Jensen Date: Sun, 8 Oct 2023 22:05:04 +0200 Subject: [PATCH] setting up p2 --- .../2023/Project2/html/._Project2-bs000.html | 398 ++++++++++++++++ .../2023/Project2/html/Project2-bs.html | 398 ++++++++++++++++ doc/Projects/2023/Project2/html/Project2.html | 423 ++++++++++++++++++ .../2023/Project2/ipynb/Project2.ipynb | 349 +++++++++++++++ .../Project2/ipynb/ipynb-Project2-src.tar.gz | Bin 0 -> 193 bytes doc/Projects/2023/Project2/pdf/Project2.p.tex | 398 ++++++++++++++++ doc/Projects/2023/Project2/pdf/Project2.pdf | Bin 0 -> 250462 bytes doc/Projects/2023/Project2/pdf/Project2.tex | 370 +++++++++++++++ .../Projects/2023/Project2/Project2.do.txt | 245 ++++++++++ doc/src/Projects/2023/Project2/clean.sh | 3 + doc/src/Projects/2023/Project2/make.sh | 87 ++++ 11 files changed, 2671 insertions(+) create mode 100644 doc/Projects/2023/Project2/html/._Project2-bs000.html create mode 100644 doc/Projects/2023/Project2/html/Project2-bs.html create mode 100644 doc/Projects/2023/Project2/html/Project2.html create mode 100644 doc/Projects/2023/Project2/ipynb/Project2.ipynb create mode 100644 doc/Projects/2023/Project2/ipynb/ipynb-Project2-src.tar.gz create mode 100644 doc/Projects/2023/Project2/pdf/Project2.p.tex create mode 100644 doc/Projects/2023/Project2/pdf/Project2.pdf create mode 100644 doc/Projects/2023/Project2/pdf/Project2.tex create mode 100644 doc/src/Projects/2023/Project2/Project2.do.txt create mode 100755 doc/src/Projects/2023/Project2/clean.sh create mode 100755 doc/src/Projects/2023/Project2/make.sh diff --git a/doc/Projects/2023/Project2/html/._Project2-bs000.html b/doc/Projects/2023/Project2/html/._Project2-bs000.html new file mode 100644 index 000000000..7c501d743 --- /dev/null +++ b/doc/Projects/2023/Project2/html/._Project2-bs000.html @@ -0,0 +1,398 @@ + + + + + + + +Project 2 on Machine Learning, deadline November 13 (Midnight) + + + + + + + + + + + + + + + + + + + + +
+

 

 

 

+ + +
+
+

Project 2 on Machine Learning, deadline November 13 (Midnight)

+
+ + +
+Data Analysis and Machine Learning FYS-STK3155/FYS4155 +
+ +
+Department of Physics, University of Oslo, Norway +
+
+
+

Oct 8, 2023

+
+
+ + +
+

Classification and Regression, from linear and logistic regression to neural networks

+ +

The main aim of this project is to study both classification and +regression problems by developing our own feed-forward neural network +(FFNN) code. We can reuse the regression algorithms studied in project +1. We will also include logistic regression for classification +problems and write our own FFNN code for studying both regression and +classification problems. The codes developed in project 1, including +bootstrap and/or cross-validation as well as the computation of the +mean-squared error and/or the \( R2 \) or the accuracy score +(classification problems) functions can also be utilized in the +present analysis. +

+ +

The data sets that we propose here are (the default sets)

+ + +

You can find more information about this at the Scikit-Learn site or at the University of California at Irvine.

+ +

However, if you would like to study other data sets, feel free to +propose other sets. What we list here are mere suggestions from our +side. If you opt for another data set, consider using a set which has +been studied in the scientific literature. This makes it easier for +you to compare and analyze your results. Comparing with existing +results from the scientific literature is also an essential element of +the scientific discussion. The University of California at Irvine +with its Machine Learning repository at +https://archive.ics.uci.edu/ml/index.php is an excellent site to +look up for examples and +inspiration. Kaggle.com is an equally +interesting site. Feel free to explore these sites. +

+ +

We will start with a regression problem and we will reuse our codes from project 1 starting with writing our own Stochastic Gradient Descent (SGD) code.

+

Part a): Write your own Stochastic Gradient Descent code, first step

+ +

In order to get started, we will now replace in our standard ordinary +least squares (OLS) and Ridge regression codes (from project 1) the +matrix inversion algorithm with our own gradient descent (GD) and SGD +codes. You can use the Franke function or the terrain data from +project 1. However, we recommend using a simpler function like +\( f(x)=a_0+a_1x+a_2x^2 \) or higher-order one-dimensional polynomials. +You can obviously test your final codes against for example the Franke +function. +

+ +

You should include in your analysis of the GD and SGD codes the following elements

+
    +
  1. A plain gradient descent with a fixed learning rate (you will need to tune it).
  2. +
  3. Add momentum to the plain GD code and compare convergence with a fixed learning rate (you may need to tune the learning rate).
  4. +
  5. Repeat these steps for stochastic gradient descent with mini batches and a given number of epochs. Use a tunable learning rate as discussed in the lectures from week 39. Discuss the results as functions of the various parameters (size of batches, number of epochs etc)
  6. +
  7. Implement the Adagrad method in order to tune the learning rate. Do this with and without momentum for plain gradient descent and SGD.
  8. +
  9. Add RMSprop and Adam to your library of methods for tuning the learning rate.
  10. +
+

The lecture notes from week 39 contain more +details and code examples. Feel free to use these examples. +

+ +

In summary, you should +perform an analysis of the results for OLS and Ridge regression as +function of the chosen learning rates, the number of mini-batches and +epochs as well as algorithm for scaling the learning rate. You can +also compare your own results with those that can be obtained using +for example Scikit-Learn's various SGD options. Discuss your +results. For Ridge regression you need now to study the results as functions of the hyper-parameter \( \lambda \) and +the learning rate \( \eta \). Discuss your results. +

+ +

You will need your SGD code for the setup of the Neural Network and +Logistic Regression codes. You will find the Python Seaborn +package +useful when plotting the results as function of the learning rate +\( \eta \) and the hyper-parameter \( \lambda \) when you use Ridge +regression. +

+ +

We recommend reading chapter 8 on optimization from the textbook of Goodfellow, Bengio and Courville. This chapter contains many useful insights and discussions on the optimization part of machine learning.

+

Part b): Writing your own Neural Network code

+ +

Your aim now, and this is the central part of this project, is to +write your own Feed Forward Neural Network code implementing the back +propagation algorithm discussed in the lecture slides from week 40 and +week 41. +

+ +

We will focus on a regression problem first and study either the simple second-order polynomial from part a) or the +Franke function or terrain data (or both or other data sets) from +project 1. +

+ +

Discuss again your choice of cost function.

+ +

Write an FFNN code for regression with a flexible number of hidden +layers and nodes using the Sigmoid function as activation function for +the hidden layers. Initialize the weights using a normal +distribution. How would you initialize the biases? And which +activation function would you select for the final output layer? +

+ +

Train your network and compare the results with those from your OLS and Ridge Regression codes from project 1 if you use the Franke function or the terrain data. +You should test your results against a similar code using Scikit-Learn (see the examples in the above lecture notes from week 41) or tensorflow/keras. +

+ +

Comment your results and give a critical discussion of the results +obtained with the Linear Regression code and your own Neural Network +code. +Make an analysis of the regularization parameters and the learning rates employed to find the optimal MSE and \( R2 \) scores. +

+ +

A useful reference on the back progagation algorithm is Nielsen's +book. It is an excellent +read. +

+

Part c): Testing different activation functions

+ +

You should now also test different activation functions for the hidden layers. Try out the Sigmoid, the RELU and the Leaky RELU functions and discuss your results. You may also study the way you initialize your weights and biases.

+

Part d): Classification analysis using neural networks

+ +

With a well-written code it should now be easy to change the +activation function for the output layer. +

+ +

Here we will change the cost function for our neural network code +developed in parts b) and c) in order to perform a classification analysis. +

+ +

We will here study the Wisconsin Breast Cancer data set. This is a typical binary classification problem with just one single output, either True or Fale, \( 0 \) or \( 1 \) etc. +You find more information about this at the Scikit-Learn +site or at the University of California +at Irvine. +

+ +

To measure the performance of our classification problem we use the +so-called accuracy score. The accuracy is as you would expect just +the number of correctly guessed targets \( t_i \) divided by the total +number of targets, that is +

+ +$$ +\text{Accuracy} = \frac{\sum_{i=1}^n I(t_i = y_i)}{n} , +$$ + +

where \( I \) is the indicator function, \( 1 \) if \( t_i = y_i \) and \( 0 \) +otherwise if we have a binary classification problem. Here \( t_i \) +represents the target and \( y_i \) the outputs of your FFNN code and \( n \) is simply the number of targets \( t_i \). +

+ +

Discuss your results and give a critical analysis of the various parameters, including hyper-parameters like the learning rates and the regularization parameter \( \lambda \) (as you did in Ridge Regression), various activation functions, number of hidden layers and nodes and activation functions.

+ +

As stated in the introduction, it can also be useful to study other +datasets. +

+ +

Again, we strongly recommend that you compare your own neural Network +code for classification and pertinent results against a similar code using Scikit-Learn or tensorflow/keras or pytorch. +

+

Part e): Write your Logistic Regression code, final step

+ +

Finally, we want to compare the FFNN code we have developed with +Logistic regression, that is we wish to compare our neural network +classification results with the results we can obtain with another +method. +

+ +

Define your cost function and the design matrix before you start writing your code. +Write thereafter a Logistic regression code using your SGD algorithm. You can also use standard gradient descent in this case, with a learning rate as hyper-parameter. +Study the results as functions of the chosen learning rates. +Add also an \( l_2 \) regularization parameter \( \lambda \). Compare your results with those from your FFNN code as well as those obtained using Scikit-Learn's logistic regression functionality. +

+ +

The weblink here https://medium.com/ai-in-plain-english/comparison-between-logistic-regression-and-neural-networks-in-classifying-digits-dc5e85cd93c3compares logistic regression and FFNN using the so-called MNIST data set. You may find several useful hints and ideas from this article.

+

Part f) Critical evaluation of the various algorithms

+ +

After all these glorious calculations, you should now summarize the +various algorithms and come with a critical evaluation of their pros +and cons. Which algorithm works best for the regression case and which +is best for the classification case. These codes can also be part of +your final project 3, but now applied to other data sets. +

+

Background literature

+ +
    +
  1. The text of Michael Nielsen is highly recommended, see Nielsen's book. It is an excellent read.
  2. +
  3. The textbook of Trevor Hastie, Robert Tibshirani, Jerome H. Friedman, The Elements of Statistical Learning, Springer, chapters 3 and 7 are the most relevant ones for the analysis here.
  4. +
  5. Mehta et al, arXiv 1803.08823, A high-bias, low-variance introduction to Machine Learning for physicists, ArXiv:1803.08823.
  6. +
+
  • Goodfellow, Bengio and Courville, Deep Learning. +

    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. +

    + +

    + +

    + +
    + + + + +
    + © 1999-2023, "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/2023/Project2/html/Project2-bs.html b/doc/Projects/2023/Project2/html/Project2-bs.html new file mode 100644 index 000000000..7c501d743 --- /dev/null +++ b/doc/Projects/2023/Project2/html/Project2-bs.html @@ -0,0 +1,398 @@ + + + + + + + +Project 2 on Machine Learning, deadline November 13 (Midnight) + + + + + + + + + + + + + + + + + + + + +
    +

     

     

     

    + + +
    +
    +

    Project 2 on Machine Learning, deadline November 13 (Midnight)

    +
    + + +
    +Data Analysis and Machine Learning FYS-STK3155/FYS4155 +
    + +
    +Department of Physics, University of Oslo, Norway +
    +
    +
    +

    Oct 8, 2023

    +
    +
    + + +
    +

    Classification and Regression, from linear and logistic regression to neural networks

    + +

    The main aim of this project is to study both classification and +regression problems by developing our own feed-forward neural network +(FFNN) code. We can reuse the regression algorithms studied in project +1. We will also include logistic regression for classification +problems and write our own FFNN code for studying both regression and +classification problems. The codes developed in project 1, including +bootstrap and/or cross-validation as well as the computation of the +mean-squared error and/or the \( R2 \) or the accuracy score +(classification problems) functions can also be utilized in the +present analysis. +

    + +

    The data sets that we propose here are (the default sets)

    + + +

    You can find more information about this at the Scikit-Learn site or at the University of California at Irvine.

    + +

    However, if you would like to study other data sets, feel free to +propose other sets. What we list here are mere suggestions from our +side. If you opt for another data set, consider using a set which has +been studied in the scientific literature. This makes it easier for +you to compare and analyze your results. Comparing with existing +results from the scientific literature is also an essential element of +the scientific discussion. The University of California at Irvine +with its Machine Learning repository at +https://archive.ics.uci.edu/ml/index.php is an excellent site to +look up for examples and +inspiration. Kaggle.com is an equally +interesting site. Feel free to explore these sites. +

    + +

    We will start with a regression problem and we will reuse our codes from project 1 starting with writing our own Stochastic Gradient Descent (SGD) code.

    +

    Part a): Write your own Stochastic Gradient Descent code, first step

    + +

    In order to get started, we will now replace in our standard ordinary +least squares (OLS) and Ridge regression codes (from project 1) the +matrix inversion algorithm with our own gradient descent (GD) and SGD +codes. You can use the Franke function or the terrain data from +project 1. However, we recommend using a simpler function like +\( f(x)=a_0+a_1x+a_2x^2 \) or higher-order one-dimensional polynomials. +You can obviously test your final codes against for example the Franke +function. +

    + +

    You should include in your analysis of the GD and SGD codes the following elements

    +
      +
    1. A plain gradient descent with a fixed learning rate (you will need to tune it).
    2. +
    3. Add momentum to the plain GD code and compare convergence with a fixed learning rate (you may need to tune the learning rate).
    4. +
    5. Repeat these steps for stochastic gradient descent with mini batches and a given number of epochs. Use a tunable learning rate as discussed in the lectures from week 39. Discuss the results as functions of the various parameters (size of batches, number of epochs etc)
    6. +
    7. Implement the Adagrad method in order to tune the learning rate. Do this with and without momentum for plain gradient descent and SGD.
    8. +
    9. Add RMSprop and Adam to your library of methods for tuning the learning rate.
    10. +
    +

    The lecture notes from week 39 contain more +details and code examples. Feel free to use these examples. +

    + +

    In summary, you should +perform an analysis of the results for OLS and Ridge regression as +function of the chosen learning rates, the number of mini-batches and +epochs as well as algorithm for scaling the learning rate. You can +also compare your own results with those that can be obtained using +for example Scikit-Learn's various SGD options. Discuss your +results. For Ridge regression you need now to study the results as functions of the hyper-parameter \( \lambda \) and +the learning rate \( \eta \). Discuss your results. +

    + +

    You will need your SGD code for the setup of the Neural Network and +Logistic Regression codes. You will find the Python Seaborn +package +useful when plotting the results as function of the learning rate +\( \eta \) and the hyper-parameter \( \lambda \) when you use Ridge +regression. +

    + +

    We recommend reading chapter 8 on optimization from the textbook of Goodfellow, Bengio and Courville. This chapter contains many useful insights and discussions on the optimization part of machine learning.

    +

    Part b): Writing your own Neural Network code

    + +

    Your aim now, and this is the central part of this project, is to +write your own Feed Forward Neural Network code implementing the back +propagation algorithm discussed in the lecture slides from week 40 and +week 41. +

    + +

    We will focus on a regression problem first and study either the simple second-order polynomial from part a) or the +Franke function or terrain data (or both or other data sets) from +project 1. +

    + +

    Discuss again your choice of cost function.

    + +

    Write an FFNN code for regression with a flexible number of hidden +layers and nodes using the Sigmoid function as activation function for +the hidden layers. Initialize the weights using a normal +distribution. How would you initialize the biases? And which +activation function would you select for the final output layer? +

    + +

    Train your network and compare the results with those from your OLS and Ridge Regression codes from project 1 if you use the Franke function or the terrain data. +You should test your results against a similar code using Scikit-Learn (see the examples in the above lecture notes from week 41) or tensorflow/keras. +

    + +

    Comment your results and give a critical discussion of the results +obtained with the Linear Regression code and your own Neural Network +code. +Make an analysis of the regularization parameters and the learning rates employed to find the optimal MSE and \( R2 \) scores. +

    + +

    A useful reference on the back progagation algorithm is Nielsen's +book. It is an excellent +read. +

    +

    Part c): Testing different activation functions

    + +

    You should now also test different activation functions for the hidden layers. Try out the Sigmoid, the RELU and the Leaky RELU functions and discuss your results. You may also study the way you initialize your weights and biases.

    +

    Part d): Classification analysis using neural networks

    + +

    With a well-written code it should now be easy to change the +activation function for the output layer. +

    + +

    Here we will change the cost function for our neural network code +developed in parts b) and c) in order to perform a classification analysis. +

    + +

    We will here study the Wisconsin Breast Cancer data set. This is a typical binary classification problem with just one single output, either True or Fale, \( 0 \) or \( 1 \) etc. +You find more information about this at the Scikit-Learn +site or at the University of California +at Irvine. +

    + +

    To measure the performance of our classification problem we use the +so-called accuracy score. The accuracy is as you would expect just +the number of correctly guessed targets \( t_i \) divided by the total +number of targets, that is +

    + +$$ +\text{Accuracy} = \frac{\sum_{i=1}^n I(t_i = y_i)}{n} , +$$ + +

    where \( I \) is the indicator function, \( 1 \) if \( t_i = y_i \) and \( 0 \) +otherwise if we have a binary classification problem. Here \( t_i \) +represents the target and \( y_i \) the outputs of your FFNN code and \( n \) is simply the number of targets \( t_i \). +

    + +

    Discuss your results and give a critical analysis of the various parameters, including hyper-parameters like the learning rates and the regularization parameter \( \lambda \) (as you did in Ridge Regression), various activation functions, number of hidden layers and nodes and activation functions.

    + +

    As stated in the introduction, it can also be useful to study other +datasets. +

    + +

    Again, we strongly recommend that you compare your own neural Network +code for classification and pertinent results against a similar code using Scikit-Learn or tensorflow/keras or pytorch. +

    +

    Part e): Write your Logistic Regression code, final step

    + +

    Finally, we want to compare the FFNN code we have developed with +Logistic regression, that is we wish to compare our neural network +classification results with the results we can obtain with another +method. +

    + +

    Define your cost function and the design matrix before you start writing your code. +Write thereafter a Logistic regression code using your SGD algorithm. You can also use standard gradient descent in this case, with a learning rate as hyper-parameter. +Study the results as functions of the chosen learning rates. +Add also an \( l_2 \) regularization parameter \( \lambda \). Compare your results with those from your FFNN code as well as those obtained using Scikit-Learn's logistic regression functionality. +

    + +

    The weblink here https://medium.com/ai-in-plain-english/comparison-between-logistic-regression-and-neural-networks-in-classifying-digits-dc5e85cd93c3compares logistic regression and FFNN using the so-called MNIST data set. You may find several useful hints and ideas from this article.

    +

    Part f) Critical evaluation of the various algorithms

    + +

    After all these glorious calculations, you should now summarize the +various algorithms and come with a critical evaluation of their pros +and cons. Which algorithm works best for the regression case and which +is best for the classification case. These codes can also be part of +your final project 3, but now applied to other data sets. +

    +

    Background literature

    + +
      +
    1. The text of Michael Nielsen is highly recommended, see Nielsen's book. It is an excellent read.
    2. +
    3. The textbook of Trevor Hastie, Robert Tibshirani, Jerome H. Friedman, The Elements of Statistical Learning, Springer, chapters 3 and 7 are the most relevant ones for the analysis here.
    4. +
    5. Mehta et al, arXiv 1803.08823, A high-bias, low-variance introduction to Machine Learning for physicists, ArXiv:1803.08823.
    6. +
    +
  • Goodfellow, Bengio and Courville, Deep Learning. +

    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. +

    + +

    + +

    + +
    + + + + +
    + © 1999-2023, "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/2023/Project2/html/Project2.html b/doc/Projects/2023/Project2/html/Project2.html new file mode 100644 index 000000000..fb63ebb8a --- /dev/null +++ b/doc/Projects/2023/Project2/html/Project2.html @@ -0,0 +1,423 @@ + + + + + + + +Project 2 on Machine Learning, deadline November 13 (Midnight) + + + + + + + + + + + + + + +
    +

    Project 2 on Machine Learning, deadline November 13 (Midnight)

    +
    + + +
    +Data Analysis and Machine Learning FYS-STK3155/FYS4155 +
    + +
    +Department of Physics, University of Oslo, Norway +
    +
    +
    +

    Oct 8, 2023

    +
    +
    +

    Classification and Regression, from linear and logistic regression to neural networks

    + +

    The main aim of this project is to study both classification and +regression problems by developing our own feed-forward neural network +(FFNN) code. We can reuse the regression algorithms studied in project +1. We will also include logistic regression for classification +problems and write our own FFNN code for studying both regression and +classification problems. The codes developed in project 1, including +bootstrap and/or cross-validation as well as the computation of the +mean-squared error and/or the \( R2 \) or the accuracy score +(classification problems) functions can also be utilized in the +present analysis. +

    + +

    The data sets that we propose here are (the default sets)

    + + +

    You can find more information about this at the Scikit-Learn site or at the University of California at Irvine.

    + +

    However, if you would like to study other data sets, feel free to +propose other sets. What we list here are mere suggestions from our +side. If you opt for another data set, consider using a set which has +been studied in the scientific literature. This makes it easier for +you to compare and analyze your results. Comparing with existing +results from the scientific literature is also an essential element of +the scientific discussion. The University of California at Irvine +with its Machine Learning repository at +https://archive.ics.uci.edu/ml/index.php is an excellent site to +look up for examples and +inspiration. Kaggle.com is an equally +interesting site. Feel free to explore these sites. +

    + +

    We will start with a regression problem and we will reuse our codes from project 1 starting with writing our own Stochastic Gradient Descent (SGD) code.

    +

    Part a): Write your own Stochastic Gradient Descent code, first step

    + +

    In order to get started, we will now replace in our standard ordinary +least squares (OLS) and Ridge regression codes (from project 1) the +matrix inversion algorithm with our own gradient descent (GD) and SGD +codes. You can use the Franke function or the terrain data from +project 1. However, we recommend using a simpler function like +\( f(x)=a_0+a_1x+a_2x^2 \) or higher-order one-dimensional polynomials. +You can obviously test your final codes against for example the Franke +function. +

    + +

    You should include in your analysis of the GD and SGD codes the following elements

    +
      +
    1. A plain gradient descent with a fixed learning rate (you will need to tune it).
    2. +
    3. Add momentum to the plain GD code and compare convergence with a fixed learning rate (you may need to tune the learning rate).
    4. +
    5. Repeat these steps for stochastic gradient descent with mini batches and a given number of epochs. Use a tunable learning rate as discussed in the lectures from week 39. Discuss the results as functions of the various parameters (size of batches, number of epochs etc)
    6. +
    7. Implement the Adagrad method in order to tune the learning rate. Do this with and without momentum for plain gradient descent and SGD.
    8. +
    9. Add RMSprop and Adam to your library of methods for tuning the learning rate.
    10. +
    +

    The lecture notes from week 39 contain more +details and code examples. Feel free to use these examples. +

    + +

    In summary, you should +perform an analysis of the results for OLS and Ridge regression as +function of the chosen learning rates, the number of mini-batches and +epochs as well as algorithm for scaling the learning rate. You can +also compare your own results with those that can be obtained using +for example Scikit-Learn's various SGD options. Discuss your +results. For Ridge regression you need now to study the results as functions of the hyper-parameter \( \lambda \) and +the learning rate \( \eta \). Discuss your results. +

    + +

    You will need your SGD code for the setup of the Neural Network and +Logistic Regression codes. You will find the Python Seaborn +package +useful when plotting the results as function of the learning rate +\( \eta \) and the hyper-parameter \( \lambda \) when you use Ridge +regression. +

    + +

    We recommend reading chapter 8 on optimization from the textbook of Goodfellow, Bengio and Courville. This chapter contains many useful insights and discussions on the optimization part of machine learning.

    +

    Part b): Writing your own Neural Network code

    + +

    Your aim now, and this is the central part of this project, is to +write your own Feed Forward Neural Network code implementing the back +propagation algorithm discussed in the lecture slides from week 40 and +week 41. +

    + +

    We will focus on a regression problem first and study either the simple second-order polynomial from part a) or the +Franke function or terrain data (or both or other data sets) from +project 1. +

    + +

    Discuss again your choice of cost function.

    + +

    Write an FFNN code for regression with a flexible number of hidden +layers and nodes using the Sigmoid function as activation function for +the hidden layers. Initialize the weights using a normal +distribution. How would you initialize the biases? And which +activation function would you select for the final output layer? +

    + +

    Train your network and compare the results with those from your OLS and Ridge Regression codes from project 1 if you use the Franke function or the terrain data. +You should test your results against a similar code using Scikit-Learn (see the examples in the above lecture notes from week 41) or tensorflow/keras. +

    + +

    Comment your results and give a critical discussion of the results +obtained with the Linear Regression code and your own Neural Network +code. +Make an analysis of the regularization parameters and the learning rates employed to find the optimal MSE and \( R2 \) scores. +

    + +

    A useful reference on the back progagation algorithm is Nielsen's +book. It is an excellent +read. +

    +

    Part c): Testing different activation functions

    + +

    You should now also test different activation functions for the hidden layers. Try out the Sigmoid, the RELU and the Leaky RELU functions and discuss your results. You may also study the way you initialize your weights and biases.

    +

    Part d): Classification analysis using neural networks

    + +

    With a well-written code it should now be easy to change the +activation function for the output layer. +

    + +

    Here we will change the cost function for our neural network code +developed in parts b) and c) in order to perform a classification analysis. +

    + +

    We will here study the Wisconsin Breast Cancer data set. This is a typical binary classification problem with just one single output, either True or Fale, \( 0 \) or \( 1 \) etc. +You find more information about this at the Scikit-Learn +site or at the University of California +at Irvine. +

    + +

    To measure the performance of our classification problem we use the +so-called accuracy score. The accuracy is as you would expect just +the number of correctly guessed targets \( t_i \) divided by the total +number of targets, that is +

    + +$$ +\text{Accuracy} = \frac{\sum_{i=1}^n I(t_i = y_i)}{n} , +$$ + +

    where \( I \) is the indicator function, \( 1 \) if \( t_i = y_i \) and \( 0 \) +otherwise if we have a binary classification problem. Here \( t_i \) +represents the target and \( y_i \) the outputs of your FFNN code and \( n \) is simply the number of targets \( t_i \). +

    + +

    Discuss your results and give a critical analysis of the various parameters, including hyper-parameters like the learning rates and the regularization parameter \( \lambda \) (as you did in Ridge Regression), various activation functions, number of hidden layers and nodes and activation functions.

    + +

    As stated in the introduction, it can also be useful to study other +datasets. +

    + +

    Again, we strongly recommend that you compare your own neural Network +code for classification and pertinent results against a similar code using Scikit-Learn or tensorflow/keras or pytorch. +

    +

    Part e): Write your Logistic Regression code, final step

    + +

    Finally, we want to compare the FFNN code we have developed with +Logistic regression, that is we wish to compare our neural network +classification results with the results we can obtain with another +method. +

    + +

    Define your cost function and the design matrix before you start writing your code. +Write thereafter a Logistic regression code using your SGD algorithm. You can also use standard gradient descent in this case, with a learning rate as hyper-parameter. +Study the results as functions of the chosen learning rates. +Add also an \( l_2 \) regularization parameter \( \lambda \). Compare your results with those from your FFNN code as well as those obtained using Scikit-Learn's logistic regression functionality. +

    + +

    The weblink here https://medium.com/ai-in-plain-english/comparison-between-logistic-regression-and-neural-networks-in-classifying-digits-dc5e85cd93c3compares logistic regression and FFNN using the so-called MNIST data set. You may find several useful hints and ideas from this article.

    +

    Part f) Critical evaluation of the various algorithms

    + +

    After all these glorious calculations, you should now summarize the +various algorithms and come with a critical evaluation of their pros +and cons. Which algorithm works best for the regression case and which +is best for the classification case. These codes can also be part of +your final project 3, but now applied to other data sets. +

    +

    Background literature

    + +
      +
    1. The text of Michael Nielsen is highly recommended, see Nielsen's book. It is an excellent read.
    2. +
    3. The textbook of Trevor Hastie, Robert Tibshirani, Jerome H. Friedman, The Elements of Statistical Learning, Springer, chapters 3 and 7 are the most relevant ones for the analysis here.
    4. +
    5. Mehta et al, arXiv 1803.08823, A high-bias, low-variance introduction to Machine Learning for physicists, ArXiv:1803.08823.
    6. +
    +
  • Goodfellow, Bengio and Courville, Deep Learning. +

    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. +

    + + +
    + © 1999-2023, "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/2023/Project2/ipynb/Project2.ipynb b/doc/Projects/2023/Project2/ipynb/Project2.ipynb new file mode 100644 index 000000000..dc3477fd4 --- /dev/null +++ b/doc/Projects/2023/Project2/ipynb/Project2.ipynb @@ -0,0 +1,349 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d183d07b", + "metadata": { + "editable": true + }, + "source": [ + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "id": "a8e700e3", + "metadata": { + "editable": true + }, + "source": [ + "# Project 2 on Machine Learning, deadline November 13 (Midnight)\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: **Oct 8, 2023**\n", + "\n", + "Copyright 1999-2023, [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" + ] + }, + { + "cell_type": "markdown", + "id": "dfe130a6", + "metadata": { + "editable": true + }, + "source": [ + "## Classification and Regression, from linear and logistic regression to neural networks\n", + "\n", + "The main aim of this project is to study both classification and\n", + "regression problems by developing our own feed-forward neural network\n", + "(FFNN) code. We can reuse the regression algorithms studied in project\n", + "1. We will also include logistic regression for classification\n", + "problems and write our own FFNN code for studying both regression and\n", + "classification problems. The codes developed in project 1, including\n", + "bootstrap **and/or** cross-validation as well as the computation of the\n", + "mean-squared error and/or the $R2$ or the accuracy score\n", + "(classification problems) functions can also be utilized in the\n", + "present analysis.\n", + "\n", + "The data sets that we propose here are (the default sets)\n", + "\n", + "* Regression (fitting a continuous function). In this part you will need to bring back your results from project 1 and compare these with what you get from your Neural Network code to be developed here. The data sets could be\n", + "\n", + "a. A simple one-dimensional function or the Franke function or the terrain data from project 1, or data sets your propose. It could be a simpler function than the Franke function. We recommend testing a simpler function (see below). But if you wish to try more complex function, feel free to do so.\n", + "\n", + "* Classification. Here you will also need to develop a Logistic regression code that you will use to compare with the Neural Network code. The data set we propose are the so-called [Wisconsin Breat Cancer Data](https://www.kaggle.com/uciml/breast-cancer-wisconsin-data) data set of images representing various features of tumors. These are discussed intensively in the lecture notes, see for example the slides from [week 41](https://compphysics.github.io/MachineLearning/doc/pub/week41/html/week41.html). A longer explanation with links to the scientific literature can be found at the [Machine Learning repository of the University of California at Irvine](https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29). Feel free to consult this site and the pertinent literature.\n", + "\n", + "You can find more information about this at the [Scikit-Learn site](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html) or at the [University of California at Irvine](https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(original)). \n", + "\n", + "However, if you would like to study other data sets, feel free to\n", + "propose other sets. What we list here are mere suggestions from our\n", + "side. If you opt for another data set, consider using a set which has\n", + "been studied in the scientific literature. This makes it easier for\n", + "you to compare and analyze your results. Comparing with existing\n", + "results from the scientific literature is also an essential element of\n", + "the scientific discussion. The University of California at Irvine\n", + "with its Machine Learning repository at\n", + " is an excellent site to\n", + "look up for examples and\n", + "inspiration. [Kaggle.com](https://www.kaggle.com/) is an equally\n", + "interesting site. Feel free to explore these sites.\n", + "\n", + "We will start with a regression problem and we will reuse our codes from project 1 starting with writing our own Stochastic Gradient Descent (SGD) code." + ] + }, + { + "cell_type": "markdown", + "id": "0bb1ff8e", + "metadata": { + "editable": true + }, + "source": [ + "### Part a): Write your own Stochastic Gradient Descent code, first step\n", + "\n", + "In order to get started, we will now replace in our standard ordinary\n", + "least squares (OLS) and Ridge regression codes (from project 1) the\n", + "matrix inversion algorithm with our own gradient descent (GD) and SGD\n", + "codes. You can use the Franke function or the terrain data from\n", + "project 1. **However, we recommend using a simpler function like**\n", + "$f(x)=a_0+a_1x+a_2x^2$ or higher-order one-dimensional polynomials.\n", + "You can obviously test your final codes against for example the Franke\n", + "function.\n", + "\n", + "You should include in your analysis of the GD and SGD codes the following elements\n", + "1. A plain gradient descent with a fixed learning rate (you will need to tune it).\n", + "\n", + "2. Add momentum to the plain GD code and compare convergence with a fixed learning rate (you may need to tune the learning rate).\n", + "\n", + "3. Repeat these steps for stochastic gradient descent with mini batches and a given number of epochs. Use a tunable learning rate as discussed in the lectures from week 39. Discuss the results as functions of the various parameters (size of batches, number of epochs etc)\n", + "\n", + "4. Implement the Adagrad method in order to tune the learning rate. Do this with and without momentum for plain gradient descent and SGD.\n", + "\n", + "5. Add RMSprop and Adam to your library of methods for tuning the learning rate.\n", + "\n", + "The lecture notes from [week 39 contain more\n", + "details](https://compphysics.github.io/MachineLearning/doc/pub/week39/html/week39.html) and code examples. Feel free to use these examples.\n", + "\n", + "In summary, you should \n", + "perform an analysis of the results for OLS and Ridge regression as\n", + "function of the chosen learning rates, the number of mini-batches and\n", + "epochs as well as algorithm for scaling the learning rate. You can\n", + "also compare your own results with those that can be obtained using\n", + "for example **Scikit-Learn**'s various SGD options. Discuss your\n", + "results. For Ridge regression you need now to study the results as functions of the hyper-parameter $\\lambda$ and \n", + "the learning rate $\\eta$. Discuss your results.\n", + "\n", + "You will need your SGD code for the setup of the Neural Network and\n", + "Logistic Regression codes. You will find the Python [Seaborn\n", + "package](https://seaborn.pydata.org/generated/seaborn.heatmap.html)\n", + "useful when plotting the results as function of the learning rate\n", + "$\\eta$ and the hyper-parameter $\\lambda$ when you use Ridge\n", + "regression.\n", + "\n", + "We recommend reading chapter 8 on optimization from the textbook of [Goodfellow, Bengio and Courville](https://www.deeplearningbook.org/). This chapter contains many useful insights and discussions on the optimization part of machine learning." + ] + }, + { + "cell_type": "markdown", + "id": "18e8ecd4", + "metadata": { + "editable": true + }, + "source": [ + "### Part b): Writing your own Neural Network code\n", + "\n", + "Your aim now, and this is the central part of this project, is to\n", + "write your own Feed Forward Neural Network code implementing the back\n", + "propagation algorithm discussed in the lecture slides from [week 40](https://compphysics.github.io/MachineLearning/doc/pub/week41/html/week40.html) and\n", + "[week 41](https://compphysics.github.io/MachineLearning/doc/pub/week41/html/week41.html).\n", + "\n", + "We will focus on a regression problem first and study either the simple second-order polynomial from part a) or the \n", + "Franke function or terrain data (or both or other data sets) from\n", + "project 1.\n", + "\n", + "Discuss again your choice of cost function.\n", + "\n", + "Write an FFNN code for regression with a flexible number of hidden\n", + "layers and nodes using the Sigmoid function as activation function for\n", + "the hidden layers. Initialize the weights using a normal\n", + "distribution. How would you initialize the biases? And which\n", + "activation function would you select for the final output layer?\n", + "\n", + "Train your network and compare the results with those from your OLS and Ridge Regression codes from project 1 if you use the Franke function or the terrain data.\n", + "You should test your results against a similar code using **Scikit-Learn** (see the examples in the above lecture notes from week 41) or **tensorflow/keras**. \n", + "\n", + "Comment your results and give a critical discussion of the results\n", + "obtained with the Linear Regression code and your own Neural Network\n", + "code. \n", + "Make an analysis of the regularization parameters and the learning rates employed to find the optimal MSE and $R2$ scores.\n", + "\n", + "A useful reference on the back progagation algorithm is [Nielsen's\n", + "book](http://neuralnetworksanddeeplearning.com/). It is an excellent\n", + "read." + ] + }, + { + "cell_type": "markdown", + "id": "1a264fae", + "metadata": { + "editable": true + }, + "source": [ + "### Part c): Testing different activation functions\n", + "\n", + "You should now also test different activation functions for the hidden layers. Try out the Sigmoid, the RELU and the Leaky RELU functions and discuss your results. You may also study the way you initialize your weights and biases." + ] + }, + { + "cell_type": "markdown", + "id": "d824e146", + "metadata": { + "editable": true + }, + "source": [ + "### Part d): Classification analysis using neural networks\n", + "\n", + "With a well-written code it should now be easy to change the\n", + "activation function for the output layer.\n", + "\n", + "Here we will change the cost function for our neural network code\n", + "developed in parts b) and c) in order to perform a classification analysis. \n", + "\n", + "We will here study the Wisconsin Breast Cancer data set. This is a typical binary classification problem with just one single output, either True or Fale, $0$ or $1$ etc.\n", + "You find more information about this at the [Scikit-Learn\n", + "site](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html) or at the [University of California\n", + "at Irvine](https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(original)). \n", + "\n", + "To measure the performance of our classification problem we use the\n", + "so-called *accuracy* score. The accuracy is as you would expect just\n", + "the number of correctly guessed targets $t_i$ divided by the total\n", + "number of targets, that is" + ] + }, + { + "cell_type": "markdown", + "id": "c74da15a", + "metadata": { + "editable": true + }, + "source": [ + "$$\n", + "\\text{Accuracy} = \\frac{\\sum_{i=1}^n I(t_i = y_i)}{n} ,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "8f765f8e", + "metadata": { + "editable": true + }, + "source": [ + "where $I$ is the indicator function, $1$ if $t_i = y_i$ and $0$\n", + "otherwise if we have a binary classification problem. Here $t_i$\n", + "represents the target and $y_i$ the outputs of your FFNN code and $n$ is simply the number of targets $t_i$.\n", + "\n", + "Discuss your results and give a critical analysis of the various parameters, including hyper-parameters like the learning rates and the regularization parameter $\\lambda$ (as you did in Ridge Regression), various activation functions, number of hidden layers and nodes and activation functions. \n", + "\n", + "As stated in the introduction, it can also be useful to study other\n", + "datasets. \n", + "\n", + "Again, we strongly recommend that you compare your own neural Network\n", + "code for classification and pertinent results against a similar code using **Scikit-Learn** or **tensorflow/keras** or **pytorch**." + ] + }, + { + "cell_type": "markdown", + "id": "6d6372e7", + "metadata": { + "editable": true + }, + "source": [ + "### Part e): Write your Logistic Regression code, final step\n", + "\n", + "Finally, we want to compare the FFNN code we have developed with\n", + "Logistic regression, that is we wish to compare our neural network\n", + "classification results with the results we can obtain with another\n", + "method.\n", + "\n", + "Define your cost function and the design matrix before you start writing your code.\n", + "Write thereafter a Logistic regression code using your SGD algorithm. You can also use standard gradient descent in this case, with a learning rate as hyper-parameter.\n", + "Study the results as functions of the chosen learning rates.\n", + "Add also an $l_2$ regularization parameter $\\lambda$. Compare your results with those from your FFNN code as well as those obtained using **Scikit-Learn**'s logistic regression functionality.\n", + "\n", + "The weblink here compares logistic regression and FFNN using the so-called MNIST data set. You may find several useful hints and ideas from this article." + ] + }, + { + "cell_type": "markdown", + "id": "c62f38f2", + "metadata": { + "editable": true + }, + "source": [ + "### Part f) Critical evaluation of the various algorithms\n", + "\n", + "After all these glorious calculations, you should now summarize the\n", + "various algorithms and come with a critical evaluation of their pros\n", + "and cons. Which algorithm works best for the regression case and which\n", + "is best for the classification case. These codes can also be part of\n", + "your final project 3, but now applied to other data sets." + ] + }, + { + "cell_type": "markdown", + "id": "b345a171", + "metadata": { + "editable": true + }, + "source": [ + "## Background literature\n", + "\n", + "1. The text of Michael Nielsen is highly recommended, see [Nielsen's book](http://neuralnetworksanddeeplearning.com/). It is an excellent read.\n", + "\n", + "2. The textbook of [Trevor Hastie, Robert Tibshirani, Jerome H. Friedman, The Elements of Statistical Learning, Springer](https://www.springer.com/gp/book/9780387848570), chapters 3 and 7 are the most relevant ones for the analysis here. \n", + "\n", + "3. [Mehta et al, arXiv 1803.08823](https://arxiv.org/abs/1803.08823), *A high-bias, low-variance introduction to Machine Learning for physicists*, ArXiv:1803.08823.\n", + "\n", + "d. [Goodfellow, Bengio and Courville](https://www.deeplearningbook.org/), *Deep Learning*." + ] + }, + { + "cell_type": "markdown", + "id": "4d4f2980", + "metadata": { + "editable": true + }, + "source": [ + "## 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." + ] + }, + { + "cell_type": "markdown", + "id": "fc20dc05", + "metadata": { + "editable": true + }, + "source": [ + "## 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." + ] + } + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/doc/Projects/2023/Project2/ipynb/ipynb-Project2-src.tar.gz b/doc/Projects/2023/Project2/ipynb/ipynb-Project2-src.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..858e375ab475911255e592c729289c280ce51576 GIT binary patch literal 193 zcmV;y06za8iwFQ*3nOI!1MSbv3W7io2XN0m#XNz`s;lQ94;=!DUSQ2N*K*f(SID=| z52#boMIzYW< zy^~&gW0@XLY3qhd!{xiVajdF7>{(ucXa0#}Ee!1P!PZKGRF)S?T_D%0;U^mgq8nrZ vrQ&94g66kgXbwycz{*lsp(MNdomOYfS`+xce#dbf$NAC&!mZ~H00;m8hx}SG literal 0 HcmV?d00001 diff --git a/doc/Projects/2023/Project2/pdf/Project2.p.tex b/doc/Projects/2023/Project2/pdf/Project2.p.tex new file mode 100644 index 000000000..cb2662e00 --- /dev/null +++ b/doc/Projects/2023/Project2/pdf/Project2.p.tex @@ -0,0 +1,398 @@ +%% +%% Automatically generated file from DocOnce source +%% (https://github.com/doconce/doconce/) +%% doconce format latex Project2.do.txt --print_latex_style=trac --latex_admon=paragraph +%% +% #ifdef PTEX2TEX_EXPLANATION +%% +%% The file follows the ptex2tex extended LaTeX format, see +%% ptex2tex: https://code.google.com/p/ptex2tex/ +%% +%% Run +%% ptex2tex myfile +%% or +%% doconce ptex2tex myfile +%% +%% to turn myfile.p.tex into an ordinary LaTeX file myfile.tex. +%% (The ptex2tex program: https://code.google.com/p/ptex2tex) +%% Many preprocess options can be added to ptex2tex or doconce ptex2tex +%% +%% ptex2tex -DMINTED myfile +%% doconce ptex2tex myfile envir=minted +%% +%% ptex2tex will typeset code environments according to a global or local +%% .ptex2tex.cfg configure file. doconce ptex2tex will typeset code +%% according to options on the command line (just type doconce ptex2tex to +%% see examples). If doconce ptex2tex has envir=minted, it enables the +%% minted style without needing -DMINTED. +% #endif + +% #define PREAMBLE + +% #ifdef PREAMBLE +%-------------------- 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-2023, "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-2023, "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 +% #endif + +\newcommand{\exercisesection}[1]{\subsection*{#1}} + + +% ------------------- main content ---------------------- + + + +% ----------------- title ------------------------- + +\thispagestyle{empty} + +\begin{center} +{\LARGE\bf +\begin{spacing}{1.25} +Project 2 on Machine Learning, deadline November 13 (Midnight) +\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} +Oct 8, 2023 +\end{center} +% --- end date --- + +\vspace{1cm} + + +\subsection{Classification and Regression, from linear and logistic regression to neural networks} + +The main aim of this project is to study both classification and +regression problems by developing our own feed-forward neural network +(FFNN) code. We can reuse the regression algorithms studied in project +1. We will also include logistic regression for classification +problems and write our own FFNN code for studying both regression and +classification problems. The codes developed in project 1, including +bootstrap \textbf{and/or} cross-validation as well as the computation of the +mean-squared error and/or the $R2$ or the accuracy score +(classification problems) functions can also be utilized in the +present analysis. + +The data sets that we propose here are (the default sets) + +\begin{itemize} +\item Regression (fitting a continuous function). In this part you will need to bring back your results from project 1 and compare these with what you get from your Neural Network code to be developed here. The data sets could be +\begin{enumerate} + + \item A simple one-dimensional function or the Franke function or the terrain data from project 1, or data sets your propose. It could be a simpler function than the Franke function. We recommend testing a simpler function (see below). But if you wish to try more complex function, feel free to do so. + +\end{enumerate} + +\noindent +\item Classification. Here you will also need to develop a Logistic regression code that you will use to compare with the Neural Network code. The data set we propose are the so-called \href{{https://www.kaggle.com/uciml/breast-cancer-wisconsin-data}}{Wisconsin Breat Cancer Data} data set of images representing various features of tumors. These are discussed intensively in the lecture notes, see for example the slides from \href{{https://compphysics.github.io/MachineLearning/doc/pub/week41/html/week41.html}}{week 41}. A longer explanation with links to the scientific literature can be found at the \href{{https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29}}{Machine Learning repository of the University of California at Irvine}. Feel free to consult this site and the pertinent literature. +\end{itemize} + +\noindent +You can find more information about this at the \href{{https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html}}{Scikit-Learn site} or at the \href{{https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(original)}}{University of California at Irvine}. + +However, if you would like to study other data sets, feel free to +propose other sets. What we list here are mere suggestions from our +side. If you opt for another data set, consider using a set which has +been studied in the scientific literature. This makes it easier for +you to compare and analyze your results. Comparing with existing +results from the scientific literature is also an essential element of +the scientific discussion. The University of California at Irvine +with its Machine Learning repository at +\href{{https://archive.ics.uci.edu/ml/index.php}}{\nolinkurl{https://archive.ics.uci.edu/ml/index.php}} is an excellent site to +look up for examples and +inspiration. \href{{https://www.kaggle.com/}}{Kaggle.com} is an equally +interesting site. Feel free to explore these sites. + +We will start with a regression problem and we will reuse our codes from project 1 starting with writing our own Stochastic Gradient Descent (SGD) code. + +\paragraph{Part a): Write your own Stochastic Gradient Descent code, first step.} +In order to get started, we will now replace in our standard ordinary +least squares (OLS) and Ridge regression codes (from project 1) the +matrix inversion algorithm with our own gradient descent (GD) and SGD +codes. You can use the Franke function or the terrain data from +project 1. \textbf{However, we recommend using a simpler function like} +$f(x)=a_0+a_1x+a_2x^2$ or higher-order one-dimensional polynomials. +You can obviously test your final codes against for example the Franke +function. + +You should include in your analysis of the GD and SGD codes the following elements +\begin{enumerate} +\item A plain gradient descent with a fixed learning rate (you will need to tune it). + +\item Add momentum to the plain GD code and compare convergence with a fixed learning rate (you may need to tune the learning rate). + +\item Repeat these steps for stochastic gradient descent with mini batches and a given number of epochs. Use a tunable learning rate as discussed in the lectures from week 39. Discuss the results as functions of the various parameters (size of batches, number of epochs etc) + +\item Implement the Adagrad method in order to tune the learning rate. Do this with and without momentum for plain gradient descent and SGD. + +\item Add RMSprop and Adam to your library of methods for tuning the learning rate. +\end{enumerate} + +\noindent +The lecture notes from \href{{https://compphysics.github.io/MachineLearning/doc/pub/week39/html/week39.html}}{week 39 contain more +details} and code examples. Feel free to use these examples. + +In summary, you should +perform an analysis of the results for OLS and Ridge regression as +function of the chosen learning rates, the number of mini-batches and +epochs as well as algorithm for scaling the learning rate. You can +also compare your own results with those that can be obtained using +for example \textbf{Scikit-Learn}'s various SGD options. Discuss your +results. For Ridge regression you need now to study the results as functions of the hyper-parameter $\lambda$ and +the learning rate $\eta$. Discuss your results. + +You will need your SGD code for the setup of the Neural Network and +Logistic Regression codes. You will find the Python \href{{https://seaborn.pydata.org/generated/seaborn.heatmap.html}}{Seaborn +package} +useful when plotting the results as function of the learning rate +$\eta$ and the hyper-parameter $\lambda$ when you use Ridge +regression. + +We recommend reading chapter 8 on optimization from the textbook of \href{{https://www.deeplearningbook.org/}}{Goodfellow, Bengio and Courville}. This chapter contains many useful insights and discussions on the optimization part of machine learning. + +\paragraph{Part b): Writing your own Neural Network code.} +Your aim now, and this is the central part of this project, is to +write your own Feed Forward Neural Network code implementing the back +propagation algorithm discussed in the lecture slides from \href{{https://compphysics.github.io/MachineLearning/doc/pub/week41/html/week40.html}}{week 40} and +\href{{https://compphysics.github.io/MachineLearning/doc/pub/week41/html/week41.html}}{week 41}. + +We will focus on a regression problem first and study either the simple second-order polynomial from part a) or the +Franke function or terrain data (or both or other data sets) from +project 1. + +Discuss again your choice of cost function. + +Write an FFNN code for regression with a flexible number of hidden +layers and nodes using the Sigmoid function as activation function for +the hidden layers. Initialize the weights using a normal +distribution. How would you initialize the biases? And which +activation function would you select for the final output layer? + +Train your network and compare the results with those from your OLS and Ridge Regression codes from project 1 if you use the Franke function or the terrain data. +You should test your results against a similar code using \textbf{Scikit-Learn} (see the examples in the above lecture notes from week 41) or \textbf{tensorflow/keras}. + +Comment your results and give a critical discussion of the results +obtained with the Linear Regression code and your own Neural Network +code. +Make an analysis of the regularization parameters and the learning rates employed to find the optimal MSE and $R2$ scores. + +A useful reference on the back progagation algorithm is \href{{http://neuralnetworksanddeeplearning.com/}}{Nielsen's +book}. It is an excellent +read. + +\paragraph{Part c): Testing different activation functions.} +You should now also test different activation functions for the hidden layers. Try out the Sigmoid, the RELU and the Leaky RELU functions and discuss your results. You may also study the way you initialize your weights and biases. + +\paragraph{Part d): Classification analysis using neural networks.} +With a well-written code it should now be easy to change the +activation function for the output layer. + +Here we will change the cost function for our neural network code +developed in parts b) and c) in order to perform a classification analysis. + +We will here study the Wisconsin Breast Cancer data set. This is a typical binary classification problem with just one single output, either True or Fale, $0$ or $1$ etc. +You find more information about this at the \href{{https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html}}{Scikit-Learn +site} or at the \href{{https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(original)}}{University of California +at Irvine}. + +To measure the performance of our classification problem we use the +so-called \emph{accuracy} score. The accuracy is as you would expect just +the number of correctly guessed targets $t_i$ divided by the total +number of targets, that is + +\[ +\text{Accuracy} = \frac{\sum_{i=1}^n I(t_i = y_i)}{n} , +\] + +where $I$ is the indicator function, $1$ if $t_i = y_i$ and $0$ +otherwise if we have a binary classification problem. Here $t_i$ +represents the target and $y_i$ the outputs of your FFNN code and $n$ is simply the number of targets $t_i$. + +Discuss your results and give a critical analysis of the various parameters, including hyper-parameters like the learning rates and the regularization parameter $\lambda$ (as you did in Ridge Regression), various activation functions, number of hidden layers and nodes and activation functions. + +As stated in the introduction, it can also be useful to study other +datasets. + +Again, we strongly recommend that you compare your own neural Network +code for classification and pertinent results against a similar code using \textbf{Scikit-Learn} or \textbf{tensorflow/keras} or \textbf{pytorch}. + +\paragraph{Part e): Write your Logistic Regression code, final step.} +Finally, we want to compare the FFNN code we have developed with +Logistic regression, that is we wish to compare our neural network +classification results with the results we can obtain with another +method. + +Define your cost function and the design matrix before you start writing your code. +Write thereafter a Logistic regression code using your SGD algorithm. You can also use standard gradient descent in this case, with a learning rate as hyper-parameter. +Study the results as functions of the chosen learning rates. +Add also an $l_2$ regularization parameter $\lambda$. Compare your results with those from your FFNN code as well as those obtained using \textbf{Scikit-Learn}'s logistic regression functionality. + +The weblink here \href{{https://medium.com/ai-in-plain-english/comparison-between-logistic-regression-and-neural-networks-in-classifying-digits-dc5e85cd93c3}}{\nolinkurl{https://medium.com/ai-in-plain-english/comparison-between-logistic-regression-and-neural-networks-in-classifying-digits-dc5e85cd93c3}}compares logistic regression and FFNN using the so-called MNIST data set. You may find several useful hints and ideas from this article. + +\paragraph{Part f) Critical evaluation of the various algorithms.} +After all these glorious calculations, you should now summarize the +various algorithms and come with a critical evaluation of their pros +and cons. Which algorithm works best for the regression case and which +is best for the classification case. These codes can also be part of +your final project 3, but now applied to other data sets. + +\subsection{Background literature} + +\begin{enumerate} +\item The text of Michael Nielsen is highly recommended, see \href{{http://neuralnetworksanddeeplearning.com/}}{Nielsen's book}. It is an excellent read. + +\item The textbook of \href{{https://www.springer.com/gp/book/9780387848570}}{Trevor Hastie, Robert Tibshirani, Jerome H. Friedman, The Elements of Statistical Learning, Springer}, chapters 3 and 7 are the most relevant ones for the analysis here. + +\item \href{{https://arxiv.org/abs/1803.08823}}{Mehta et al, arXiv 1803.08823}, \emph{A high-bias, low-variance introduction to Machine Learning for physicists}, ArXiv:1803.08823. + +\end{enumerate} + +\noindent +\item \href{{https://www.deeplearningbook.org/}}{Goodfellow, Bengio and Courville}, \emph{Deep Learning}. + +\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. + + +% ------------------- end of main content --------------- + +% #ifdef PREAMBLE +\end{document} +% #endif + diff --git a/doc/Projects/2023/Project2/pdf/Project2.pdf b/doc/Projects/2023/Project2/pdf/Project2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4d9da4f8be3f54d6d4379304042e8eeb4409fa0d GIT binary patch literal 250462 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

    l6FTCXVTrnB5{Xj@)MDo|6Q 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%0A&DS7ISAc5`iNrT=+l!w!xsuH{0Pv+(uqY0 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 S7?{}E=-8l0NQ7lYp#BdF2{^+5 literal 0 HcmV?d00001 diff --git a/doc/Projects/2023/Project2/pdf/Project2.tex b/doc/Projects/2023/Project2/pdf/Project2.tex new file mode 100644 index 000000000..14cec4cfb --- /dev/null +++ b/doc/Projects/2023/Project2/pdf/Project2.tex @@ -0,0 +1,370 @@ +%% +%% Automatically generated file from DocOnce source +%% (https://github.com/doconce/doconce/) +%% doconce format latex Project2.do.txt --print_latex_style=trac --latex_admon=paragraph +%% + + +%-------------------- 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-2023, "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-2023, "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 2 on Machine Learning, deadline November 13 (Midnight) +\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} +Oct 8, 2023 +\end{center} +% --- end date --- + +\vspace{1cm} + + +\subsection*{Classification and Regression, from linear and logistic regression to neural networks} + +The main aim of this project is to study both classification and +regression problems by developing our own feed-forward neural network +(FFNN) code. We can reuse the regression algorithms studied in project +1. We will also include logistic regression for classification +problems and write our own FFNN code for studying both regression and +classification problems. The codes developed in project 1, including +bootstrap \textbf{and/or} cross-validation as well as the computation of the +mean-squared error and/or the $R2$ or the accuracy score +(classification problems) functions can also be utilized in the +present analysis. + +The data sets that we propose here are (the default sets) + +\begin{itemize} +\item Regression (fitting a continuous function). In this part you will need to bring back your results from project 1 and compare these with what you get from your Neural Network code to be developed here. The data sets could be +\begin{enumerate} + + \item A simple one-dimensional function or the Franke function or the terrain data from project 1, or data sets your propose. It could be a simpler function than the Franke function. We recommend testing a simpler function (see below). But if you wish to try more complex function, feel free to do so. + +\end{enumerate} + +\noindent +\item Classification. Here you will also need to develop a Logistic regression code that you will use to compare with the Neural Network code. The data set we propose are the so-called \href{{https://www.kaggle.com/uciml/breast-cancer-wisconsin-data}}{Wisconsin Breat Cancer Data} data set of images representing various features of tumors. These are discussed intensively in the lecture notes, see for example the slides from \href{{https://compphysics.github.io/MachineLearning/doc/pub/week41/html/week41.html}}{week 41}. A longer explanation with links to the scientific literature can be found at the \href{{https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29}}{Machine Learning repository of the University of California at Irvine}. Feel free to consult this site and the pertinent literature. +\end{itemize} + +\noindent +You can find more information about this at the \href{{https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html}}{Scikit-Learn site} or at the \href{{https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(original)}}{University of California at Irvine}. + +However, if you would like to study other data sets, feel free to +propose other sets. What we list here are mere suggestions from our +side. If you opt for another data set, consider using a set which has +been studied in the scientific literature. This makes it easier for +you to compare and analyze your results. Comparing with existing +results from the scientific literature is also an essential element of +the scientific discussion. The University of California at Irvine +with its Machine Learning repository at +\href{{https://archive.ics.uci.edu/ml/index.php}}{\nolinkurl{https://archive.ics.uci.edu/ml/index.php}} is an excellent site to +look up for examples and +inspiration. \href{{https://www.kaggle.com/}}{Kaggle.com} is an equally +interesting site. Feel free to explore these sites. + +We will start with a regression problem and we will reuse our codes from project 1 starting with writing our own Stochastic Gradient Descent (SGD) code. + +\paragraph{Part a): Write your own Stochastic Gradient Descent code, first step.} +In order to get started, we will now replace in our standard ordinary +least squares (OLS) and Ridge regression codes (from project 1) the +matrix inversion algorithm with our own gradient descent (GD) and SGD +codes. You can use the Franke function or the terrain data from +project 1. \textbf{However, we recommend using a simpler function like} +$f(x)=a_0+a_1x+a_2x^2$ or higher-order one-dimensional polynomials. +You can obviously test your final codes against for example the Franke +function. + +You should include in your analysis of the GD and SGD codes the following elements +\begin{enumerate} +\item A plain gradient descent with a fixed learning rate (you will need to tune it). + +\item Add momentum to the plain GD code and compare convergence with a fixed learning rate (you may need to tune the learning rate). + +\item Repeat these steps for stochastic gradient descent with mini batches and a given number of epochs. Use a tunable learning rate as discussed in the lectures from week 39. Discuss the results as functions of the various parameters (size of batches, number of epochs etc) + +\item Implement the Adagrad method in order to tune the learning rate. Do this with and without momentum for plain gradient descent and SGD. + +\item Add RMSprop and Adam to your library of methods for tuning the learning rate. +\end{enumerate} + +\noindent +The lecture notes from \href{{https://compphysics.github.io/MachineLearning/doc/pub/week39/html/week39.html}}{week 39 contain more +details} and code examples. Feel free to use these examples. + +In summary, you should +perform an analysis of the results for OLS and Ridge regression as +function of the chosen learning rates, the number of mini-batches and +epochs as well as algorithm for scaling the learning rate. You can +also compare your own results with those that can be obtained using +for example \textbf{Scikit-Learn}'s various SGD options. Discuss your +results. For Ridge regression you need now to study the results as functions of the hyper-parameter $\lambda$ and +the learning rate $\eta$. Discuss your results. + +You will need your SGD code for the setup of the Neural Network and +Logistic Regression codes. You will find the Python \href{{https://seaborn.pydata.org/generated/seaborn.heatmap.html}}{Seaborn +package} +useful when plotting the results as function of the learning rate +$\eta$ and the hyper-parameter $\lambda$ when you use Ridge +regression. + +We recommend reading chapter 8 on optimization from the textbook of \href{{https://www.deeplearningbook.org/}}{Goodfellow, Bengio and Courville}. This chapter contains many useful insights and discussions on the optimization part of machine learning. + +\paragraph{Part b): Writing your own Neural Network code.} +Your aim now, and this is the central part of this project, is to +write your own Feed Forward Neural Network code implementing the back +propagation algorithm discussed in the lecture slides from \href{{https://compphysics.github.io/MachineLearning/doc/pub/week41/html/week40.html}}{week 40} and +\href{{https://compphysics.github.io/MachineLearning/doc/pub/week41/html/week41.html}}{week 41}. + +We will focus on a regression problem first and study either the simple second-order polynomial from part a) or the +Franke function or terrain data (or both or other data sets) from +project 1. + +Discuss again your choice of cost function. + +Write an FFNN code for regression with a flexible number of hidden +layers and nodes using the Sigmoid function as activation function for +the hidden layers. Initialize the weights using a normal +distribution. How would you initialize the biases? And which +activation function would you select for the final output layer? + +Train your network and compare the results with those from your OLS and Ridge Regression codes from project 1 if you use the Franke function or the terrain data. +You should test your results against a similar code using \textbf{Scikit-Learn} (see the examples in the above lecture notes from week 41) or \textbf{tensorflow/keras}. + +Comment your results and give a critical discussion of the results +obtained with the Linear Regression code and your own Neural Network +code. +Make an analysis of the regularization parameters and the learning rates employed to find the optimal MSE and $R2$ scores. + +A useful reference on the back progagation algorithm is \href{{http://neuralnetworksanddeeplearning.com/}}{Nielsen's +book}. It is an excellent +read. + +\paragraph{Part c): Testing different activation functions.} +You should now also test different activation functions for the hidden layers. Try out the Sigmoid, the RELU and the Leaky RELU functions and discuss your results. You may also study the way you initialize your weights and biases. + +\paragraph{Part d): Classification analysis using neural networks.} +With a well-written code it should now be easy to change the +activation function for the output layer. + +Here we will change the cost function for our neural network code +developed in parts b) and c) in order to perform a classification analysis. + +We will here study the Wisconsin Breast Cancer data set. This is a typical binary classification problem with just one single output, either True or Fale, $0$ or $1$ etc. +You find more information about this at the \href{{https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html}}{Scikit-Learn +site} or at the \href{{https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(original)}}{University of California +at Irvine}. + +To measure the performance of our classification problem we use the +so-called \emph{accuracy} score. The accuracy is as you would expect just +the number of correctly guessed targets $t_i$ divided by the total +number of targets, that is + +\[ +\text{Accuracy} = \frac{\sum_{i=1}^n I(t_i = y_i)}{n} , +\] + +where $I$ is the indicator function, $1$ if $t_i = y_i$ and $0$ +otherwise if we have a binary classification problem. Here $t_i$ +represents the target and $y_i$ the outputs of your FFNN code and $n$ is simply the number of targets $t_i$. + +Discuss your results and give a critical analysis of the various parameters, including hyper-parameters like the learning rates and the regularization parameter $\lambda$ (as you did in Ridge Regression), various activation functions, number of hidden layers and nodes and activation functions. + +As stated in the introduction, it can also be useful to study other +datasets. + +Again, we strongly recommend that you compare your own neural Network +code for classification and pertinent results against a similar code using \textbf{Scikit-Learn} or \textbf{tensorflow/keras} or \textbf{pytorch}. + +\paragraph{Part e): Write your Logistic Regression code, final step.} +Finally, we want to compare the FFNN code we have developed with +Logistic regression, that is we wish to compare our neural network +classification results with the results we can obtain with another +method. + +Define your cost function and the design matrix before you start writing your code. +Write thereafter a Logistic regression code using your SGD algorithm. You can also use standard gradient descent in this case, with a learning rate as hyper-parameter. +Study the results as functions of the chosen learning rates. +Add also an $l_2$ regularization parameter $\lambda$. Compare your results with those from your FFNN code as well as those obtained using \textbf{Scikit-Learn}'s logistic regression functionality. + +The weblink here \href{{https://medium.com/ai-in-plain-english/comparison-between-logistic-regression-and-neural-networks-in-classifying-digits-dc5e85cd93c3}}{\nolinkurl{https://medium.com/ai-in-plain-english/comparison-between-logistic-regression-and-neural-networks-in-classifying-digits-dc5e85cd93c3}}compares logistic regression and FFNN using the so-called MNIST data set. You may find several useful hints and ideas from this article. + +\paragraph{Part f) Critical evaluation of the various algorithms.} +After all these glorious calculations, you should now summarize the +various algorithms and come with a critical evaluation of their pros +and cons. Which algorithm works best for the regression case and which +is best for the classification case. These codes can also be part of +your final project 3, but now applied to other data sets. + +\subsection*{Background literature} + +\begin{enumerate} +\item The text of Michael Nielsen is highly recommended, see \href{{http://neuralnetworksanddeeplearning.com/}}{Nielsen's book}. It is an excellent read. + +\item The textbook of \href{{https://www.springer.com/gp/book/9780387848570}}{Trevor Hastie, Robert Tibshirani, Jerome H. Friedman, The Elements of Statistical Learning, Springer}, chapters 3 and 7 are the most relevant ones for the analysis here. + +\item \href{{https://arxiv.org/abs/1803.08823}}{Mehta et al, arXiv 1803.08823}, \emph{A high-bias, low-variance introduction to Machine Learning for physicists}, ArXiv:1803.08823. + +\end{enumerate} + +\noindent +\item \href{{https://www.deeplearningbook.org/}}{Goodfellow, Bengio and Courville}, \emph{Deep Learning}. + +\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. + + +% ------------------- end of main content --------------- + +\end{document} + diff --git a/doc/src/Projects/2023/Project2/Project2.do.txt b/doc/src/Projects/2023/Project2/Project2.do.txt new file mode 100644 index 000000000..98b82d235 --- /dev/null +++ b/doc/src/Projects/2023/Project2/Project2.do.txt @@ -0,0 +1,245 @@ +TITLE: Project 2 on Machine Learning, deadline November 13 (Midnight) +AUTHOR: "Data Analysis and Machine Learning FYS-STK3155/FYS4155":"http://www.uio.no/studier/emner/matnat/fys/FYS3155/index-eng.html" {copyright, 1999-present|CC BY-NC} at Department of Physics, University of Oslo, Norway +DATE: today + + +===== Classification and Regression, from linear and logistic regression to neural networks ===== + +The main aim of this project is to study both classification and +regression problems by developing our own feed-forward neural network +(FFNN) code. We can reuse the regression algorithms studied in project +1. We will also include logistic regression for classification +problems and write our own FFNN code for studying both regression and +classification problems. The codes developed in project 1, including +bootstrap _and/or_ cross-validation as well as the computation of the +mean-squared error and/or the $R2$ or the accuracy score +(classification problems) functions can also be utilized in the +present analysis. + + +The data sets that we propose here are (the default sets) + +* Regression (fitting a continuous function). In this part you will need to bring back your results from project 1 and compare these with what you get from your Neural Network code to be developed here. The data sets could be + o A simple one-dimensional function or the Franke function or the terrain data from project 1, or data sets your propose. It could be a simpler function than the Franke function. We recommend testing a simpler function (see below). But if you wish to try more complex function, feel free to do so. +* Classification. Here you will also need to develop a Logistic regression code that you will use to compare with the Neural Network code. The data set we propose are the so-called "Wisconsin Breat Cancer Data":"https://www.kaggle.com/uciml/breast-cancer-wisconsin-data" data set of images representing various features of tumors. These are discussed intensively in the lecture notes, see for example the slides from "week 41":"https://compphysics.github.io/MachineLearning/doc/pub/week41/html/week41.html". A longer explanation with links to the scientific literature can be found at the "Machine Learning repository of the University of California at Irvine":"https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29". Feel free to consult this site and the pertinent literature. +You can find more information about this at the "Scikit-Learn site":"https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html" or at the "University of California at Irvine":"https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(original)". + + +However, if you would like to study other data sets, feel free to +propose other sets. What we list here are mere suggestions from our +side. If you opt for another data set, consider using a set which has +been studied in the scientific literature. This makes it easier for +you to compare and analyze your results. Comparing with existing +results from the scientific literature is also an essential element of +the scientific discussion. The University of California at Irvine +with its Machine Learning repository at +URL:"https://archive.ics.uci.edu/ml/index.php" is an excellent site to +look up for examples and +inspiration. "Kaggle.com":"https://www.kaggle.com/" is an equally +interesting site. Feel free to explore these sites. + + +We will start with a regression problem and we will reuse our codes from project 1 starting with writing our own Stochastic Gradient Descent (SGD) code. + +=== Part a): Write your own Stochastic Gradient Descent code, first step === + +In order to get started, we will now replace in our standard ordinary +least squares (OLS) and Ridge regression codes (from project 1) the +matrix inversion algorithm with our own gradient descent (GD) and SGD +codes. You can use the Franke function or the terrain data from +project 1. _However, we recommend using a simpler function like_ +$f(x)=a_0+a_1x+a_2x^2$ or higher-order one-dimensional polynomials. +You can obviously test your final codes against for example the Franke +function. + + +You should include in your analysis of the GD and SGD codes the following elements +o A plain gradient descent with a fixed learning rate (you will need to tune it). +o Add momentum to the plain GD code and compare convergence with a fixed learning rate (you may need to tune the learning rate). +o Repeat these steps for stochastic gradient descent with mini batches and a given number of epochs. Use a tunable learning rate as discussed in the lectures from week 39. Discuss the results as functions of the various parameters (size of batches, number of epochs etc) +o Implement the Adagrad method in order to tune the learning rate. Do this with and without momentum for plain gradient descent and SGD. +o Add RMSprop and Adam to your library of methods for tuning the learning rate. +The lecture notes from "week 39 contain more +details":"https://compphysics.github.io/MachineLearning/doc/pub/week39/html/week39.html" and code examples. Feel free to use these examples. + +In summary, you should +perform an analysis of the results for OLS and Ridge regression as +function of the chosen learning rates, the number of mini-batches and +epochs as well as algorithm for scaling the learning rate. You can +also compare your own results with those that can be obtained using +for example _Scikit-Learn_'s various SGD options. Discuss your +results. For Ridge regression you need now to study the results as functions of the hyper-parameter $\lambda$ and +the learning rate $\eta$. Discuss your results. + +You will need your SGD code for the setup of the Neural Network and +Logistic Regression codes. You will find the Python "Seaborn +package":"https://seaborn.pydata.org/generated/seaborn.heatmap.html" +useful when plotting the results as function of the learning rate +$\eta$ and the hyper-parameter $\lambda$ when you use Ridge +regression. + +We recommend reading chapter 8 on optimization from the textbook of "Goodfellow, Bengio and Courville":"https://www.deeplearningbook.org/". This chapter contains many useful insights and discussions on the optimization part of machine learning. + +=== Part b): Writing your own Neural Network code === + +Your aim now, and this is the central part of this project, is to +write your own Feed Forward Neural Network code implementing the back +propagation algorithm discussed in the lecture slides from "week 40":"https://compphysics.github.io/MachineLearning/doc/pub/week41/html/week40.html" and +"week 41":"https://compphysics.github.io/MachineLearning/doc/pub/week41/html/week41.html". + +We will focus on a regression problem first and study either the simple second-order polynomial from part a) or the +Franke function or terrain data (or both or other data sets) from +project 1. + +Discuss again your choice of cost function. + +Write an FFNN code for regression with a flexible number of hidden +layers and nodes using the Sigmoid function as activation function for +the hidden layers. Initialize the weights using a normal +distribution. How would you initialize the biases? And which +activation function would you select for the final output layer? + +Train your network and compare the results with those from your OLS and Ridge Regression codes from project 1 if you use the Franke function or the terrain data. +You should test your results against a similar code using _Scikit-Learn_ (see the examples in the above lecture notes from week 41) or _tensorflow/keras_. + +Comment your results and give a critical discussion of the results +obtained with the Linear Regression code and your own Neural Network +code. +Make an analysis of the regularization parameters and the learning rates employed to find the optimal MSE and $R2$ scores. + +A useful reference on the back progagation algorithm is "Nielsen's +book":"http://neuralnetworksanddeeplearning.com/". It is an excellent +read. + + + +=== Part c): Testing different activation functions === + +You should now also test different activation functions for the hidden layers. Try out the Sigmoid, the RELU and the Leaky RELU functions and discuss your results. You may also study the way you initialize your weights and biases. + +=== Part d): Classification analysis using neural networks === + + + +With a well-written code it should now be easy to change the +activation function for the output layer. + +Here we will change the cost function for our neural network code +developed in parts b) and c) in order to perform a classification analysis. + +We will here study the Wisconsin Breast Cancer data set. This is a typical binary classification problem with just one single output, either True or Fale, $0$ or $1$ etc. +You find more information about this at the "Scikit-Learn +site":"https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html" or at the "University of California +at Irvine":"https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(original)". + + +To measure the performance of our classification problem we use the +so-called *accuracy* score. The accuracy is as you would expect just +the number of correctly guessed targets $t_i$ divided by the total +number of targets, that is + + +!bt +\[ +\text{Accuracy} = \frac{\sum_{i=1}^n I(t_i = y_i)}{n} , +\] +!et + +where $I$ is the indicator function, $1$ if $t_i = y_i$ and $0$ +otherwise if we have a binary classification problem. Here $t_i$ +represents the target and $y_i$ the outputs of your FFNN code and $n$ is simply the number of targets $t_i$. + +Discuss your results and give a critical analysis of the various parameters, including hyper-parameters like the learning rates and the regularization parameter $\lambda$ (as you did in Ridge Regression), various activation functions, number of hidden layers and nodes and activation functions. + + +As stated in the introduction, it can also be useful to study other +datasets. + +Again, we strongly recommend that you compare your own neural Network +code for classification and pertinent results against a similar code using _Scikit-Learn_ or _tensorflow/keras_ or _pytorch_. + + + + + +=== Part e): Write your Logistic Regression code, final step === + +Finally, we want to compare the FFNN code we have developed with +Logistic regression, that is we wish to compare our neural network +classification results with the results we can obtain with another +method. + +Define your cost function and the design matrix before you start writing your code. +Write thereafter a Logistic regression code using your SGD algorithm. You can also use standard gradient descent in this case, with a learning rate as hyper-parameter. +Study the results as functions of the chosen learning rates. +Add also an $l_2$ regularization parameter $\lambda$. Compare your results with those from your FFNN code as well as those obtained using _Scikit-Learn_'s logistic regression functionality. + +The weblink here URL:"https://medium.com/ai-in-plain-english/comparison-between-logistic-regression-and-neural-networks-in-classifying-digits-dc5e85cd93c3"compares logistic regression and FFNN using the so-called MNIST data set. You may find several useful hints and ideas from this article. + + +=== Part f) Critical evaluation of the various algorithms === + +After all these glorious calculations, you should now summarize the +various algorithms and come with a critical evaluation of their pros +and cons. Which algorithm works best for the regression case and which +is best for the classification case. These codes can also be part of +your final project 3, but now applied to other data sets. + + + + +===== Background literature ===== + +o The text of Michael Nielsen is highly recommended, see "Nielsen's book":"http://neuralnetworksanddeeplearning.com/". It is an excellent read. + +o The textbook of "Trevor Hastie, Robert Tibshirani, Jerome H. Friedman, The Elements of Statistical Learning, Springer":"https://www.springer.com/gp/book/9780387848570", chapters 3 and 7 are the most relevant ones for the analysis here. + +o "Mehta et al, arXiv 1803.08823":"https://arxiv.org/abs/1803.08823", *A high-bias, low-variance introduction to Machine Learning for physicists*, ArXiv:1803.08823. + +o "Goodfellow, Bengio and Courville":"https://www.deeplearningbook.org/", *Deep Learning*. + + +===== Introduction to numerical projects ===== + +Here follows a brief recipe and recommendation on how to write a report for each +project. + + * Give a short description of the nature of the problem and the eventual numerical methods you have used. + + * 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. + + * Include the source code of your program. Comment your program properly. + + * If possible, try to find analytic solutions, or known limits in order to test your program when developing the code. + + * 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. + + * 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. + + * Try to give an interpretation of you results in your answers to the problems. + + * 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. + + * 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. + + + + + + +===== 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: + + * Use Canvas to hand in your projects, log in at URL:"https://www.uio.no/english/services/it/education/canvas/" with your normal UiO username and password. + + * 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. + + * 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. + + +Finally, +we encourage you to collaborate. Optimal working groups consist of +2-3 students. You can then hand in a common report. + + diff --git a/doc/src/Projects/2023/Project2/clean.sh b/doc/src/Projects/2023/Project2/clean.sh new file mode 100755 index 000000000..2e5da2c72 --- /dev/null +++ b/doc/src/Projects/2023/Project2/clean.sh @@ -0,0 +1,3 @@ +#!/bin/sh +doconce clean +rm -rf *.pdf *.tex ipynb*.tar.gz *.html ._*.html *~ reveal.js Trash README.txt diff --git a/doc/src/Projects/2023/Project2/make.sh b/doc/src/Projects/2023/Project2/make.sh new file mode 100755 index 000000000..0426adfca --- /dev/null +++ b/doc/src/Projects/2023/Project2/make.sh @@ -0,0 +1,87 @@ +#!/bin/sh +set -x + +function system { + "$@" + if [ $? -ne 0 ]; then + echo "make.sh: unsuccessful command $@" + echo "abort!" + exit 1 + fi +} + +if [ $# -eq 0 ]; then +echo 'bash make.sh slides1|slides2' +exit 1 +fi + +name=$1 +rm -f *.tar.gz + +opt="--encoding=utf-8" +opt= + +rm -f *.aux + + + +# Plain HTML documents +html=${name} +system doconce format html $name --pygments_html_style=default --html_style=bloodish --html_links_in_new_window --html_output=$html $opt +system doconce split_html $html.html --method=space10 + +# Bootstrap style +html=${name}-bs +system doconce format html $name --html_style=bootstrap --pygments_html_style=default --html_admon=bootstrap_panel --html_output=$html $opt +system doconce split_html $html.html --method=split --pagination --nav_button=bottom + +# IPython notebook +system doconce format ipynb $name $opt + + +# Ordinary plain LaTeX document +system doconce format pdflatex $name --print_latex_style=trac --latex_admon=paragraph $opt +system doconce ptex2tex $name envir=verbatim +# Add special packages +doconce subst "% Add user's preamble" "\g<1>\n\\usepackage{simplewick}" $name.tex +doconce replace 'section{' 'section*{' $name.tex +pdflatex -shell-escape $name +pdflatex -shell-escape $name +mv -f $name.pdf ${name}.pdf +cp $name.tex ${name}.tex + +# Publish +dest=../../../../Projects/2023 +if [ ! -d $dest/$name ]; then +mkdir $dest/$name +mkdir $dest/$name/pdf +mkdir $dest/$name/html +mkdir $dest/$name/ipynb +fi +cp ${name}*.tex $dest/$name/pdf +cp ${name}*.pdf $dest/$name/pdf +cp -r ${name}*.html ._${name}*.html $dest/$name/html + +# Figures: cannot just copy link, need to physically copy the files +if [ -d fig-${name} ]; then +if [ ! -d $dest/$name/html/fig-$name ]; then +mkdir $dest/$name/html/fig-$name +fi +cp -r fig-${name}/* $dest/$name/html/fig-$name +fi + +cp ${name}.ipynb $dest/$name/ipynb +ipynb_tarfile=ipynb-${name}-src.tar.gz +if [ ! -f ${ipynb_tarfile} ]; then +cat > README.txt <