From c2f533862f02c01467a4f8178f923b1a4d3e7192 Mon Sep 17 00:00:00 2001 From: mhjensen Date: Sun, 29 Dec 2019 21:56:55 +0100 Subject: [PATCH] updating --- doc/pub/DimRed/html/._DimRed-bs000.html | 46 +++++---- doc/pub/DimRed/html/._DimRed-bs001.html | 44 ++++---- doc/pub/DimRed/html/._DimRed-bs002.html | 44 ++++---- doc/pub/DimRed/html/._DimRed-bs003.html | 44 ++++---- doc/pub/DimRed/html/._DimRed-bs004.html | 44 ++++---- doc/pub/DimRed/html/._DimRed-bs005.html | 44 ++++---- doc/pub/DimRed/html/._DimRed-bs006.html | 44 ++++---- doc/pub/DimRed/html/._DimRed-bs007.html | 44 ++++---- doc/pub/DimRed/html/._DimRed-bs008.html | 53 ++++++---- doc/pub/DimRed/html/._DimRed-bs009.html | 46 +++++---- doc/pub/DimRed/html/._DimRed-bs010.html | 54 ++++++---- doc/pub/DimRed/html/._DimRed-bs011.html | 44 ++++---- doc/pub/DimRed/html/._DimRed-bs012.html | 44 ++++---- doc/pub/DimRed/html/._DimRed-bs013.html | 44 ++++---- doc/pub/DimRed/html/._DimRed-bs014.html | 48 +++++---- doc/pub/DimRed/html/._DimRed-bs015.html | 44 ++++---- doc/pub/DimRed/html/._DimRed-bs016.html | 44 ++++---- doc/pub/DimRed/html/._DimRed-bs017.html | 44 ++++---- doc/pub/DimRed/html/._DimRed-bs018.html | 46 +++++---- doc/pub/DimRed/html/._DimRed-bs019.html | 59 +++++++---- doc/pub/DimRed/html/._DimRed-bs020.html | 44 ++++---- doc/pub/DimRed/html/._DimRed-bs021.html | 49 +++++---- doc/pub/DimRed/html/._DimRed-bs022.html | 47 +++++---- doc/pub/DimRed/html/._DimRed-bs023.html | 95 +++++------------ doc/pub/DimRed/html/._DimRed-bs024.html | 103 ++++++++++++------- doc/pub/DimRed/html/._DimRed-bs025.html | 96 +++++++++-------- doc/pub/DimRed/html/._DimRed-bs026.html | 98 +++++++++++------- doc/pub/DimRed/html/._DimRed-bs027.html | 73 ++++++++----- doc/pub/DimRed/html/._DimRed-bs028.html | 59 ++++++----- doc/pub/DimRed/html/._DimRed-bs029.html | 67 ++++++------ doc/pub/DimRed/html/._DimRed-bs030.html | 73 ++++++++----- doc/pub/DimRed/html/DimRed-bs.html | 46 +++++---- doc/pub/DimRed/html/DimRed-reveal.html | 78 ++++++++++---- doc/pub/DimRed/html/DimRed-solarized.html | 101 ++++++++++++------ doc/pub/DimRed/html/DimRed.html | 101 ++++++++++++------ doc/pub/DimRed/ipynb/DimRed.ipynb | 50 ++++++--- doc/pub/DimRed/ipynb/ipynb-DimRed-src.tar.gz | Bin 191 -> 191 bytes doc/pub/DimRed/pdf/DimRed-minted.pdf | Bin 260550 -> 262362 bytes doc/src/DimRed/DimRed.do.txt | 51 +++++++-- 39 files changed, 1281 insertions(+), 874 deletions(-) diff --git a/doc/pub/DimRed/html/._DimRed-bs000.html b/doc/pub/DimRed/html/._DimRed-bs000.html index c0e2e1fdb..fcef4f476 100644 --- a/doc/pub/DimRed/html/._DimRed-bs000.html +++ b/doc/pub/DimRed/html/._DimRed-bs000.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -218,7 +224,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Dec 28, 2019

    +

    Dec 29, 2019


    @@ -242,7 +248,7 @@ MathJax.Hub.Config({

  • 9
  • 10
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs001.html b/doc/pub/DimRed/html/._DimRed-bs001.html index 604451fe3..95607135f 100644 --- a/doc/pub/DimRed/html/._DimRed-bs001.html +++ b/doc/pub/DimRed/html/._DimRed-bs001.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -250,7 +256,7 @@ visualization.
  • 10
  • 11
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs002.html b/doc/pub/DimRed/html/._DimRed-bs002.html index f281284d9..020984f1f 100644 --- a/doc/pub/DimRed/html/._DimRed-bs002.html +++ b/doc/pub/DimRed/html/._DimRed-bs002.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -241,7 +247,7 @@ ensures that all features are exactly between \( 0 \) and \( 1 \). The
  • 11
  • 12
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs003.html b/doc/pub/DimRed/html/._DimRed-bs003.html index d2bfcf82f..974ed102f 100644 --- a/doc/pub/DimRed/html/._DimRed-bs003.html +++ b/doc/pub/DimRed/html/._DimRed-bs003.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -244,7 +250,7 @@ techniques.
  • 12
  • 13
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs004.html b/doc/pub/DimRed/html/._DimRed-bs004.html index b9946be9a..3c420051d 100644 --- a/doc/pub/DimRed/html/._DimRed-bs004.html +++ b/doc/pub/DimRed/html/._DimRed-bs004.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -319,7 +325,7 @@ svm.fit(X_train_scaled, y_train)
  • 13
  • 14
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs005.html b/doc/pub/DimRed/html/._DimRed-bs005.html index c1f31f395..c2ac3ee56 100644 --- a/doc/pub/DimRed/html/._DimRed-bs005.html +++ b/doc/pub/DimRed/html/._DimRed-bs005.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -269,7 +275,7 @@ svm.fit(X_train_scaled, y_train)
  • 14
  • 15
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs006.html b/doc/pub/DimRed/html/._DimRed-bs006.html index 2f361bebf..05eccf8b5 100644 --- a/doc/pub/DimRed/html/._DimRed-bs006.html +++ b/doc/pub/DimRed/html/._DimRed-bs006.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -248,7 +254,7 @@ logreg.fit(X_train_scaled, y_train)
  • 15
  • 16
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs007.html b/doc/pub/DimRed/html/._DimRed-bs007.html index 1c3b2e6e7..7efbdf565 100644 --- a/doc/pub/DimRed/html/._DimRed-bs007.html +++ b/doc/pub/DimRed/html/._DimRed-bs007.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -303,7 +309,7 @@ applications.
  • 16
  • 17
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs008.html b/doc/pub/DimRed/html/._DimRed-bs008.html index ec4603204..3949fe0c4 100644 --- a/doc/pub/DimRed/html/._DimRed-bs008.html +++ b/doc/pub/DimRed/html/._DimRed-bs008.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -201,6 +207,15 @@ MathJax.Hub.Config({

    Basic ideas of the Principal Component Analysis (PCA)

    +

    +The principal component analysis deals with the problem of fitting a +low-dimensional affine subspace \( S \) of dimension \( d \) much smaller than +the totaldimension \( D \) of the problem at hand (our data +set). Mathematically it can be formulated as a statistical problem or +a geometric problem. In our discussion of the theorem for the +classical PCA, we will stay with a statistical approach. This is also +what set the scene historically which for the PCA. +

    We have a data set defined by a design/feature matrix \( \boldsymbol{X} \) (see below for its definition) @@ -233,7 +248,7 @@ We have a data set defined by a design/feature matrix \( \boldsymbol{X} \) (see

  • 17
  • 18
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs009.html b/doc/pub/DimRed/html/._DimRed-bs009.html index 05ce56b2b..5494b0ae6 100644 --- a/doc/pub/DimRed/html/._DimRed-bs009.html +++ b/doc/pub/DimRed/html/._DimRed-bs009.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -203,7 +209,7 @@ MathJax.Hub.Config({

    Before we discuss the PCA theorem, we need to remind ourselves about -the definition of the covariance and the correlation function. +the definition of the covariance and the correlation function. These are quantities

    Suppose we have defined two vectors @@ -282,7 +288,7 @@ In the above example this is the function we constructed using pandas.

  • 18
  • 19
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs010.html b/doc/pub/DimRed/html/._DimRed-bs010.html index 9fcb9607f..0b33892e5 100644 --- a/doc/pub/DimRed/html/._DimRed-bs010.html +++ b/doc/pub/DimRed/html/._DimRed-bs010.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -202,7 +208,9 @@ MathJax.Hub.Config({

    Correlation Function and Design/Feature Matrix

    -In our derivation of the various regression algorithms like Ordinary Least Squares or Ridge regression we defined the design/feature matrix \( \boldsymbol{X} \) as +In our derivation of the various regression algorithms like Ordinary Least Squares or Ridge regression +we defined the design/feature matrix \( \boldsymbol{X} \) as + $$ \boldsymbol{X}=\begin{bmatrix} x_{0,0} & x_{0,1} & x_{0,2}& \dots & \dots x_{0,p-1}\\ @@ -227,7 +235,11 @@ $$ $$

    -With these definitions, we can now rewrite our \( 2\times 2 \) correaltion/covariance matrix in terms of a moe general design/feature matrix \( \boldsymbol{X}\in {\mathbb{R}}^{n\times p} \). This leads to a \( p\times p \) covariance matrix for the vectors \( \boldsymbol{x}_i \) with \( i =0,1,\dots,p-1 \) +With these definitions, we can now rewrite our \( 2\times 2 \) +correaltion/covariance matrix in terms of a moe general design/feature +matrix \( \boldsymbol{X}\in {\mathbb{R}}^{n\times p} \). This leads to a \( p\times p \) +covariance matrix for the vectors \( \boldsymbol{x}_i \) with \( i=0,1,\dots,p-1 \) + $$ \boldsymbol{C}[\boldsymbol{x}] = \begin{bmatrix} \mathrm{var}[\boldsymbol{x}_0] & \mathrm{cov}[\boldsymbol{x}_0,\boldsymbol{x}_1] & \mathrm{cov}[\boldsymbol{x}_0,\boldsymbol{x}_2] & \dots & \dots & \mathrm{cov}[\boldsymbol{x}_0,\boldsymbol{x}_{p-1}]\\ @@ -277,7 +289,7 @@ $$

  • 19
  • 20
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs011.html b/doc/pub/DimRed/html/._DimRed-bs011.html index 77d5296ca..7eefc658d 100644 --- a/doc/pub/DimRed/html/._DimRed-bs011.html +++ b/doc/pub/DimRed/html/._DimRed-bs011.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -265,7 +271,7 @@ C = np.c
  • 20
  • 21
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs012.html b/doc/pub/DimRed/html/._DimRed-bs012.html index 7a8763b59..d2d517c11 100644 --- a/doc/pub/DimRed/html/._DimRed-bs012.html +++ b/doc/pub/DimRed/html/._DimRed-bs012.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -267,7 +273,7 @@ The above procedure with numpy can be made more compact if we use pand
  • 21
  • 22
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs013.html b/doc/pub/DimRed/html/._DimRed-bs013.html index 2ab2ddff5..9a02ba499 100644 --- a/doc/pub/DimRed/html/._DimRed-bs013.html +++ b/doc/pub/DimRed/html/._DimRed-bs013.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -249,7 +255,7 @@ We expand this model to the Franke function discussed above.
  • 22
  • 23
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs014.html b/doc/pub/DimRed/html/._DimRed-bs014.html index d7c6c6753..7fc40d5f4 100644 --- a/doc/pub/DimRed/html/._DimRed-bs014.html +++ b/doc/pub/DimRed/html/._DimRed-bs014.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -256,8 +262,8 @@ columns since all matrix elements in the design matrix were set to one

    This means that the variance for these elements will be zero and will cause problems when we set up the correlation matrix. We can simply -drop these elements as follows and then construct the correlation -matrix. +drop these elements and construct a correlation +matrix without these elements.

    @@ -285,7 +291,7 @@ matrix.

  • 23
  • 24
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs015.html b/doc/pub/DimRed/html/._DimRed-bs015.html index 86ccf8390..c98730ba2 100644 --- a/doc/pub/DimRed/html/._DimRed-bs015.html +++ b/doc/pub/DimRed/html/._DimRed-bs015.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -265,7 +271,7 @@ It is easy to generalize this to a matrix \( \boldsymbol{X}\in {\mathbb{R}}^{n\t
  • 24
  • 25
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs016.html b/doc/pub/DimRed/html/._DimRed-bs016.html index 6f742428c..983a50bab 100644 --- a/doc/pub/DimRed/html/._DimRed-bs016.html +++ b/doc/pub/DimRed/html/._DimRed-bs016.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -273,7 +279,7 @@ features/predictors.
  • 25
  • 26
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs017.html b/doc/pub/DimRed/html/._DimRed-bs017.html index 3d8d8fdb9..6392f4885 100644 --- a/doc/pub/DimRed/html/._DimRed-bs017.html +++ b/doc/pub/DimRed/html/._DimRed-bs017.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -253,7 +259,7 @@ $$
  • 26
  • 27
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs018.html b/doc/pub/DimRed/html/._DimRed-bs018.html index 10609edc8..9796a01be 100644 --- a/doc/pub/DimRed/html/._DimRed-bs018.html +++ b/doc/pub/DimRed/html/._DimRed-bs018.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -229,7 +235,7 @@ X = np.r Make thereafter a small Python code which plots the data. Note that the function multivariate returns also the covariance discussed above and that it is defined by dividing by \( n-1 \) instead of \( n \).

    -Now we are going to implement the PCA algorithm. We will break it down into sub-steps and across multiple cells. +Now we are going to implement the PCA algorithm. We will break it down into various substeps.

    Compute the sample mean and center the data

    @@ -319,7 +325,7 @@ Finally, try out your own PCA function with other data sets.
  • 27
  • 28
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs019.html b/doc/pub/DimRed/html/._DimRed-bs019.html index cce5ff3ab..0281b99d7 100644 --- a/doc/pub/DimRed/html/._DimRed-bs019.html +++ b/doc/pub/DimRed/html/._DimRed-bs019.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -202,8 +208,11 @@ MathJax.Hub.Config({

    Classical PCA Theorem

    -We assume now that we have a design matrix \( \boldsymbol{X} \) which has been centered as discussed above. For the sake of simplicity we skip the overline symbol. The matrix is defined in terms of the various column vectors \( [\boldsymbol{x}_0,\boldsymbol{x}_1,\dots, \boldsymbol{x}_{p-1}] \) -each with dimension \( \boldsymbol{x}\in {\mathbb{R}}^{n} \). +We assume now that we have a design matrix \( \boldsymbol{X} \) which has been +centered as discussed above. For the sake of simplicity we skip the +overline symbol. The matrix is defined in terms of the various column +vectors \( [\boldsymbol{x}_0,\boldsymbol{x}_1,\dots, \boldsymbol{x}_{p-1}] \) each with dimension +\( \boldsymbol{x}\in {\mathbb{R}}^{n} \).

    We assume also that we have an orthogonal transformation \( \boldsymbol{W}\in {\mathbb{R}}^{p\times p} \). We define the reconstruction error (which is similar to the mean squared error we have seen before) as @@ -215,7 +224,13 @@ with \( \overline{\boldsymbol{x}}_i = \boldsymbol{W}\boldsymbol{z}_i \), where \ \( \boldsymbol{Z}\in{\mathbb{R}}^{p\times n} \). When doing PCA we want to reduce this dimensionality.

    -The PCA theorem states that minimizing the above reconstruction error corresponds to setting \( \boldsymbol{W}=\boldsymbol{S} \), the orthogonal matrix which diagonalizes the empirical covariance(correlation) matrix. The optimal low-dimensional encoding of the data is then given by a set of vectors \( \boldsymbol{z}_i \) with at most \( l \) vectors, with \( l < < p \), defined by the orthogonal projection of the data onto the columns spanned by the eigenvectors of the covariance(correlations matrix). +The PCA theorem states that minimizing the above reconstruction error +corresponds to setting \( \boldsymbol{W}=\boldsymbol{S} \), the orthogonal matrix which +diagonalizes the empirical covariance(correlation) matrix. The optimal +low-dimensional encoding of the data is then given by a set of vectors +\( \boldsymbol{z}_i \) with at most \( l \) vectors, with \( l < < p \), defined by the +orthogonal projection of the data onto the columns spanned by the +eigenvectors of the covariance(correlations matrix).

    @@ -243,7 +258,7 @@ The PCA theorem states that minimizing the above reconstruction error correspond

  • 28
  • 29
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs020.html b/doc/pub/DimRed/html/._DimRed-bs020.html index 536339c85..08aa77aa6 100644 --- a/doc/pub/DimRed/html/._DimRed-bs020.html +++ b/doc/pub/DimRed/html/._DimRed-bs020.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -245,7 +251,7 @@ where the vectors on the rhs are known.
  • 29
  • 30
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs021.html b/doc/pub/DimRed/html/._DimRed-bs021.html index 2ecf2204b..3a436e092 100644 --- a/doc/pub/DimRed/html/._DimRed-bs021.html +++ b/doc/pub/DimRed/html/._DimRed-bs021.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -232,7 +238,10 @@ $$ $$

    -We are almost there, we have obtained a relation between minimizing the reconstruction error and the variance and the covariance matrix. Minimizing the error is equivalent to maximizing the variance of the projected data. +We are almost there, we have obtained a relation between minimizing +the reconstruction error and the variance and the covariance +matrix. Minimizing the error is equivalent to maximizing the variance +of the projected data.

    @@ -260,7 +269,7 @@ We are almost there, we have obtained a relation between minimizing the reconstr

  • 30
  • 31
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs022.html b/doc/pub/DimRed/html/._DimRed-bs022.html index 285b05f8e..29dc48b88 100644 --- a/doc/pub/DimRed/html/._DimRed-bs022.html +++ b/doc/pub/DimRed/html/._DimRed-bs022.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -247,6 +253,9 @@ discussion in chapter 12.2 of Murphy's text has also a nice link with the Singular Value Decomposition theorem. For categorical data, see chapter 12.4 and discussion therein. +

    +Additional part of the proof for the other eigenvectors will be added by mid January 2020. +

    @@ -272,6 +281,8 @@ chapter 12.4 and discussion therein.

  • 30
  • 31
  • 32
  • +
  • ...
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs023.html b/doc/pub/DimRed/html/._DimRed-bs023.html index 67b68fa28..9f8585645 100644 --- a/doc/pub/DimRed/html/._DimRed-bs023.html +++ b/doc/pub/DimRed/html/._DimRed-bs023.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -199,59 +205,11 @@ MathJax.Hub.Config({ -

    Principal Component Analysis

    -
    -
    -

    -Principal Component Analysis (PCA) is by far the most popular dimensionality reduction algorithm. -First it identifies the hyperplane that lies closest to the data, and then it projects the data onto it. +

    Geometric Interpretation and link with Singular Value Decomposition

    -The following Python code uses NumPy’s svd() function to obtain all the principal components of the -training set, then extracts the first two principal components. First we center the data using either pandas or our own code -

    +This material will be added by mid January 2020. - -

    import numpy as np
    -import pandas as pd
    -from IPython.display import display
    -np.random.seed(100)
    -# setting up a 10 x 5 vanilla matrix 
    -rows = 10
    -cols = 5
    -X = np.random.randn(rows,cols)
    -df = pd.DataFrame(X)
    -# Pandas does the centering for us
    -df = df -df.mean()
    -display(df)
    -
    -# we center it ourselves
    -X_centered = X - X.mean(axis=0)
    -# Then check the difference between pandas and our own set up
    -print(X_centered-df)
    -#Now we do an SVD
    -U, s, V = np.linalg.svd(X_centered)
    -c1 = V.T[:, 0]
    -c2 = V.T[:, 1]
    -W2 = V.T[:, :2]
    -X2D = X_centered.dot(W2)
    -print(X2D)
    -
    -

    -PCA assumes that the dataset is centered around the origin. Scikit-Learn’s PCA classes take care of centering -the data for you. However, if you implement PCA yourself (as in the preceding example), or if you use other libraries, don’t -forget to center the data first. - -

    -Once you have identified all the principal components, you can reduce the dimensionality of the dataset -down to \( d \) dimensions by projecting it onto the hyperplane defined by the first \( d \) principal components. -Selecting this hyperplane ensures that the projection will preserve as much variance as possible. -

    - - -

    W2 = V.T[:, :2]
    -X2D = X_centered.dot(W2)
    -

    @@ -276,6 +234,7 @@ X2D = X_centered30

  • 31
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs024.html b/doc/pub/DimRed/html/._DimRed-bs024.html index 2e151571d..2be659898 100644 --- a/doc/pub/DimRed/html/._DimRed-bs024.html +++ b/doc/pub/DimRed/html/._DimRed-bs024.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -197,37 +203,61 @@ MathJax.Hub.Config({

     

     

     

    - + -

    PCA and scikit-learn

    +

    Principal Component Analysis

    +
    +
    +

    +Principal Component Analysis (PCA) is by far the most popular dimensionality reduction algorithm. +First it identifies the hyperplane that lies closest to the data, and then it projects the data onto it.

    -Scikit-Learn’s PCA class implements PCA using SVD decomposition just like we did before. The -following code applies PCA to reduce the dimensionality of the dataset down to two dimensions (note -that it automatically takes care of centering the data): +The following Python code uses NumPy’s svd() function to obtain all the principal components of the +training set, then extracts the first two principal components. First we center the data using either pandas or our own code

    -

    #thereafter we do a PCA with Scikit-learn
    -from sklearn.decomposition import PCA
    -pca = PCA(n_components = 2)
    -X2D = pca.fit_transform(X)
    +
    import numpy as np
    +import pandas as pd
    +from IPython.display import display
    +np.random.seed(100)
    +# setting up a 10 x 5 vanilla matrix 
    +rows = 10
    +cols = 5
    +X = np.random.randn(rows,cols)
    +df = pd.DataFrame(X)
    +# Pandas does the centering for us
    +df = df -df.mean()
    +display(df)
    +
    +# we center it ourselves
    +X_centered = X - X.mean(axis=0)
    +# Then check the difference between pandas and our own set up
    +print(X_centered-df)
    +#Now we do an SVD
    +U, s, V = np.linalg.svd(X_centered)
    +c1 = V.T[:, 0]
    +c2 = V.T[:, 1]
    +W2 = V.T[:, :2]
    +X2D = X_centered.dot(W2)
     print(X2D)
     

    -After fitting the PCA transformer to the dataset, you can access the principal components using the -components variable (note that it contains the PCs as horizontal vectors, so, for example, the first -principal component is equal to +PCA assumes that the dataset is centered around the origin. Scikit-Learn’s PCA classes take care of centering +the data for you. However, if you implement PCA yourself (as in the preceding example), or if you use other libraries, don’t +forget to center the data first. + +

    +Once you have identified all the principal components, you can reduce the dimensionality of the dataset +down to \( d \) dimensions by projecting it onto the hyperplane defined by the first \( d \) principal components. +Selecting this hyperplane ensures that the projection will preserve as much variance as possible.

    -

    pca.components_.T[:, 0].
    +
    W2 = V.T[:, :2]
    +X2D = X_centered.dot(W2)
     
    -

    -Another very useful piece of information is the explained variance ratio of each principal component, -available via the \( explained\_variance\_ratio \) variable. It indicates the proportion of the dataset’s -variance that lies along the axis of each principal component. -

    @@ -251,6 +281,7 @@ variance that lies along the axis of each principal component.

  • 30
  • 31
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs025.html b/doc/pub/DimRed/html/._DimRed-bs025.html index a1f2ee2be..f9daa99eb 100644 --- a/doc/pub/DimRed/html/._DimRed-bs025.html +++ b/doc/pub/DimRed/html/._DimRed-bs025.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -197,45 +203,36 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Back to the Cancer Data

    -We can now repeat the above but applied to real data, in this case our breast cancer data. -Here we compute performance scores on the training data using logistic regression. +

    PCA and scikit-learn

    + +

    +Scikit-Learn’s PCA class implements PCA using SVD decomposition just like we did before. The +following code applies PCA to reduce the dimensionality of the dataset down to two dimensions (note +that it automatically takes care of centering the data):

    -

    import matplotlib.pyplot as plt
    -import numpy as np
    -from sklearn.model_selection import  train_test_split 
    -from sklearn.datasets import load_breast_cancer
    -from sklearn.linear_model import LogisticRegression
    -cancer = load_breast_cancer()
    -
    -X_train, X_test, y_train, y_test = train_test_split(cancer.data,cancer.target,random_state=0)
    -
    -logreg = LogisticRegression()
    -logreg.fit(X_train, y_train)
    -print("Train set accuracy from Logistic Regression: {:.2f}".format(logreg.score(X_train,y_train)))
    -# We scale the data
    -from sklearn.preprocessing import StandardScaler
    -scaler = StandardScaler()
    -scaler.fit(X_train)
    -X_train_scaled = scaler.transform(X_train)
    -X_test_scaled = scaler.transform(X_test)
    -# Then perform again a log reg fit
    -logreg.fit(X_train_scaled, y_train)
    -print("Train set accuracy scaled data: {:.2f}".format(logreg.score(X_train_scaled,y_train)))
    -#thereafter we do a PCA with Scikit-learn
    +
    #thereafter we do a PCA with Scikit-learn
     from sklearn.decomposition import PCA
     pca = PCA(n_components = 2)
    -X2D_train = pca.fit_transform(X_train_scaled)
    -# and finally compute the log reg fit and the score on the training data	
    -logreg.fit(X2D_train,y_train)
    -print("Train set accuracy scaled and PCA data: {:.2f}".format(logreg.score(X2D_train,y_train)))
    +X2D = pca.fit_transform(X)
    +print(X2D)
     

    -We see that our training data after the PCA decomposition has a performance similar to the non-scaled data. +After fitting the PCA transformer to the dataset, you can access the principal components using the +components variable (note that it contains the PCs as horizontal vectors, so, for example, the first +principal component is equal to +

    + + +

    pca.components_.T[:, 0].
    +
    +

    +Another very useful piece of information is the explained variance ratio of each principal component, +available via the \( explained\_variance\_ratio \) variable. It indicates the proportion of the dataset’s +variance that lies along the axis of each principal component.

    @@ -259,6 +256,7 @@ We see that our training data after the PCA decomposition has a performance simi

  • 30
  • 31
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs026.html b/doc/pub/DimRed/html/._DimRed-bs026.html index 99b82253e..e59ea0bfd 100644 --- a/doc/pub/DimRed/html/._DimRed-bs026.html +++ b/doc/pub/DimRed/html/._DimRed-bs026.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -199,33 +205,44 @@ MathJax.Hub.Config({ -

    More on the PCA

    - -

    -Instead of arbitrarily choosing the number of dimensions to reduce down to, it is generally preferable to -choose the number of dimensions that add up to a sufficiently large portion of the variance (e.g., 95%). -Unless, of course, you are reducing dimensionality for data visualization — in that case you will -generally want to reduce the dimensionality down to 2 or 3. -The following code computes PCA without reducing dimensionality, then computes the minimum number -of dimensions required to preserve 95% of the training set’s variance: +

    Back to the Cancer Data

    +We can now repeat the above but applied to real data, in this case our breast cancer data. +Here we compute performance scores on the training data using logistic regression.

    -

    pca = PCA()
    -pca.fit(X)
    -cumsum = np.cumsum(pca.explained_variance_ratio_)
    -d = np.argmax(cumsum >= 0.95) + 1
    -
    -

    -You could then set \( n\_components=d \) and run PCA again. However, there is a much better option: instead -of specifying the number of principal components you want to preserve, you can set \( n\_components \) to be -a float between 0.0 and 1.0, indicating the ratio of variance you wish to preserve: -

    +

    import matplotlib.pyplot as plt
    +import numpy as np
    +from sklearn.model_selection import  train_test_split 
    +from sklearn.datasets import load_breast_cancer
    +from sklearn.linear_model import LogisticRegression
    +cancer = load_breast_cancer()
     
    -
    -
    pca = PCA(n_components=0.95)
    -X_reduced = pca.fit_transform(X)
    +X_train, X_test, y_train, y_test = train_test_split(cancer.data,cancer.target,random_state=0)
    +
    +logreg = LogisticRegression()
    +logreg.fit(X_train, y_train)
    +print("Train set accuracy from Logistic Regression: {:.2f}".format(logreg.score(X_train,y_train)))
    +# We scale the data
    +from sklearn.preprocessing import StandardScaler
    +scaler = StandardScaler()
    +scaler.fit(X_train)
    +X_train_scaled = scaler.transform(X_train)
    +X_test_scaled = scaler.transform(X_test)
    +# Then perform again a log reg fit
    +logreg.fit(X_train_scaled, y_train)
    +print("Train set accuracy scaled data: {:.2f}".format(logreg.score(X_train_scaled,y_train)))
    +#thereafter we do a PCA with Scikit-learn
    +from sklearn.decomposition import PCA
    +pca = PCA(n_components = 2)
    +X2D_train = pca.fit_transform(X_train_scaled)
    +# and finally compute the log reg fit and the score on the training data	
    +logreg.fit(X2D_train,y_train)
    +print("Train set accuracy scaled and PCA data: {:.2f}".format(logreg.score(X2D_train,y_train)))
     
    +

    +We see that our training data after the PCA decomposition has a performance similar to the non-scaled data. +

    @@ -247,6 +264,7 @@ X_reduced = pca

  • 30
  • 31
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs027.html b/doc/pub/DimRed/html/._DimRed-bs027.html index 95a52b810..56acdc987 100644 --- a/doc/pub/DimRed/html/._DimRed-bs027.html +++ b/doc/pub/DimRed/html/._DimRed-bs027.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -199,15 +205,33 @@ MathJax.Hub.Config({ -

    Incremental PCA

    +

    More on the PCA

    -One problem with the preceding implementation of PCA is that it requires the whole training set to fit in -memory in order for the SVD algorithm to run. Fortunately, Incremental PCA (IPCA) algorithms have -been developed: you can split the training set into mini-batches and feed an IPCA algorithm one minibatch -at a time. This is useful for large training sets, and also to apply PCA online (i.e., on the fly, as new -instances arrive). +Instead of arbitrarily choosing the number of dimensions to reduce down to, it is generally preferable to +choose the number of dimensions that add up to a sufficiently large portion of the variance (e.g., 95%). +Unless, of course, you are reducing dimensionality for data visualization — in that case you will +generally want to reduce the dimensionality down to 2 or 3. +The following code computes PCA without reducing dimensionality, then computes the minimum number +of dimensions required to preserve 95% of the training set’s variance: +

    + +

    pca = PCA()
    +pca.fit(X)
    +cumsum = np.cumsum(pca.explained_variance_ratio_)
    +d = np.argmax(cumsum >= 0.95) + 1
    +
    +

    +You could then set \( n\_components=d \) and run PCA again. However, there is a much better option: instead +of specifying the number of principal components you want to preserve, you can set \( n\_components \) to be +a float between 0.0 and 1.0, indicating the ratio of variance you wish to preserve: +

    + + +

    pca = PCA(n_components=0.95)
    +X_reduced = pca.fit_transform(X)
    +

    @@ -228,6 +252,7 @@ instances arrive).

  • 30
  • 31
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs028.html b/doc/pub/DimRed/html/._DimRed-bs028.html index 0c9c7f308..0e6a50276 100644 --- a/doc/pub/DimRed/html/._DimRed-bs028.html +++ b/doc/pub/DimRed/html/._DimRed-bs028.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -199,18 +205,14 @@ MathJax.Hub.Config({ -

    Randomized PCA

    +

    Incremental PCA

    -Scikit-Learn offers yet another option to perform PCA, called Randomized PCA. This is a stochastic -algorithm that quickly finds an approximation of the first d principal components. Its computational -complexity is \( O(m \times d^2)+O(d^3) \), instead of \( O(m \times n^2) + O(n^3) \), so it is dramatically faster than the -previous algorithms when \( d \) is much smaller than \( n \). - -

    -

    -
    - +One problem with the preceding implementation of PCA is that it requires the whole training set to fit in +memory in order for the SVD algorithm to run. Fortunately, Incremental PCA (IPCA) algorithms have +been developed: you can split the training set into mini-batches and feed an IPCA algorithm one minibatch +at a time. This is useful for large training sets, and also to apply PCA online (i.e., on the fly, as new +instances arrive).

    @@ -231,6 +233,7 @@ previous algorithms when \( d \) is much smaller than \( n \).

  • 30
  • 31
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs029.html b/doc/pub/DimRed/html/._DimRed-bs029.html index e605c052c..1c29effce 100644 --- a/doc/pub/DimRed/html/._DimRed-bs029.html +++ b/doc/pub/DimRed/html/._DimRed-bs029.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -199,28 +205,14 @@ MathJax.Hub.Config({ -

    Kernel PCA

    -
    -
    -

    +

    Randomized PCA

    -The kernel trick is a mathematical technique that implicitly maps instances into a -very high-dimensional space (called the feature space), enabling nonlinear classification and regression -with Support Vector Machines. Recall that a linear decision boundary in the high-dimensional feature -space corresponds to a complex nonlinear decision boundary in the original space. -It turns out that the same trick can be applied to PCA, making it possible to perform complex nonlinear -projections for dimensionality reduction. This is called Kernel PCA (kPCA). It is often good at -preserving clusters of instances after projection, or sometimes even unrolling datasets that lie close to a -twisted manifold. -For example, the following code uses Scikit-Learn’s KernelPCA class to perform kPCA with an -

    +Scikit-Learn offers yet another option to perform PCA, called Randomized PCA. This is a stochastic +algorithm that quickly finds an approximation of the first d principal components. Its computational +complexity is \( O(m \times d^2)+O(d^3) \), instead of \( O(m \times n^2) + O(n^3) \), so it is dramatically faster than the +previous algorithms when \( d \) is much smaller than \( n \). - -

    from sklearn.decomposition import KernelPCA
    -rbf_pca = KernelPCA(n_components = 2, kernel="rbf", gamma=0.04)
    -X_reduced = rbf_pca.fit_transform(X)
    -

    @@ -244,6 +236,7 @@ X_reduced = rbf_pca30
  • 31
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs030.html b/doc/pub/DimRed/html/._DimRed-bs030.html index 283c55794..f9bca9bdc 100644 --- a/doc/pub/DimRed/html/._DimRed-bs030.html +++ b/doc/pub/DimRed/html/._DimRed-bs030.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -199,14 +205,32 @@ MathJax.Hub.Config({ -

    LLE

    +

    Kernel PCA

    +
    +
    +

    -Locally Linear Embedding (LLE) is another very powerful nonlinear dimensionality reduction -(NLDR) technique. It is a Manifold Learning technique that does not rely on projections like the previous -algorithms. In a nutshell, LLE works by first measuring how each training instance linearly relates to its -closest neighbors (c.n.), and then looking for a low-dimensional representation of the training set where -these local relationships are best preserved (more details shortly). +The kernel trick is a mathematical technique that implicitly maps instances into a +very high-dimensional space (called the feature space), enabling nonlinear classification and regression +with Support Vector Machines. Recall that a linear decision boundary in the high-dimensional feature +space corresponds to a complex nonlinear decision boundary in the original space. +It turns out that the same trick can be applied to PCA, making it possible to perform complex nonlinear +projections for dimensionality reduction. This is called Kernel PCA (kPCA). It is often good at +preserving clusters of instances after projection, or sometimes even unrolling datasets that lie close to a +twisted manifold. +For example, the following code uses Scikit-Learn’s KernelPCA class to perform kPCA with an +

    + + +

    from sklearn.decomposition import KernelPCA
    +rbf_pca = KernelPCA(n_components = 2, kernel="rbf", gamma=0.04)
    +X_reduced = rbf_pca.fit_transform(X)
    +
    +

    +

    +
    +

    @@ -225,6 +249,7 @@ these local relationships are best preserved (more details shortly).

  • 30
  • 31
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/DimRed-bs.html b/doc/pub/DimRed/html/DimRed-bs.html index c0e2e1fdb..fcef4f476 100644 --- a/doc/pub/DimRed/html/DimRed-bs.html +++ b/doc/pub/DimRed/html/DimRed-bs.html @@ -104,15 +104,20 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -175,15 +180,16 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • -
  • Back to the Cancer Data
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Geometric Interpretation and link with Singular Value Decomposition
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -218,7 +224,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Dec 28, 2019

    +

    Dec 29, 2019


    @@ -242,7 +248,7 @@ MathJax.Hub.Config({

  • 9
  • 10
  • ...
  • -
  • 32
  • +
  • 33
  • »
  • diff --git a/doc/pub/DimRed/html/DimRed-reveal.html b/doc/pub/DimRed/html/DimRed-reveal.html index 589de6f51..9c2731ba5 100644 --- a/doc/pub/DimRed/html/DimRed-reveal.html +++ b/doc/pub/DimRed/html/DimRed-reveal.html @@ -148,7 +148,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

     
    -

    Dec 28, 2019

    +

    Dec 29, 2019


    @@ -518,6 +518,15 @@ applications.

    Basic ideas of the Principal Component Analysis (PCA)

    +

    +The principal component analysis deals with the problem of fitting a +low-dimensional affine subspace \( S \) of dimension \( d \) much smaller than +the totaldimension \( D \) of the problem at hand (our data +set). Mathematically it can be formulated as a statistical problem or +a geometric problem. In our discussion of the theorem for the +classical PCA, we will stay with a statistical approach. This is also +what set the scene historically which for the PCA. +

    We have a data set defined by a design/feature matrix \( \boldsymbol{X} \) (see below for its definition) @@ -534,7 +543,7 @@ We have a data set defined by a design/feature matrix \( \boldsymbol{X} \) (see

    Before we discuss the PCA theorem, we need to remind ourselves about -the definition of the covariance and the correlation function. +the definition of the covariance and the correlation function. These are quantities

    Suppose we have defined two vectors @@ -606,7 +615,9 @@ In the above example this is the function we constructed using pandas.

    Correlation Function and Design/Feature Matrix

    -In our derivation of the various regression algorithms like Ordinary Least Squares or Ridge regression we defined the design/feature matrix \( \boldsymbol{X} \) as +In our derivation of the various regression algorithms like Ordinary Least Squares or Ridge regression +we defined the design/feature matrix \( \boldsymbol{X} \) as +

     
    $$ \boldsymbol{X}=\begin{bmatrix} @@ -637,7 +648,11 @@ $$

     

    -With these definitions, we can now rewrite our \( 2\times 2 \) correaltion/covariance matrix in terms of a moe general design/feature matrix \( \boldsymbol{X}\in {\mathbb{R}}^{n\times p} \). This leads to a \( p\times p \) covariance matrix for the vectors \( \boldsymbol{x}_i \) with \( i =0,1,\dots,p-1 \) +With these definitions, we can now rewrite our \( 2\times 2 \) +correaltion/covariance matrix in terms of a moe general design/feature +matrix \( \boldsymbol{X}\in {\mathbb{R}}^{n\times p} \). This leads to a \( p\times p \) +covariance matrix for the vectors \( \boldsymbol{x}_i \) with \( i=0,1,\dots,p-1 \) +

     
    $$ \boldsymbol{C}[\boldsymbol{x}] = \begin{bmatrix} @@ -843,8 +858,8 @@ columns since all matrix elements in the design matrix were set to one

    This means that the variance for these elements will be zero and will cause problems when we set up the correlation matrix. We can simply -drop these elements as follows and then construct the correlation -matrix. +drop these elements and construct a correlation +matrix without these elements.

    @@ -1026,7 +1041,7 @@ X = np.random.multivariate_normal(mean, cov, n) Make thereafter a small Python code which plots the data. Note that the function multivariate returns also the covariance discussed above and that it is defined by dividing by \( n-1 \) instead of \( n \).

    -Now we are going to implement the PCA algorithm. We will break it down into sub-steps and across multiple cells. +Now we are going to implement the PCA algorithm. We will break it down into various substeps.

    Compute the sample mean and center the data

    @@ -1103,8 +1118,11 @@ Finally, try out your own PCA function with other data sets.

    Classical PCA Theorem

    -We assume now that we have a design matrix \( \boldsymbol{X} \) which has been centered as discussed above. For the sake of simplicity we skip the overline symbol. The matrix is defined in terms of the various column vectors \( [\boldsymbol{x}_0,\boldsymbol{x}_1,\dots, \boldsymbol{x}_{p-1}] \) -each with dimension \( \boldsymbol{x}\in {\mathbb{R}}^{n} \). +We assume now that we have a design matrix \( \boldsymbol{X} \) which has been +centered as discussed above. For the sake of simplicity we skip the +overline symbol. The matrix is defined in terms of the various column +vectors \( [\boldsymbol{x}_0,\boldsymbol{x}_1,\dots, \boldsymbol{x}_{p-1}] \) each with dimension +\( \boldsymbol{x}\in {\mathbb{R}}^{n} \).

    We assume also that we have an orthogonal transformation \( \boldsymbol{W}\in {\mathbb{R}}^{p\times p} \). We define the reconstruction error (which is similar to the mean squared error we have seen before) as @@ -1118,7 +1136,13 @@ with \( \overline{\boldsymbol{x}}_i = \boldsymbol{W}\boldsymbol{z}_i \), where \ \( \boldsymbol{Z}\in{\mathbb{R}}^{p\times n} \). When doing PCA we want to reduce this dimensionality.

    -The PCA theorem states that minimizing the above reconstruction error corresponds to setting \( \boldsymbol{W}=\boldsymbol{S} \), the orthogonal matrix which diagonalizes the empirical covariance(correlation) matrix. The optimal low-dimensional encoding of the data is then given by a set of vectors \( \boldsymbol{z}_i \) with at most \( l \) vectors, with \( l < < p \), defined by the orthogonal projection of the data onto the columns spanned by the eigenvectors of the covariance(correlations matrix). +The PCA theorem states that minimizing the above reconstruction error +corresponds to setting \( \boldsymbol{W}=\boldsymbol{S} \), the orthogonal matrix which +diagonalizes the empirical covariance(correlation) matrix. The optimal +low-dimensional encoding of the data is then given by a set of vectors +\( \boldsymbol{z}_i \) with at most \( l \) vectors, with \( l < < p \), defined by the +orthogonal projection of the data onto the columns spanned by the +eigenvectors of the covariance(correlations matrix). @@ -1195,7 +1219,10 @@ $$

     

    -We are almost there, we have obtained a relation between minimizing the reconstruction error and the variance and the covariance matrix. Minimizing the error is equivalent to maximizing the variance of the projected data. +We are almost there, we have obtained a relation between minimizing +the reconstruction error and the variance and the covariance +matrix. Minimizing the error is equivalent to maximizing the variance +of the projected data. @@ -1255,11 +1282,22 @@ our basis of eigenvectors is orthogonal, see Principal Component Analysis +

    Geometric Interpretation and link with Singular Value Decomposition

    + +

    +This material will be added by mid January 2020. + + + +

    +

    Principal Component Analysis

    @@ -1316,7 +1354,7 @@ X2D = X_centered.dot(W2)

    -

    PCA and scikit-learn

    +

    PCA and scikit-learn

    Scikit-Learn’s PCA class implements PCA using SVD decomposition just like we did before. The @@ -1348,7 +1386,7 @@ variance that lies along the axis of each principal component.

    -

    Back to the Cancer Data

    +

    Back to the Cancer Data

    We can now repeat the above but applied to real data, in this case our breast cancer data. Here we compute performance scores on the training data using logistic regression.

    @@ -1389,7 +1427,7 @@ We see that our training data after the PCA decomposition has a performance simi

    -

    More on the PCA

    +

    More on the PCA

    Instead of arbitrarily choosing the number of dimensions to reduce down to, it is generally preferable to @@ -1420,7 +1458,7 @@ X_reduced = pca.fit_transform(X)

    -

    Incremental PCA

    +

    Incremental PCA

    One problem with the preceding implementation of PCA is that it requires the whole training set to fit in @@ -1432,7 +1470,7 @@ instances arrive).

    -

    Randomized PCA

    +

    Randomized PCA

    Scikit-Learn offers yet another option to perform PCA, called Randomized PCA. This is a stochastic @@ -1446,7 +1484,7 @@ previous algorithms when \( d \) is much smaller than \( n \).

    -

    Kernel PCA

    +

    Kernel PCA

    @@ -1472,7 +1510,7 @@ X_reduced = rbf_pca.fit_transform(X)

    -

    LLE

    +

    LLE

    Locally Linear Embedding (LLE) is another very powerful nonlinear dimensionality reduction @@ -1484,7 +1522,7 @@ these local relationships are best preserved (more details shortly).

    -

    Other techniques

    +

    Other techniques

    There are many other dimensionality reduction techniques, several of which are available in Scikit-Learn. diff --git a/doc/pub/DimRed/html/DimRed-solarized.html b/doc/pub/DimRed/html/DimRed-solarized.html index a70ae5c1a..af3fb6759 100644 --- a/doc/pub/DimRed/html/DimRed-solarized.html +++ b/doc/pub/DimRed/html/DimRed-solarized.html @@ -124,15 +124,20 @@ div { text-align: justify; text-justify: inter-word; } ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -174,7 +179,7 @@ MathJax.Hub.Config({

    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Dec 28, 2019

    +

    Dec 29, 2019












    @@ -541,6 +546,15 @@ applications.

    Basic ideas of the Principal Component Analysis (PCA)

    +

    +The principal component analysis deals with the problem of fitting a +low-dimensional affine subspace \( S \) of dimension \( d \) much smaller than +the totaldimension \( D \) of the problem at hand (our data +set). Mathematically it can be formulated as a statistical problem or +a geometric problem. In our discussion of the theorem for the +classical PCA, we will stay with a statistical approach. This is also +what set the scene historically which for the PCA. +

    We have a data set defined by a design/feature matrix \( \boldsymbol{X} \) (see below for its definition) @@ -556,7 +570,7 @@ We have a data set defined by a design/feature matrix \( \boldsymbol{X} \) (see

    Before we discuss the PCA theorem, we need to remind ourselves about -the definition of the covariance and the correlation function. +the definition of the covariance and the correlation function. These are quantities

    Suppose we have defined two vectors @@ -616,7 +630,9 @@ In the above example this is the function we constructed using pandas.

    Correlation Function and Design/Feature Matrix

    -In our derivation of the various regression algorithms like Ordinary Least Squares or Ridge regression we defined the design/feature matrix \( \boldsymbol{X} \) as +In our derivation of the various regression algorithms like Ordinary Least Squares or Ridge regression +we defined the design/feature matrix \( \boldsymbol{X} \) as + $$ \boldsymbol{X}=\begin{bmatrix} x_{0,0} & x_{0,1} & x_{0,2}& \dots & \dots x_{0,p-1}\\ @@ -641,7 +657,11 @@ $$ $$

    -With these definitions, we can now rewrite our \( 2\times 2 \) correaltion/covariance matrix in terms of a moe general design/feature matrix \( \boldsymbol{X}\in {\mathbb{R}}^{n\times p} \). This leads to a \( p\times p \) covariance matrix for the vectors \( \boldsymbol{x}_i \) with \( i =0,1,\dots,p-1 \) +With these definitions, we can now rewrite our \( 2\times 2 \) +correaltion/covariance matrix in terms of a moe general design/feature +matrix \( \boldsymbol{X}\in {\mathbb{R}}^{n\times p} \). This leads to a \( p\times p \) +covariance matrix for the vectors \( \boldsymbol{x}_i \) with \( i=0,1,\dots,p-1 \) + $$ \boldsymbol{C}[\boldsymbol{x}] = \begin{bmatrix} \mathrm{var}[\boldsymbol{x}_0] & \mathrm{cov}[\boldsymbol{x}_0,\boldsymbol{x}_1] & \mathrm{cov}[\boldsymbol{x}_0,\boldsymbol{x}_2] & \dots & \dots & \mathrm{cov}[\boldsymbol{x}_0,\boldsymbol{x}_{p-1}]\\ @@ -840,8 +860,8 @@ columns since all matrix elements in the design matrix were set to one

    This means that the variance for these elements will be zero and will cause problems when we set up the correlation matrix. We can simply -drop these elements as follows and then construct the correlation -matrix. +drop these elements and construct a correlation +matrix without these elements.











    @@ -1001,7 +1021,7 @@ X = np.random.multivariate_normal(mean, cov, n) Make thereafter a small Python code which plots the data. Note that the function multivariate returns also the covariance discussed above and that it is defined by dividing by \( n-1 \) instead of \( n \).

    -Now we are going to implement the PCA algorithm. We will break it down into sub-steps and across multiple cells. +Now we are going to implement the PCA algorithm. We will break it down into various substeps.

    Compute the sample mean and center the data

    @@ -1071,8 +1091,11 @@ Finally, try out your own PCA function with other data sets.

    Classical PCA Theorem

    -We assume now that we have a design matrix \( \boldsymbol{X} \) which has been centered as discussed above. For the sake of simplicity we skip the overline symbol. The matrix is defined in terms of the various column vectors \( [\boldsymbol{x}_0,\boldsymbol{x}_1,\dots, \boldsymbol{x}_{p-1}] \) -each with dimension \( \boldsymbol{x}\in {\mathbb{R}}^{n} \). +We assume now that we have a design matrix \( \boldsymbol{X} \) which has been +centered as discussed above. For the sake of simplicity we skip the +overline symbol. The matrix is defined in terms of the various column +vectors \( [\boldsymbol{x}_0,\boldsymbol{x}_1,\dots, \boldsymbol{x}_{p-1}] \) each with dimension +\( \boldsymbol{x}\in {\mathbb{R}}^{n} \).

    We assume also that we have an orthogonal transformation \( \boldsymbol{W}\in {\mathbb{R}}^{p\times p} \). We define the reconstruction error (which is similar to the mean squared error we have seen before) as @@ -1084,7 +1107,13 @@ with \( \overline{\boldsymbol{x}}_i = \boldsymbol{W}\boldsymbol{z}_i \), where \ \( \boldsymbol{Z}\in{\mathbb{R}}^{p\times n} \). When doing PCA we want to reduce this dimensionality.

    -The PCA theorem states that minimizing the above reconstruction error corresponds to setting \( \boldsymbol{W}=\boldsymbol{S} \), the orthogonal matrix which diagonalizes the empirical covariance(correlation) matrix. The optimal low-dimensional encoding of the data is then given by a set of vectors \( \boldsymbol{z}_i \) with at most \( l \) vectors, with \( l < < p \), defined by the orthogonal projection of the data onto the columns spanned by the eigenvectors of the covariance(correlations matrix). +The PCA theorem states that minimizing the above reconstruction error +corresponds to setting \( \boldsymbol{W}=\boldsymbol{S} \), the orthogonal matrix which +diagonalizes the empirical covariance(correlation) matrix. The optimal +low-dimensional encoding of the data is then given by a set of vectors +\( \boldsymbol{z}_i \) with at most \( l \) vectors, with \( l < < p \), defined by the +orthogonal projection of the data onto the columns spanned by the +eigenvectors of the covariance(correlations matrix).











    @@ -1145,7 +1174,10 @@ $$ $$

    -We are almost there, we have obtained a relation between minimizing the reconstruction error and the variance and the covariance matrix. Minimizing the error is equivalent to maximizing the variance of the projected data. +We are almost there, we have obtained a relation between minimizing +the reconstruction error and the variance and the covariance +matrix. Minimizing the error is equivalent to maximizing the variance +of the projected data.











    @@ -1198,10 +1230,21 @@ discussion in chapter 12.2 of Murphy's text has also a nice link with the Singular Value Decomposition theorem. For categorical data, see chapter 12.4 and discussion therein. +

    +Additional part of the proof for the other eigenvectors will be added by mid January 2020. +











    -

    Principal Component Analysis

    +

    Geometric Interpretation and link with Singular Value Decomposition

    + +

    +This material will be added by mid January 2020. + +

    +









    + +

    Principal Component Analysis

    @@ -1257,7 +1300,7 @@ X2D = X_centered.dot(W2)

    -

    PCA and scikit-learn

    +

    PCA and scikit-learn

    Scikit-Learn’s PCA class implements PCA using SVD decomposition just like we did before. The @@ -1289,7 +1332,7 @@ variance that lies along the axis of each principal component.











    -

    Back to the Cancer Data

    +

    Back to the Cancer Data

    We can now repeat the above but applied to real data, in this case our breast cancer data. Here we compute performance scores on the training data using logistic regression.

    @@ -1330,7 +1373,7 @@ We see that our training data after the PCA decomposition has a performance simi











    -

    More on the PCA

    +

    More on the PCA

    Instead of arbitrarily choosing the number of dimensions to reduce down to, it is generally preferable to @@ -1360,7 +1403,7 @@ X_reduced = pca.fit_transform(X)











    -

    Incremental PCA

    +

    Incremental PCA

    One problem with the preceding implementation of PCA is that it requires the whole training set to fit in @@ -1372,7 +1415,7 @@ instances arrive).











    -

    Randomized PCA

    +

    Randomized PCA

    Scikit-Learn offers yet another option to perform PCA, called Randomized PCA. This is a stochastic @@ -1387,7 +1430,7 @@ previous algorithms when \( d \) is much smaller than \( n \).











    -

    Kernel PCA

    +

    Kernel PCA

    @@ -1416,7 +1459,7 @@ X_reduced = rbf_pca.fit_transform(X)











    -

    LLE

    +

    LLE

    Locally Linear Embedding (LLE) is another very powerful nonlinear dimensionality reduction @@ -1428,7 +1471,7 @@ these local relationships are best preserved (more details shortly).











    -

    Other techniques

    +

    Other techniques

    There are many other dimensionality reduction techniques, several of which are available in Scikit-Learn. diff --git a/doc/pub/DimRed/html/DimRed.html b/doc/pub/DimRed/html/DimRed.html index d300d5422..e9a79a081 100644 --- a/doc/pub/DimRed/html/DimRed.html +++ b/doc/pub/DimRed/html/DimRed.html @@ -129,15 +129,20 @@ div { text-align: justify; text-justify: inter-word; } ('Proof of the PCA Theorem', 2, None, '___sec22'), ('PCA Proof continued', 2, None, '___sec23'), ('The final step', 2, None, '___sec24'), - ('Principal Component Analysis', 2, None, '___sec25'), - ('PCA and scikit-learn', 2, None, '___sec26'), - ('Back to the Cancer Data', 2, None, '___sec27'), - ('More on the PCA', 2, None, '___sec28'), - ('Incremental PCA', 2, None, '___sec29'), - ('Randomized PCA', 2, None, '___sec30'), - ('Kernel PCA', 2, None, '___sec31'), - ('LLE', 2, None, '___sec32'), - ('Other techniques', 2, None, '___sec33')]} + ('Geometric Interpretation and link with Singular Value ' + 'Decomposition', + 2, + None, + '___sec25'), + ('Principal Component Analysis', 2, None, '___sec26'), + ('PCA and scikit-learn', 2, None, '___sec27'), + ('Back to the Cancer Data', 2, None, '___sec28'), + ('More on the PCA', 2, None, '___sec29'), + ('Incremental PCA', 2, None, '___sec30'), + ('Randomized PCA', 2, None, '___sec31'), + ('Kernel PCA', 2, None, '___sec32'), + ('LLE', 2, None, '___sec33'), + ('Other techniques', 2, None, '___sec34')]} end of tocinfo --> @@ -179,7 +184,7 @@ MathJax.Hub.Config({

    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Dec 28, 2019

    +

    Dec 29, 2019












    @@ -546,6 +551,15 @@ applications.

    Basic ideas of the Principal Component Analysis (PCA)

    +

    +The principal component analysis deals with the problem of fitting a +low-dimensional affine subspace \( S \) of dimension \( d \) much smaller than +the totaldimension \( D \) of the problem at hand (our data +set). Mathematically it can be formulated as a statistical problem or +a geometric problem. In our discussion of the theorem for the +classical PCA, we will stay with a statistical approach. This is also +what set the scene historically which for the PCA. +

    We have a data set defined by a design/feature matrix \( \boldsymbol{X} \) (see below for its definition) @@ -561,7 +575,7 @@ We have a data set defined by a design/feature matrix \( \boldsymbol{X} \) (see

    Before we discuss the PCA theorem, we need to remind ourselves about -the definition of the covariance and the correlation function. +the definition of the covariance and the correlation function. These are quantities

    Suppose we have defined two vectors @@ -621,7 +635,9 @@ In the above example this is the function we constructed using pandas.

    Correlation Function and Design/Feature Matrix

    -In our derivation of the various regression algorithms like Ordinary Least Squares or Ridge regression we defined the design/feature matrix \( \boldsymbol{X} \) as +In our derivation of the various regression algorithms like Ordinary Least Squares or Ridge regression +we defined the design/feature matrix \( \boldsymbol{X} \) as + $$ \boldsymbol{X}=\begin{bmatrix} x_{0,0} & x_{0,1} & x_{0,2}& \dots & \dots x_{0,p-1}\\ @@ -646,7 +662,11 @@ $$ $$

    -With these definitions, we can now rewrite our \( 2\times 2 \) correaltion/covariance matrix in terms of a moe general design/feature matrix \( \boldsymbol{X}\in {\mathbb{R}}^{n\times p} \). This leads to a \( p\times p \) covariance matrix for the vectors \( \boldsymbol{x}_i \) with \( i =0,1,\dots,p-1 \) +With these definitions, we can now rewrite our \( 2\times 2 \) +correaltion/covariance matrix in terms of a moe general design/feature +matrix \( \boldsymbol{X}\in {\mathbb{R}}^{n\times p} \). This leads to a \( p\times p \) +covariance matrix for the vectors \( \boldsymbol{x}_i \) with \( i=0,1,\dots,p-1 \) + $$ \boldsymbol{C}[\boldsymbol{x}] = \begin{bmatrix} \mathrm{var}[\boldsymbol{x}_0] & \mathrm{cov}[\boldsymbol{x}_0,\boldsymbol{x}_1] & \mathrm{cov}[\boldsymbol{x}_0,\boldsymbol{x}_2] & \dots & \dots & \mathrm{cov}[\boldsymbol{x}_0,\boldsymbol{x}_{p-1}]\\ @@ -845,8 +865,8 @@ columns since all matrix elements in the design matrix were set to one

    This means that the variance for these elements will be zero and will cause problems when we set up the correlation matrix. We can simply -drop these elements as follows and then construct the correlation -matrix. +drop these elements and construct a correlation +matrix without these elements.











    @@ -1006,7 +1026,7 @@ X = np.r Make thereafter a small Python code which plots the data. Note that the function multivariate returns also the covariance discussed above and that it is defined by dividing by \( n-1 \) instead of \( n \).

    -Now we are going to implement the PCA algorithm. We will break it down into sub-steps and across multiple cells. +Now we are going to implement the PCA algorithm. We will break it down into various substeps.

    Compute the sample mean and center the data

    @@ -1076,8 +1096,11 @@ Finally, try out your own PCA function with other data sets.

    Classical PCA Theorem

    -We assume now that we have a design matrix \( \boldsymbol{X} \) which has been centered as discussed above. For the sake of simplicity we skip the overline symbol. The matrix is defined in terms of the various column vectors \( [\boldsymbol{x}_0,\boldsymbol{x}_1,\dots, \boldsymbol{x}_{p-1}] \) -each with dimension \( \boldsymbol{x}\in {\mathbb{R}}^{n} \). +We assume now that we have a design matrix \( \boldsymbol{X} \) which has been +centered as discussed above. For the sake of simplicity we skip the +overline symbol. The matrix is defined in terms of the various column +vectors \( [\boldsymbol{x}_0,\boldsymbol{x}_1,\dots, \boldsymbol{x}_{p-1}] \) each with dimension +\( \boldsymbol{x}\in {\mathbb{R}}^{n} \).

    We assume also that we have an orthogonal transformation \( \boldsymbol{W}\in {\mathbb{R}}^{p\times p} \). We define the reconstruction error (which is similar to the mean squared error we have seen before) as @@ -1089,7 +1112,13 @@ with \( \overline{\boldsymbol{x}}_i = \boldsymbol{W}\boldsymbol{z}_i \), where \ \( \boldsymbol{Z}\in{\mathbb{R}}^{p\times n} \). When doing PCA we want to reduce this dimensionality.

    -The PCA theorem states that minimizing the above reconstruction error corresponds to setting \( \boldsymbol{W}=\boldsymbol{S} \), the orthogonal matrix which diagonalizes the empirical covariance(correlation) matrix. The optimal low-dimensional encoding of the data is then given by a set of vectors \( \boldsymbol{z}_i \) with at most \( l \) vectors, with \( l < < p \), defined by the orthogonal projection of the data onto the columns spanned by the eigenvectors of the covariance(correlations matrix). +The PCA theorem states that minimizing the above reconstruction error +corresponds to setting \( \boldsymbol{W}=\boldsymbol{S} \), the orthogonal matrix which +diagonalizes the empirical covariance(correlation) matrix. The optimal +low-dimensional encoding of the data is then given by a set of vectors +\( \boldsymbol{z}_i \) with at most \( l \) vectors, with \( l < < p \), defined by the +orthogonal projection of the data onto the columns spanned by the +eigenvectors of the covariance(correlations matrix).











    @@ -1150,7 +1179,10 @@ $$ $$

    -We are almost there, we have obtained a relation between minimizing the reconstruction error and the variance and the covariance matrix. Minimizing the error is equivalent to maximizing the variance of the projected data. +We are almost there, we have obtained a relation between minimizing +the reconstruction error and the variance and the covariance +matrix. Minimizing the error is equivalent to maximizing the variance +of the projected data.











    @@ -1203,10 +1235,21 @@ discussion in chapter 12.2 of Murphy's text has also a nice link with the Singular Value Decomposition theorem. For categorical data, see chapter 12.4 and discussion therein. +

    +Additional part of the proof for the other eigenvectors will be added by mid January 2020. +











    -

    Principal Component Analysis

    +

    Geometric Interpretation and link with Singular Value Decomposition

    + +

    +This material will be added by mid January 2020. + +

    +









    + +

    Principal Component Analysis

    @@ -1262,7 +1305,7 @@ X2D = X_centered -

    PCA and scikit-learn

    +

    PCA and scikit-learn

    Scikit-Learn’s PCA class implements PCA using SVD decomposition just like we did before. The @@ -1294,7 +1337,7 @@ variance that lies along the axis of each principal component.











    -

    Back to the Cancer Data

    +

    Back to the Cancer Data

    We can now repeat the above but applied to real data, in this case our breast cancer data. Here we compute performance scores on the training data using logistic regression.

    @@ -1335,7 +1378,7 @@ We see that our training data after the PCA decomposition has a performance simi











    -

    More on the PCA

    +

    More on the PCA

    Instead of arbitrarily choosing the number of dimensions to reduce down to, it is generally preferable to @@ -1365,7 +1408,7 @@ X_reduced = pca











    -

    Incremental PCA

    +

    Incremental PCA

    One problem with the preceding implementation of PCA is that it requires the whole training set to fit in @@ -1377,7 +1420,7 @@ instances arrive).











    -

    Randomized PCA

    +

    Randomized PCA

    Scikit-Learn offers yet another option to perform PCA, called Randomized PCA. This is a stochastic @@ -1392,7 +1435,7 @@ previous algorithms when \( d \) is much smaller than \( n \).











    -

    Kernel PCA

    +

    Kernel PCA

    @@ -1421,7 +1464,7 @@ X_reduced = rbf_pcaLLE +

    LLE

    Locally Linear Embedding (LLE) is another very powerful nonlinear dimensionality reduction @@ -1433,7 +1476,7 @@ these local relationships are best preserved (more details shortly).











    -

    Other techniques

    +

    Other techniques

    There are many other dimensionality reduction techniques, several of which are available in Scikit-Learn. diff --git a/doc/pub/DimRed/ipynb/DimRed.ipynb b/doc/pub/DimRed/ipynb/DimRed.ipynb index f688683cf..ec03b06a5 100644 --- a/doc/pub/DimRed/ipynb/DimRed.ipynb +++ b/doc/pub/DimRed/ipynb/DimRed.ipynb @@ -10,7 +10,7 @@ " \n", "**Morten Hjorth-Jensen**, Department of Physics, University of Oslo and Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University\n", "\n", - "Date: **Dec 28, 2019**\n", + "Date: **Dec 29, 2019**\n", "\n", "Copyright 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license\n", "\n", @@ -409,6 +409,14 @@ "\n", "## Basic ideas of the Principal Component Analysis (PCA)\n", "\n", + "The principal component analysis deals with the problem of fitting a\n", + "low-dimensional affine subspace $S$ of dimension $d$ much smaller than\n", + "the totaldimension $D$ of the problem at hand (our data\n", + "set). Mathematically it can be formulated as a statistical problem or\n", + "a geometric problem. In our discussion of the theorem for the\n", + "classical PCA, we will stay with a statistical approach. This is also\n", + "what set the scene historically which for the PCA.\n", + "\n", "We have a data set defined by a design/feature matrix $\\boldsymbol{X}$ (see below for its definition) \n", "* Each data point is determined by $p$ extrinsic (measurement) variables\n", "\n", @@ -419,7 +427,7 @@ "## Introducing the Covariance and Correlation functions\n", "\n", "Before we discuss the PCA theorem, we need to remind ourselves about\n", - "the definition of the covariance and the correlation function.\n", + "the definition of the covariance and the correlation function. These are quantities \n", "\n", "Suppose we have defined two vectors\n", "$\\hat{x}$ and $\\hat{y}$ with $n$ elements each. The covariance matrix $\\boldsymbol{C}$ is defined as" @@ -535,7 +543,8 @@ "\n", "## Correlation Function and Design/Feature Matrix\n", "\n", - "In our derivation of the various regression algorithms like Ordinary Least Squares or Ridge regression we defined the design/feature matrix $\\boldsymbol{X}$ as" + "In our derivation of the various regression algorithms like **Ordinary Least Squares** or **Ridge regression**\n", + "we defined the design/feature matrix $\\boldsymbol{X}$ as" ] }, { @@ -592,7 +601,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "With these definitions, we can now rewrite our $2\\times 2$ correaltion/covariance matrix in terms of a moe general design/feature matrix $\\boldsymbol{X}\\in {\\mathbb{R}}^{n\\times p}$. This leads to a $p\\times p$ covariance matrix for the vectors $\\boldsymbol{x}_i$ with $i =0,1,\\dots,p-1$" + "With these definitions, we can now rewrite our $2\\times 2$\n", + "correaltion/covariance matrix in terms of a moe general design/feature\n", + "matrix $\\boldsymbol{X}\\in {\\mathbb{R}}^{n\\times p}$. This leads to a $p\\times p$\n", + "covariance matrix for the vectors $\\boldsymbol{x}_i$ with $i=0,1,\\dots,p-1$" ] }, { @@ -848,8 +860,8 @@ "\n", "This means that the variance for these elements will be zero and will\n", "cause problems when we set up the correlation matrix. We can simply\n", - "drop these elements as follows and then construct the correlation\n", - "matrix. \n", + "drop these elements and construct a correlation\n", + "matrix without these elements. \n", "\n", "\n", "## Rewriting the Covariance and/or Correlation Matrix\n", @@ -1104,7 +1116,7 @@ "source": [ "Make thereafter a small Python code which plots the data. Note that the function **multivariate** returns also the covariance discussed above and that it is defined by dividing by $n-1$ instead of $n$.\n", "\n", - "Now we are going to implement the PCA algorithm. We will break it down into sub-steps and across multiple cells.\n", + "Now we are going to implement the PCA algorithm. We will break it down into various substeps.\n", "\n", "### Compute the sample mean and center the data\n", "\n", @@ -1208,8 +1220,11 @@ "\n", "## Classical PCA Theorem\n", "\n", - "We assume now that we have a design matrix $\\boldsymbol{X}$ which has been centered as discussed above. For the sake of simplicity we skip the overline symbol. The matrix is defined in terms of the various column vectors $[\\boldsymbol{x}_0,\\boldsymbol{x}_1,\\dots, \\boldsymbol{x}_{p-1}]$\n", - "each with dimension $\\boldsymbol{x}\\in {\\mathbb{R}}^{n}$.\n", + "We assume now that we have a design matrix $\\boldsymbol{X}$ which has been\n", + "centered as discussed above. For the sake of simplicity we skip the\n", + "overline symbol. The matrix is defined in terms of the various column\n", + "vectors $[\\boldsymbol{x}_0,\\boldsymbol{x}_1,\\dots, \\boldsymbol{x}_{p-1}]$ each with dimension\n", + "$\\boldsymbol{x}\\in {\\mathbb{R}}^{n}$.\n", "\n", "We assume also that we have an orthogonal transformation $\\boldsymbol{W}\\in {\\mathbb{R}}^{p\\times p}$. We define the reconstruction error (which is similar to the mean squared error we have seen before) as" ] @@ -1230,7 +1245,13 @@ "with $\\overline{\\boldsymbol{x}}_i = \\boldsymbol{W}\\boldsymbol{z}_i$, where $\\boldsymbol{z}_i$ is a row vector with dimension ${\\mathbb{R}}^{n}$ of the matrix\n", "$\\boldsymbol{Z}\\in{\\mathbb{R}}^{p\\times n}$. When doing PCA we want to reduce this dimensionality. \n", "\n", - "The PCA theorem states that minimizing the above reconstruction error corresponds to setting $\\boldsymbol{W}=\\boldsymbol{S}$, the orthogonal matrix which diagonalizes the empirical covariance(correlation) matrix. The optimal low-dimensional encoding of the data is then given by a set of vectors $\\boldsymbol{z}_i$ with at most $l$ vectors, with $l << p$, defined by the orthogonal projection of the data onto the columns spanned by the eigenvectors of the covariance(correlations matrix).\n", + "The PCA theorem states that minimizing the above reconstruction error\n", + "corresponds to setting $\\boldsymbol{W}=\\boldsymbol{S}$, the orthogonal matrix which\n", + "diagonalizes the empirical covariance(correlation) matrix. The optimal\n", + "low-dimensional encoding of the data is then given by a set of vectors\n", + "$\\boldsymbol{z}_i$ with at most $l$ vectors, with $l << p$, defined by the\n", + "orthogonal projection of the data onto the columns spanned by the\n", + "eigenvectors of the covariance(correlations matrix).\n", "\n", "\n", "\n", @@ -1371,7 +1392,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We are almost there, we have obtained a relation between minimizing the reconstruction error and the variance and the covariance matrix. Minimizing the error is equivalent to maximizing the variance of the projected data. \n", + "We are almost there, we have obtained a relation between minimizing\n", + "the reconstruction error and the variance and the covariance\n", + "matrix. Minimizing the error is equivalent to maximizing the variance\n", + "of the projected data.\n", "\n", "## The final step\n", "\n", @@ -1460,9 +1484,11 @@ "the Singular Value Decomposition theorem. For categorical data, see\n", "chapter 12.4 and discussion therein.\n", "\n", + "Additional part of the proof for the other eigenvectors will be added by mid January 2020.\n", "\n", + "## Geometric Interpretation and link with Singular Value Decomposition\n", "\n", - "\n", + "This material will be added by mid January 2020.\n", "\n", "\n", "## Principal Component Analysis\n", diff --git a/doc/pub/DimRed/ipynb/ipynb-DimRed-src.tar.gz b/doc/pub/DimRed/ipynb/ipynb-DimRed-src.tar.gz index 2d4521bc7d318258c541cecd9a138e864c4e8a1e..3639478816bf1f89af9b8877b8273f05403c73f3 100644 GIT binary patch delta 172 zcmV;d08{_J0lxtrABzY82NMZi00ZsM%?iRW3z(w{TgS|JN^=&<3iWnw9INXO zdzM$=nSbKgNDI5e;2Nz!X(uYJFHp#~6g-mMpeo>6*r^3Z+x`0Hmp&-1*mJpgjir3Ie=2mk;0gbaX0vHDb|C_87vrq}e3IaAaldx?mf8AMGkK4!*exF~# zM+%7AWFKU64+LxPI`9Gk9P9ua!0Q0C#IcA-;#j0Sp8WcJ)z!^I!;!}DAPMr+2fM4Q z>-egwnM5C>B>Kx$;@g+kS1(?tc~poZlUa0q6Q$aUJe5&qav_z8uGi7K`1gfXakW?~ zrQ%hyZ@a^B)m3Yrf9N)K%e`IM9qKRKKeqM$gva5F0B8~S8na7=H0p$9Hdmk=yAy_Y3u&Dg&|j5%?$o~Re~t&oj2pBiExq@HW>c>iNlhkXW~O_7zF>!0A#zzv_c+V2nYSBs2D`za?6}=HprjsIeFHdmgLT=J+-s|j z903qhq$>Vv337lP!j0`cuc$pK7aXYLL9{nIeJTz(a+Y|R18Q0905%S;Hg@i;in!#4 zf1+O9c8pc@y}t>4Z4RTwHvU*q;5j&Oz^q>i_B9asjn|*MCw*Sm?dsS%mGFm~M_nZ~ zA|ogwrWs$zgB_slcyQxbakJh$C|C?IOGDtwpSU-~RrG6Y*!m^7ZXZYU0FmgG{pXQ1 zXr9~>_bgYmZ9`Yp1qXvU95;y)S>eM@e?V&BP2(YXQ+h0i<|pX~W>(eScR{^t4#5m) zW*lfSWMPbVK*^>Quxh-zhFWy?Fg4OY@^WCNn z@rk|$BUx8nb=cMWkOO;3&tRD@gmP}r>F$gO!MEy}slGrLdk*M6ZP+2ELsvVWU4#@u z4Ji`bx;-bNWtstIEZRb(`iU|ce}k&ABFjyrwG=Y<{sJ?VWRzNFuppArJr7)-SoTpJ zGcMsmTeko76C1zrrrG+y%<&pipN>`Q^13ws4#}KCN^+?BZJ~QpF=!lk=#}I}H}Q4w zuG1{ih;mAL(1PT$L2^#p&UDMi)R;-36BCrQCd;t#4?l1_r&I;cQ6slVe**%PU8rAb zhjN_o9h{SVso{!MKoPj=>QH+xIsp)}(m$V9Ij{||{&hMZgMH9B{4xzXe?zGV*l8O= zZb}+ARa@~~&E|O^{PqTnUoqBOmz^{1QMFXWM9!s)6y7>AtHL=W z8ZKTI)tm%%dls7aJQ*PO+5at*Bs$&pNhE|m&dPB68AH7 z1+I|R-oDn&Y%af)fUhKvu!gk2YI?&7In`Lo5oT$Ov-wvIE&062)KDbRJj=u_7*$9# zadX@|2HVStJjF((Ghw~jUxq5srb88ozE2r=z^tKz;6@!z(@|dlf4az83NzX3YedWC z7%j)Tdhh3um9*8C<6g_3OU|XZZ1(5P1$78p6rng92NKpJXVasHgjK^K)*}K-a(GG5 zgVRllP8ZF*NL`+xson{;#dSG0e>yJG0EXaVrmXjG62K;?!&eE%TOWKJy?i8f^fx8f z$HUBe6!vqfaIdc0aDrloB zIXR>Um#lDA@~j;LC6YuBZzA^OP2_Cq2IdXi*GuQs9N$u;f2I#N|gFWPY#$U)C#M5{k)q?FNIC>6FZtlU6gQHSn&M}1ysw@o|wRd2NaOHe`|ct z;rd5jr^bZROdv*6E}7^e1WC>kLRGO1h?eqB(_(#~Eo%~4$2Z@%RNIjP4e;Ff7Z zk6P#XLOPVBe;4^O-zt4Gu;tQyOQCO??0=O2XOpwhG0!AFC7&QarSt{12HSfc`JGrT zPzDQ-;87Ed*37a}q?8Jd%=`NpNLW(AXC+ojgWF}i@{Y6aNhMo-DR;NqYKG^+y4ng! zs{nXDpNBlBB@Qq^hv&$S0cjq|xYqpT`s&kF|B`1lf1omw$^fuTwAx+0d!IyWe52

    iX`e!Kb`|67^dBM_1qVq(hYg$J;Ll$0wQkTWB_N}Eqs0d|K~+Nr%S zF_Oen%0_E&@4@ub854r7i`-_=7g#SQb^e4UtkQ(}C~H!`te!cKAicNwACtK-k8%RB z5lwE)fADHBqjiP+Q=gi}m?tB$f(m~K(@a>JR6<4=j7N)tsHRGWRin;-rfXglbTmjKhU792HPSm#`T%eR84CKXm zh%^6t5T~9E;>=Sa&Rl{x^=uGF(OqMqrKR~dVO$`UQ%qD}0dg}EW#2|<420y2sQ72v ze{!^HK7&E&rRk~Dp@4r+>HjZK5nuL?Hg|`*JAGKYP-s0~6cy+ez9=&Pe?^f!TNF{L zs(e+HP9W`h;4C%vazSH6UgZCcf+jEIH&itLk%TujMRral5MGk&uP~a2)?!7T_+lh` zaxr2@0sYaRHM!6!y^w05f_16M2B6%(1p&Oj-&&LU9VY`hH#L*7Z7F{oS&!Ss`F(!{ zA1NRj&wO*zMqir7MbZXElLZpM_Jb^O*F<$}D9LO0*Y}%))Q}n-D@$uR=*yCv^Sh6k zPfN4=jAnnoq2c-0+nX1!na&DQC{Wq$UB(Cn?4lXVm@q^$$duFsxXf;6*_-_KLpd07 zE%WhW06PCTkRl(|)o6b{4(+Sae{4s&^q+pfblrTv9}I2p%8q$-1IxMZ`EOY-?3>C* z^NDY&=5Hw%^U96>?At=8%4eei7~iV$)dxFd9X6Skqsidi?N1gP#v61vCt8_I2}!_s zY*uzhDDsDT@qSv)mj3Ip!sXoCbg>L=i#z|EyM1QmfaP^H9!-Cn`Q^A;R*Sj+yj#?v zeN?Zi@p?L{r=P=$qx!z|uSgo{Nkaxh!HfLImG7vQE%2%jJU%%DUW^yBS+iw>$r51- z>#sh9mzGsBVimT}MytB|~`X4R@ZO*U?HNxKndkm^4+LUVL20xP(&)(40x4TLJ)xy!hp{SfE0mt zfp=C9O#T-~EhrE`?AE+!ptKzLI2f8d1uR2_H0C*h#r}VrA8v2{xM>*6DJ5KFvQR`7 zIvdY!-n^sP1p9uKP6eA3*98a@fZ~pB~4v#@;ml8x$<#&8Y?8tB!>$^!Wh5z(l5S5_5VSq0xhzd|MFdrSqVpcn+X3$mEr&eU;s6Ik(P2T4 z$sFH!W(a?sx)$qb-}SvG}f^kw+kLnq273FvIfsuLWACKl?5vNMFsd0n;%Q-(g z;E;b;l^Du!R&2XfAArPubY-!7w0{=9$D=!5E$U@TlbF>Y-LrNbrWC}O*4o*qENSDo zhMxNL7Ll5@i=-eKDoU8q&Wm&OG;ZWSQi6pheX~~5#}mW!A+M<};^KQQ4}A&RGbRWX z0i(ARL}EPvqD_$vHEB?1c2z}p1~L+y7yW-yEcKIOgKTK5dLf`_(h4b$h_zUM1G8g; zgM8TKio1+JlCcCQkX#x?6eYC)*|I_=VJetKFk;%PghUU~DxqfBuoH;VVdRe?Tn+k& z&e11AAu_kB=m(UaMze=$qqHBK*TpygjPyBj&iM5htuS6-gkG=5t0rb%FKzJd5rTi1 z4I1O(jY2%24mTRu!HA<JyI{^izWv>T?$Tx6r zk~x|Gtz1_3^A|V*NibTi>ySwLtWn2<#HKj*qDFjeo>N3R}0q6}|WnR=NIDi0cb>Ww4;_^?!W8AhE zHmHK8)zOW7iF|@?Eza5^p`3Uw-dPUX1Ubx@MNI64)B=OoR*`>C@tG63$;*Gz9>UTL z1K}Zt{hXT4T3rtTXhqwII%$`YRhWr!G`BJ=1U{lbhG>K&Fhn(tm_9Tr-f1&OwjDE9 zpKaWN-P6}Z=45B zfCG|9!?S3gUC@Z5pkYTt!*+i`BfbVSkb(x~6jQorpO=^(D(xT2J^Y&&%ta2p=5 zCqn)Z1RtUinA>XJjEK?$)foe@m)JvQIFbOLlnBM1B8%**WRYE!EV6G_7TGr`i*Qx4 z2v;SG@Xg91d{tSbm|j3v7`IVWv^b*GKMWPyV|!!50!2Z$T7Aw&C=-9(Nb^&IN|6+V zQS$_)giD~FK&dYmrIeasdL|IA2-wS`q|b*EyAqVn$fcyhWBR5=j8a0DQ^Fi8d<>G% zF3I@{=zodT(EF{1y%1rLc45U{GrbFUaSBiuQ&4dZl;rcG#I6J-bv~31D5yBQf<7<$ z=TuPMJA_oYZ9zZ;<>Y^G!V$70e}hfFGW(-IwxE%#ieagKiqipfG}{X;-;L5aqA zt~04F@54)gJc>Z1uNk?hsct zhuip4h60jmFP1HjGr|wZ%V{|)UHQ(+-pWZP z?5!N+VXV8AbCZ9{$GTdTy`?7ZHm^P1tjpwu9Jj7OBiCGf{@0q<1fOczn~V=K{_!0195`w>bV-Hg|SqD5R|x^W}HGExyz9&JP2E z`NG$UxYms)#1DIsx~)<%I9%GevI`CDDNW*vqhnXy36Zkx+()B3E0X){Bo#M|fRWuv zuDoV6wM2Q*R9w26JzpamVjtSC!39EQ`LlysZU(Uq50F+BWJyw9V9U(YCyBv>nr3fOI={Ftl}5g8Py$M<`qK zy-WsWK(%)$ZN<0qPl=?LVp>@A!0OOY$8hiP3+`pSq9?8z(|WrcD=a5akwT-ktU{SmF@}oUw5lc{&&)kI@DgPeO_8#E-~FYuI({I zZ}G$0Pg_6PuP8k`3E4A>J9D{qwTC~g+V?9TK+AAj99e-azDOy=c5;WUe0wYh z4aXiU;#ijAw@Z_*37{Tn-49MU1R&KHL`?gS3eI^$aa9J`QU3tJI41Mk+4%Ea={!sP zbe!V;pI%>{W&+vNp`7Y?>_wbtkNY!DIvu$#XVAZoD>%ZZiEe&&_pO%MwEuRcf0t^1 z2X2t&(x5el=rF9E@x$%S{{TWH?P{|XDf9{gG%}Nclq!=oG!K7>%ZJ3}O*xfRIku{j zs`Vad2|L4BA}1u3+4Zka<3$k^M$+uV@rfYVY&81ubra31xG$>WFLzbA{&{ov>NS>y zMp_V2Y~B@^DI_r|1eb_VUTk*7oARG4MN6|&k9E8A^mTvx%L>TC+`D7D9hs~^ux0}DddQEVF zG18n9EAJXJq!}yLL?VHim-m~l@6Emryd^LHUXOkA-jAP}@xhP2Ur}7bX6nJ;`+dQ{ zOAUk9E6u#rKpEyHshu>5@+zd21jSYb$Ve%ISpl*Vii>~E!RwLv&8xEQ#xQy?eHe`o z^=L;r>P?l~pa3q*x^L=sYdnEhyefY+edkB-x;}CVG(T08^}`C6fobn}J%u-e73~uH zsxj{frKopS%7?G8;HoITR)%zbZ6@KQAoDo&7+c4_CHIoIJ{$?iGq5F;-w zswy5O4w1@V@;r>^#Qbx);Pz=rCasRJG3=XevCv;<8Hh8iP zk515_0){B3QMeqsetQ4#SUY_a2Y`o^KE{7BP`Vf;9vpLKW*VGQ2Qzz!diBoKN+r0M>_;LjImo0aiwa(Y#6itO!y_%J zax5#v2rHPA%+YQ#``4&qv{=umzV=i!LF@`~ETWpe&FWDwa>MC!Mh zJVU^hrzQWG@x(R30@2Dl8ja=B#@2skopT!^xWWkI0kQ=nuGnOY~?O01f0EBYZj_e0Q7#bgwVu#D|FA{>^Kz%hRf{<-WN z3C%3nFdb}PRk?aafi`I|BfF6q&M>oDkQxIac)Gwh@e3&pUlESKh#Ai47kDvnKnTG} zxjYNI6%5vMGhDEiO$bXDN<0L@m}76N3;M7~EmHkvc!5j|V&#gh&Uxju0j$7XA(RB4 z66nJpWAU(MnTm8 zMa=$aGH3uRGC|$SlC$3k#C_^vmqA>35NFTjUw$S3Ld6GR4yb}SSn?C{Z)8+K38ydT zU-5$cORp(mmVeomNRl4+)J5C_C!?C&27L5XEffD~TdW1DV*N2;Ax(cJ5#T}uF&Q%N zA2L$d5nYyDFBc$(pOirLDCYv)hId(HcX;=5=)9nq8QCW&CJ`KeKEbmI2~(&&nSN15 zViz*fBpdsv%=?T|+2>IzyP%1W6#Rmh-o$KKge{@~UkO9qV1w`_0vD>) zS+SrJnAcc^Vj)m|mCJvRw5pH-PfhaU(?heh-^33-$u;2^>fc9yj&}~w0(@Drkm~5= zFGu#`FUOnek!1J2hL{n3l`Vi6Q7>ByXZCcq);yms>m)ERpKANhr=jJywa9&2FSDDM z<(aCUrbh=hTb`0zILKSAaaKg&%qsD5R=lQJtVlJT*sN7{eL#O!tgkK4Z*d}dix0^! z;zJe@AU8lg1s8YT=AT^IJJfGPsh4dY|ArCtB0Kx)y3g8JB3h|0rTOzh5FSI3rwP9q zb>#)rC6XYa#1eH)Jm;HQ3xK*$y=~HDEKL~_grwf_#X*$}V3K9i?wW1wPpM_>p|}%cmxSG1c$jUM~M2lBgDsyY5`s$fXB$YTP7jQ2b2q%e7M-(% zl9vsv+D?C~c6-10;0bGgaR=4;eh-!!;jo$B3|nx&_TDyL=gtbQ*?7L;%qiQu!IgHI z#5ZsF@4k71IZy#+esc2$18y;fKX>!yqYjV$@68)_Q}c#>Li5J{3_zD|Ofe!*j5$C4 zn+Z@G8#S%};UoI)a6CAKCDR`Q^KyrVe(m&^gXw=)I5t&Je?SbTZ_F_N@qv_GKR$H# zT^oOh82h>%?3*rjhumKz%mSH4#D20KP8AqYd=kly4Fs^;#0P&rbcgU{z9tEse~`D? znv1E{t_dNOto`GaTuUHcY{y~#4qB}l<>kizJYfZL;AB^K;?!|BJ7fP#Y3*-K_O`wx z9TO!L5|n18OOqL--ijy5Z2G6`%xi4@NHkLMcta%QfDr!!^)U33li@QHvt>P34FWYX zmx1a7DzoTHtp|TZ$nkQ%J$g^*kJqs2T~88$0-VLsj)dBBy8h3@r9TFJ=m9YHFbFz0 z|HRY=7BFsV6UTI&i}hr+%Jq1m53oq(LQq8*^{t9el)3FVOxs|a4m=w@TurjD3Nyye zXBr2N?uSV|2@8{5jFqGb&Y@@|g-D{r2+$(=)1WdU;3Ilt5c;hyr);i{N zLRx*23DJE1quQ7xn>uKY?uQlr3MgcP$p;xDap>3Z7&;hX6i$S+bmhq0r-*#Km>PSM zBDyuBG=?XKWaq*nF!bJO!EH$d@23S~q=Jg&@DpT6{6#Ygnyt4gHS$jKx^ zEn;b-uPT3nWH2hU=jPIOn%1T@e=Q+6M`&Q%;`}!n>Mr>>gR-8iPQXfTD{koSQjikn zlGq4XK?khxkh~F{4r}Y5zCxxxnFQsTcuV zkJp*JJ8#8&WoH^`y6~v|u4(1Un`GS8wXWA6Dy3DvJn>f336_h_UR~p_&ik7>bS!o=S>zvP#^hDoRNKW&60$A_Hkws>~{zEjAZ#-hc9J3H`4!&Qw`scV23f83qqLTW3FB z{3jS&7UMP2Aks4H$kyA0E{+L!Z9!#P(CgV8R{NT?D&bY>RN;r@OiP_?6{g$LAMrFtYWh{z}eAx;fcxMwNYRjZPoNhjOPnSVlJ3235`ucO$A!I zY$Wvgho{htmpU^gSW3Cya)RPW1*jIyM1My}=@Y&HlS>$n(0FP90~=@k21-#*EpT)& zBp6D->J8c8*TmKs#+@ARpG-^%`=?bo*}o<+79ONBVudGm1?k$2H~3i!a+4GNdqeI% z9@oE_$L)c~QzMKB;Vz+1!2m`R*z?4uYfz*d!~UxTw+O~1fjoLrV>v5~%Pu$Y&3{j` zLV8Zo0$3q7)|*||W1FMnZ0jf3HU~-qnIlSqp50YnHQRbgV}zd;-Rrs{hYTH8csBF8 z$FJ}3PhD@rOq*ugY?@z#R|iRS+5P~JR8ZiBZIKyJrG#FuLR&9(+pcf-i#UtT>$css zp;>L0p%Fp=?Z(c(p2)Z;V||#Al7HM(ecOCwvpHBj|K6_{H1v!1Ydv15f?d^Q>mde- ztAl1k3|{}TZvr*1!5(1Lo|t_Xx3iMenxk~otbZ8dOQgI>JUe|r^Hy1^R znYO!jGnb(g)J^awtycri3V$mn>%EUzRA3f8VV3(yLmLIqn2fvHk;1!ZHE|4kZ6QKb zwC&B7g7Tm)@C_axRp#IAhy;K_K6olY9LXXbwCS+JKAU$oP-x zRXD2;SWP(y?jew!Ecd6hK?WUF2|mkBzwxIOX1wzFqv@+{_}#Vr&3|qMFhF9x7ih*X zQH0ULy3rKM5kZ(d04fqJbX=k0pD3~r3GF11q{5YshJN=hVGhI0!R39HKbp*Y;*a8F zM=^*2t0`uM8O0z-JC^aHn8qb44N3`UG#D0)G<$}ow;{N@AI`EgOzWw+5sg;lFE_W| zHSIbgSrcIxtiME}kAI1!$$_%4VZEb+=YLnLw%V@hq#Mv0*buUyu)RKVU-!-Jx~a(x z1W!mAYPB5*oLbG6yulu+haLu^JPi#Bh?-nTT1yd3`YIWzXkY`{cqGaMI20?~x!}$aLZHt}2tH@uKg(qv8^N8x`_$@_)AUuc7GMAc z@XZ`jLo0`*r%-wI{xteq)-8pNee+?&A$JXgBfizv-EHtni=IB-C3AmB4t4QG;F~A_ z+4ckshcbqS41WPB6nt31GV=mrQ1A?MD!urRznRTJw-j{=$&@r_aF_YAL`yy7*y83M z6%mwVrgRWh6c8?y4;2wWvXJhfGJ+~0S5uj?1+&qV-z0r^q19t5J`P_2ZW(qT0tQ*c zY~7QyOko9lXgNUT566`gPCDVr11%jDC`Ys;li7G#h<`8T(}`v$eEQ{{0BbOIJQVF} zs+=(0)pVUwW2sH}Gg`z#)26PrBVvk$$SGnJhFw_6^NHpkwfd4at(la!~91$PI-|o9D}>J>=Lt>^cCe9AeTgzMv02%&Z<~ z@7z;1rhm}>tJz%S7+!CaAIDsJ9x?@{{kjlIRP3XuT#8Ux385uEhAdK0Dkk$9Cs{#M ztpqGdNpy<75(6^6Y$8QW9|e|xKw`Rb>>sC<_mw{s7xo!h=9jM)dVW_6qQI;L#c2ojQ7XW@^dWk5)B``?<8qN?{s6f|j z@PE|9XGMP7EO629@hO(Ipu28Xp+pQvsvH;$B*NJ#qGaid*k!!&8`LQxgL#>lDU3c_ zSM3T&SOjyG;|Z|_yWZDq&}GU@QUSg>G1H~5p2!kb-1XJfy6J8_wU?v|zF9Zh_o0hQ zXTC^y=M}@^$3&QRfG!iT$CrS|BFBYSe1Cbp$I@HqNFexlGo*!(ni%`lJ+;7L2O%Ir zPMCbuP~EThb>a;bGJ|_5PO5^wq%KE$;wy*C&^an)ejKTeufllcPfr^j?kBgL&! z$C`p~DoQ;Rw-1%^1Kcz}{KJGB--K{NTS@aW*2(v?IN)EGTaPtDt~5; zW?0r;v)VqruB(3E5(Xcw-40rSGc2QreVy7bU~e&aLUvMsB^nVW+Gv0-F2lqt1s9Zs z=WBn~Oxzi0?9g(dN#`W`Iy{)&L)B*ysu+`*&*N)x4u5`~jv{68dA>oOHx~qo4k#Ob zZ1{1H5xBC(C&d%}L-7-gN%w?g*?)mRmhr7Ge*1QHJ5Lr}1>RXmLI#j3B`Gozoy@C1 zIt1`Td;Kv)%_+}EpJ+blfAQ_T7#G;yB(;JmR!5Qh{R~H;t&&(BU$Cz))LL{wQOH@CY@qLe7|a+7C;kSg2UHk*G%KN)v0 zV{hy2waU`ybGKD88cl!f&8SCz>pG(AuEBwdTH8I)=*fWFH(1XG*8K1(DK?d;a+#yN*RfDp3EN7cD%y3s zw*%}_DmrKo((0CGPqy`=G`ibf%OWx~(M@9-T5-3PW%SH@ZA0IG(H)Y1PrBzXGM2F* zQI@)6QDh;MOi7k6z3pmy^db~l^kKSCXF!QbG!p%$)9v#BV!ym#EUFUp5^sQ23bs+n zCMznDl)&MzDmMUm3jgXsn^l5XvPNT;Ah6A{ZGKD$dEa2@)WICGIk-i>#=hgLxsYmvIOp+A_cnFO^1t71N z0A_X+L4V*5!TzNv61mC14^+Ymy!9u+={w-;+ScJIPY`TG{qj8Sy>fwCJFk+4H=G8q z1EBoy2 zwoKDLVA0UQ9xL8|q!OWWHpy`oZmQz^0S8UNFwh6LqhB@y40>QnN`u*8(AUtmsl+uM zk(`%rR4U>WP&@S)Mu; zjU2xr>p?1;Ic*Ah=Rec2hMF>NO%mRPz%&3Qp0ykAzbv~*cwa^ zSL_??BX+l75qy+Sa^6Axu(fx+?jcw60gdb4kElguqoDU&a6Jar*z1X64kv^(9j|emQpz>-h;wkT zORnpGm=PpZ2|#V7UXgSlu6G{kX-p_vc$6g{1fpeOXW+^g3UPj^7?p_v@}g(A_sSss zPlbdmB_uSoV~2*6rLP++Up1BNR5)N)dP6M|P%%%dCC}#V8c-Gxt5vq#GxHggj(w(L zpQ#u@APByiHfV=r^>rVN_WlOTo34hL#NUE{*n%ley_qT+Jubp3U0TF-msR)?_k!Q| zk25gSp>+2(ca2~6M0wn1Iiz!|Dd?uPX~Y;m4EC-y>yNXe*1OhFB zz;}vp)`Thm2Lo_jV92$KB{PYY#|XIRKr@Ru@eu4nG+rtvoCexg*z(&)8aL*g2DlS{ z^2`4?`FbG6j_UyrG&Fmnad7d=e6R9c#MKm14Z+1786R?|VaT}+;IyNlDrU&; zr}}v0k{TuxI#TYPB_*Uyh_{w?fF98DjUa`VQ6vGdrljP%kg5FejfJxuYR`S^z*4`3avHcvo*=f10U z#1KmR;mqhYpGrz-?TSzY`OYYz6a&9|C>j43j%$fV0AG);CrE}Y;&|YDG1R=2p$y_L zXQ-DGLip1bxSy=3jp&vIGXFh=X5uBfBi^b24g`8Cy6Hk;m8B7u3hYzhVwq zrO?&|pwTs|0D(ZNrKZwLO;yymVR?mnKmr)qmc0hnKUz)aurs_?vp_qPX8DC6-;Ri} zaYT1~2^7%Z#z`KUqyMa&5A9AN!-7YU1VPQqPg+`SxXMiZ=`-mtuj4m=fh@&dTwYv| z)I~vdE`sw*FX8d%u$9c@?Ll_q_YUab!r! zIAWmj1+=4gju|`s%?=ZfwGu`aF&OrxXDRjl)b(eIiyz@gl|&CzSor8GLhp%BfOw^z z#vifoSbsU0g9I8$rlJUci1*Je6nT8zsqpWp9H+{^H(bh*&hnXh=huVdi-qtRi6uGDZstopE={0}WV^28Vx$b&^N+~?7H{Och zkDXs#&tc;2G>;p9ywhr^_$RA{oGKAA=6dRLH;hJmF(j9k5)#Xu9r0nIeI^1W0T&cS z-XOz$WJLb~IAFZ+{|@@)iHpV*cRKn#SH5yqo6?G_@Y4HQTqH>)WN0ybbd^bTZ#vUc z4T@7}qINJRbSwD<8-A&Ca@-k(kN!U8YxgO+Ay>p1EqN(GB8_N0nlW0okT9y{`L0V{{h9F+CmCtZe(+Ga%Ev{3T19&Z(?c+F)=V8 zFd%PYY6?6&3NK7$ZfA68ATl{LF_W=vD1WV5S&!Su5q|ft&`Yo!WQNP`=D9!~lB}IL z>tuuVWPu|g7)1&8qK(=pW5O)WH))cE+9aFX{pMf6FujXRTGh6_(s?j8pMS1y zjL|_;_79e)hpQXxbp2R&Ekn9{9><*=d4H88LD|=3TM6V{lteas2(NirB)brr=vESJ z>%DCU;9NHKNVI)o_V0+$xb~%j0NS`7d6%d8UVCE=&NhiSfm#GHQv`U$i7!OV$gYDnbhb#l3+B|WJ ztP{bKuJtAGbVLI@*zuczH-DDq@*SiBmHFpYu2_?B6sFK@FX5dOSs15`wlFF$=ykgA z?JF3=!utK)%!Ea>zT5KomA6Qss<{Pqm8%TJ_nn40w`%67}F=_kjdTvQW~@&ST@8Goc&2Y>EJmLHrz z-;);E9$FYjPL93hoAn?Ud2o6*RdjlHQA~LfCQ;0|h)#~9Q_B=S<3O$kvQJb74>OFm zBy7`+wFoDM1K+9Y`%kPx0J3V~RO>J})%V5qLtnR5eJC3SldRZ{w`BG1`Z(}W?`yq_ zP1n9Ef$k)6apJ3T=YOk=*aj3Bw!wx04ql(}j#b$*^l44isR?s1bM@8#yQ;2UTG9-c z5vr_Mf8LXL=Qt>?zw~j!BwZ=IkOR&oJ5E_E!6OPIx#qMI5U9-cS!bH0DohGdoVwlC z6~dDDoU;e)DOS-mmH=wVtE9^y94`ex{&?8QBXaT3lP(MgwGl|hJc`jsWlw4SuknL3q(Mv003*aFd5N5G`JYwVsE6gYV1sO5cI zxmf5JL6CZXXdD)#$P%{+PRyXu*}6M8__s((4kDxY_`zFnRGi`(AxfuecD2McpttK9 zH&sgqj}206H-BOND$$ z2Ao@X$pyuQ3gbw4{pu>$l*CPKIa*{USdp3L$x)z=l}?~Wd?hB7$i2pj(l>_8m<+t$ zm2{IWpCMugPWiFiieqg$@o8Ifd`Neep649?86tEd{C{Wvf!BruWek|c!X>~Kf}j&l z5SY|VQ^%(%X@CyhT-_*O2#$^wZSSnm!KR6W_tph|2jcOyup?fH0UK~CbB=e4eF_&; z2>0pRckY8lKvszG;+zJJJdDUdTzagKnYnlapdY8f-cKZ%C>9+7(5L8h`A9!bfPR-; zD=jq9SAUwJ<6XxNf*cMm*^g%H{md1`h{Q=O0_fVNZpHhMQq-XhC12yDIX-$P@`_L~ z;}g1461diW;0c91@>2pY`@Wu?5ElwhIHH0b(N7?*+tyy2Fo7 z7ce2G)o%T>t&9hFXgc<>-uog+OS0jfv&YN*FkUifc$?59#;0^QCW%*x3YLu)0H*@Wgjw zgpepw>pOeCVAS#g@QE{@ue^&QeeTr=hYEj4a$;Bkz`jd%F zoTbnLy}ovRQR9(Enj-hfoX_(Sb-6ITRIlZT+@xyD>(B63<%R1htnNI+TUD4)XW9DB z1@$yZ`n-BB4z*`RgpYi=c501E(Bz+yMB15TPim)*bx3;s6%5o+Xp^U3#Xz0Jp?^8W z@JlFvMmMRT&GPIF<!$r8< zb-h|YbHy-uZ2P|Mrt_^J68S zH1UyL^8UvwF6vdlPg2U?OQ@FeVc@ak0W#cK5u}{A%owWp>t818D+{hxl`ElWtE#2z zOOG4|*`!-ON4t>W8U#13yl-0z$;LMlm84AS*u55inkf2SlZQIkfZQHhO+qS;8ZQGh@PTRKaX-!+x#``xf?&97} zMpZ;c)T%18GS4}g7U`2{r=HW3kLVVfMh@9^~ zI2HE5jgV%;lq57l;E~J-l<_pSYRq{5ZFf%B3Qnon$q2ira!u2>Sv+f(8M9QGb|pTW zHshreCGlSQN1Yn*9px(atUcC6!9)Ssg$~0}LxLu!6-ptF?n)L&d9ZFlf?6f{$CSsw z{h<6CZ0ugS84mRF7sW{hTy%+hMa6EbTO&ijnft<>vT6$0+Wfax%L7v2W z5twEuI$pHq)>tG63~dponGgCgx)*Iem)g-8zxB5!d?*euGupxJ#iyO{skdiSSIi{d zw!6Cee;1Gy`k9W<(pit_nickHkSIg$l+U&I(wlI+ql2BQh zrTbY1`4MEHyy6}zpDCD;(GXw|+Q|U^WTCg`HIp%%Cb9esB<}_OvJ%QD<6RruOPw8Y zCa^F`k$rN0TS|IYIeA$^&RFWV@W=0__~}Vs*@tqAB$yCQI(+GzIV0_+%Labm{zenc zG<)|^jd+~P#l*x8rpV_Hw*f~As`eH!aUYGG_Aql<*0f*#-XkL)&{eL8`atGp8}B3= zY0nvDzd*+fRI`tF3!yprUZOv5?+>g_@-fQapQ!Q+D@2hme_u8-Z%Z>FtTDi@^!2=c zQ4Mgg=1~xnwxp3tgHQS>U%I@@xW!HqCpB8K%tvecD&`bU9OHmC{zt~i;PK;0Rfbv^ zu$m*-5gpjmqk`6O24s#;^RS8(KF|CTC%?r@;1tz>zf_|(#{DdK9_EA34bor278q#ZT#TM^A*hv0$oMFJ>s>MN}n1PbrIQU#g5(A&A&P zJVy{JN^y_!Ii+-+`~aW#L*QbPwfO(Y;8~edO%l++I5;zd{=@tLT5@h%oXEYWTDLGW z+Au^QL_Oty$`q&+k)9qGA3;=FqH;)eP~$E>-mXnE)5N#(ZTOaA!?-;Ac5a4P5fDYN zKW-_HzHe@JyFZaFL`Y)U6+^q;iPI#K2lTPUMbd^@f20zxWXGWqY!ieUjbtiEmfKT& zNNMFdq>vA`_}R7town60?zs+mvDX7_(6}8pP=-BqQEYeZJ6mM-F~inftL*Gt>YvK- z%m`B4e~cqWyWWop?Wqr-)?uL~2SrPdr_!*CwK`^;yo7@Bn%Sb&Rg!2K{^aTV)YTU2 zD&p6|FHNPg#B-U{IS4hugYWf)mSbBQxlP6c{y^pEKw|wi6Yt3Gi zB#}TY`vF{jg)?8~ht~WjO6#F#9k?#|Rj1(L{cplLUTw}GPGl_UZe^}c2Kv*h1`GSz zDC~mPKlWSzB`%@Ww&964^95dCog8T1IrA#k`~LlipLq3M3M=}U93+ht>JkE?mcJ%j5F?;eLc*L@XtK~_O zTUJ?RaYUoG)itw{7Vr-=yi37MLsgz{MdyAfdA~}yyE87yL+etoCYbVWdd$fT)a5U1 zZ!KhJTt{BdqW!$r5_(^Wqa2kYUM6BtC3Bq-b!HEn)09wR(w zkdTPD<7G~|gB3nfAYV9#QkwEtxuO@Gf;!_r^*dpRq#>@IgR*wzRPHMMCWM_8nH%o@ zbuwCf-VOS03o+UEAKKZR7Sy<>^_yJ^eGuvy_$IPBY+EzlG4@J*@GYcsxe$qhjB=y5 zW#heFQ1WlMjpkjZ-sCe+xkVzK?iM=S%-_?zdX{g{I22JH3ZIZ54W0>}gsXOU_s!gS zdV28t2>~MRj;VNdc~!enyeMB2a@U&#lF-g8pT!p}Kx2mr&vnf!ns06@Dl^uv8~J&Xs@8LbrsmeGhQEyG{o;=-+3{X1 zH^p6;6!2)LTsW*Hpt^m@1KKF`BbMLmlZ(Cki} zQdU}LQ#nG*R(Rbsr!H>_ad>J_E5@vxo_JBm9J}+!L&&Hwud505m z@Y$U=x+)wj@I(wS)9tM;&GH0V;^4%nDX=uWBLXTc8fIe?(9L0(OGUq)Yuwq#nIM8} z^X_z$%`o`;rgxK8b0_gm>|I)Qh!zU-dyghc9dLD@g;mbxQ0-J|?pC78VAI|%Cj^dt zWhX~9?zsI`B%~I(uCt55uMOqv=4oLxLsAt8!~`k%q|kH-bw@{ zKZ1NXvtAeIx$^Kx^?Ltwl(PM&jV6A>b);sf6=jB6(mAKT4hPDXhq; zaGDlRz5)tyR8iMb@Ff)&!R;AG2oQPL=DMA|@)v2TS!rp-ba3K(RbI%HCe0;ysB6

    E>lQVdGsU@^LB4e>U+jEaatDze8C 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

    gP-c3+6&oP`(U)Jd3GQs;!43@SLI+-5!$#hN1? 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 C;oYwQ delta 124306 zcmV(?K-a(8fe^;?53n-=0fnBxj7M9smq>Ia|1y>m}Tr5&;n2>sLxmmnh{<6yCvRtjD zl*^*tw_S56x^m+ux_|4c^`l+hHPxLTAKGgFY4zdqrx&k7GA{dE<#98|hFZ2=-j%y@#h3e)Fv~8m0CN4pJ&|1`%w`~yEckFXrJ2YUmpf4Y zSCxON_xZN^llWark;DUGLSU5U(z0plXy`#}|+-G8BR%(#~}r=|DdrQVgG z8Oi4#S8M!OAG$#Gx++$}F0cLTRhffS>149tED@1;DVa&LMT(~s+H;>b#EzEB`ih=n z*_7Mz^GYiSqA2~87YWw*jf~p}uQ~A>KHt|JTdg%$%a@KVOc9r6SzgsmpmR&#hV?g1 z?S3xGG7^unA%AN9Y*+hlH|6_8s(tzBp#*2r_%jtXZG=N;uvqzXsD$Gj;CJK4Mcv?} zc~{kYn(&&cin7HifZXM!Qz8AZE%Qwn9$Nn~F-7kVOEf69dD~V+zV*MqbvoY{)eUAG z!^hkvmMI=o@T%V3c!lnPI6ONKz#jmr`!<@!`$Q*iUw{382lx2J<|J9Z-1+z0s=E#l zzPZ_g89Ez|<1Gk#bC``5WE#l=qG!fRZyPUj@QzQ7URIkjZ~f2#0#9!+7`$!bk=(0i zTXN4fo}Hf`v5mJe+YfE@NRgP-DIQXI$-rv}2MG(zMO%H^zX+z{=YsQbTq-r@GO#E!%}i#dJpOw6SU?9$uy*nd38gK| z$elBjtpn|?pM%YKcB`(P1(4R92@~)hj$4t!qo8{S{o=Lc6Yt3^4!7n2U>5ZMKH=u* zo5^u#)H~82^MWuMpcaG=_}#c;)RlLp{?~}zO@G;y&92%tD$!9#8v;hQ z{O&vdoYScUn0uWL8tbm}F2?F=yX~DDLI-xft6;F@_C7+aEt<*)#&QzrJxKp~TH^^q zqO@P8@^M}eRIajwDUfz@dqWNs?6mbih<^`G47H`7t2{cJiXy(pF9J9uZN`$ulHHI8 zV14PNfYG6iv`3kNT@pDLOzg65I)asTwupxh;`qe*icQF^CYpCANPz&8`V&Nk$&@3* zgSAZ!YGUxWz2-I)31N(_3$!%jV%7%fUq3@f@Y%p7;A>OQ#;vu0_e#tH837|-N`G2< z<6{q{6VlQ3!WajxS2Zp9yh`Pe574|9iCZvA2592yuy_2m=VKOmV+F5j(jc^#G2_Yj zknv!=soLVuw*JNQh5=$D4TPIPEQRMHv{*g)HsnK@Pd#Wk)>Zp3S09?T+I%p$ePt)bdv;&CZbH)gA^_#)zT&` z(?N&Y3}9v)@(tx8E|}8ye!{OUy1EHEg~OSN@Elfv+G4`WZ!<1# zov?HWLwBcPB9Uw?lJb%hJcq11v-%G_5IR5+v-Dfc`^r9r`$@FBO)j&l1^<@hjp1N#~|TM*Ez zImQL!x(`=F&N2Xs0N&2fPMLulBCnKbG1*|E)Qn}aSJAr}I%I?92u#z6$~4?dSn%x( z1;v!ej!-b+A!S1KHS-4_ihsZN>*OTYO&Q`ZrHP5kVjL7|h9W9pjU>r1Yq(z+b+gW9 zPst5x=IpDF`9M(eF$y>)PpCRO&6h-m&d>6tzgGNuV2e<`&M2-S<8a~aF9>ip^BQgQ zO!AZB3G$OtondPL-}A`t2)2S*EI{^V={=xU&$41U<#{7~e>>w7V1Lt`WdbV&8F?s_ zZhcDaqM57EFevZx-OaX~;n`-cZdyY=0v_o3OyoJCI5+~@+$c>>EhNCcko@uT;*X2y zlSQWBEEmFB29Hdzd_gw&=GS2fP5u?BK?ZMb?_r=*! z&aZ|BcvBYncI(TjQ8hj)tRJRfXR@aw{97i;l*SG+lop6Q^A0j)DoMX2f*tv{^o)PA z5FLt6A>nek`hOY^7byt~P}W-UcX9}&yiz1{3)`p^p|Nj+5=44R>q<<$eR7Deq_B_sv>+F0vqnWYh z?)E8jpAy_hIl2D51Czm4T@o+xVDdSqh_{074Wo&cy z*Pd$H=Irv{UGpp4$oU1^LwpbSPeaG7EJGLc&(d{OO*(W+t9?ip;+5LaMomY(YD3o# zwB!&rp?^!%*!Sb|sKLV((nM5BzUN%~e)UaLf83V4*1v_zO^mj68|GYd5>MAtI=Gws z#^1sE@5`bJU1z-ddX47urmKp>HgDY30a47GPi5bL*IqVkwN}zD--PaY)!(M`^q70P zy-2dyp4#o=mhmJlcnb8rcg0}tikjwo?}~AMZB0r0hxU8zE;u#^oV6Ib{`PNX-_~*o^wcFNf$_(RzM?1Zf%M%m>054?~ln;gaN=}v_ME@7C zVnS(?upTD^H#Req@M9@|9NCiF#_@f>0*_#oIhy;hDlc*DRGhd{vA4>ulJr0=u`5(~ ztU*#M{e5~4fCF#>cateqI{%BEmQjO_lZI8w6qkuBt!y%<9pYk%g)iIDlMnoLQW=n`=(yF_Ol zqBj%X9or6A4(uN005>fbbePQGiDep5ka0KZTR(}Y_#6=ZKtaMaQiK9WBv2YeZ3$~` zKNOQGliDdpv6yYk^~w+2?^bvFw{qiuw;zfy@=$)9P?gtzukWqMe)i9RJI`l}U9m~v z)i6{l;2LRzW1(;=5y8zgM-q$n#3W6d1qyMc+Y2tECJ~q%bEIeopTIXp5@2!yt4U`8 zJ#q-O>Xal!`V0zEVmb@nVvLU*!w49o4rnAn!R8z$k*1wuGHk~at?A$ImwHUb`XRaMz_1! z!jC>y>-URd8Rk5d+Yj~$=i4>>!g4>p05vE1L*d`N;)C$R*akoYmgT=rw8+EvyV)vi z;#A2F&5O5~@l}|x{ZRM`u}V6f=pZEwMVv5?)N;0et;$cJe~jh#>&iZGzm*-?TI`SQd{NwGmT1&d1+0176}2r(kmBHaUY&jCmI(C3QVi~y361Sf!83Pcnn z)lku}LL^}_#3C3m?R7$;r<7XFAn?E-U|@dcKUP5vy*`3-d~bmQWrTmcD*6e;8IcIo#igvhLuQuCicegEn=6+zeDOV2xAsVwmDMa=P@d!FxYhVi_ z25wC>T8zR@V1*p3sY4n9H&8C-v{dU5P<_{mD3r*5m>8b#0f!N5H{8SDicR^jdId9p z2D9z1D*X6Q-l`o!m9X*L2*jB5=Fn1{YMifkm4BEQ6$C6oi>pi>1D5N5 z-Np}8#Y0tWHqDCJ;$dBZ8*nZG-WTP6t;Z<*+rO)Mxtdj<{oB8a*=Fk>fBAhkt9&$c zV8yv+h-nYCx7#fLxtu=)NvW(K*#lvRVs_WAW8M-lJMIX2-w+eVmJu=A8YwW+hSfa& zE#-q568rm6+Ei0Qk%W+R3IVvrvb9-%+g4MsXH9IIw2&C?6*6OB_(TvV>U}$?paM|B zO-a^+0(R7iF*S1Dn6(gcsDKqu#X=N9ao{K1I;n2kCVROv%5oV@4w69XDM8!>Bj$zcwFL8gT2V$%&9Z2EnJ%47g>gMiHYxUAE>>I!Np(u{K4*FGgIFQL-r7 z+g(f+#VGC{f#z(o_`=W}kwtNKSsV@d3(4XsqDZew6zNroBK^aPBK@kO2w@`x!7aOZ zh@!-1#Hjz#m>%LlQrz8SPN3A6i&9F>;GV<* zu7tn897^hZD3L2c>C3sK1{Izltk_^21V1V*;VJC7LKKUyf&Q0R4K-{vj4g7|bTsum z*7N58^(RtL^5;{~3k8Q(LHQp*LCK3MDC=YcB^+xI4G6JRra&cb`zmpN+dn#Q%-SeZ zkjf=$#4yOIK$`bw5+PJEBFYtUk}+jqWylq|YD9k#j0lM^oYGqJTdGvlO2z~sWV)55 z=eU{hbAr(d5df7TNyK=ON}2Q)uOE*Pg<^sj?_l_iO?8P-s)UyqT;D4w?$`vtGO$x#fi;SMwJQS zYen6<1D}wY_%ck3|UXO4@lG1lTHDI z2ojftJ|zvOE%YQ(Qf+(D>okY=B7J+2)AypIocW=T1BY>N-AWLPfq;{4xyTGc^q4eY z1grBnE3l}NHyg2k1p2mhiMXp_Eeh#slK>kCX4MN{a80%G19|mw>{>OnZ`FX&y;!HD z8PK%pns~#0n!#ieYFxK_=O=3CS0>cJAj}y=K3uXfnxGCGhCWph4$~*cbF*biBw-^i zFOfGq=V|o$r-{MTPg337$7G-h9F*;Z-V0qF%2b^fNzI&p+KG{Br}}%UtiRWtrYZ`q zP|;9){56g~HldIgDs`nTKW@J1R`PgoeGm?;*1lOIl>cf!2rssnd8kk^IM($+P}zcp z4)g~x$-u44_JT;)de2ed%uMo}UQ#hl5Y?i+$o06)7M3Wl>b6H;gPpDJiaPRf9SyOI zr+}vdo_Ab-JPj_M>|Hz!E}nX0Nb}{|2P*#Up;#4_ZTGP+hv9`^(N{O!H=JQaC22#| z7i(*IB-SSKI%4gZ?wksDVhcmt+{BshyK;nD6tj7{$W6fsYZ7?w17Pc&5*J0q zX@Bi&(~W{7XizTGT|4{O)3qkyv>)I`cXJl3uRVw)eX`L}jix_0{@M?wm`vgJBvXEY zb-2trkaRi{jB&A_?MR>^#2eoww$ey5adPw6aLds^?-#kk&IZ-)Y+&t1KBI~6Y%pKY zE!}f}3+M!8>>yl@CRxgAp`6aD{uX)g%7U`zov(+^AKi{Nd=?ptD`x80p94Uo#RR!t zTERJX75 z>?9;FD2^wYnGh5t)lR{UiC#$UFJ$5_OJ^~EM(x$LYQ6fJq`YFSm**$pK-zClLVg~t z=VP>t=nD}{jENQ1|LJv7ygA~UNzuLu<++Z>*5P=Q?|W8upjpCW`?muPDm=+^{-FkMUfOnkDXb^CqZDd(dft5 z4K$1FAuF=K+!f*X&#SvP@371?(t?O=b)R9Tki;YtTp~hww%TOx^M5WB&COy-Dg1nV zD(j6O_m5TQN4sXRBr4ySZFthyUj`K6wRe_9TYuKSE`Th|-S6vlUp2M=x2d}IzUxfj zUH;-YHkSUs?j^MNu=?wpcLZk`Bh5Ln@-8t$nz3w2Bodf;dEYi|Yqn+JEqVU;vTv)8 zetf9Ok2n65Z(+{v`cLFyE@EvRagQDwp+VLx2w^nq)-{x8WAb{u69wmMC4{` zcBZz=^qrrnYX9q{g2Bdg)kByZzj|;+Zhr$+XZrA7WxeoVAcF$pl7CxJMPGo){ga>Y+k%PpB+ylKD707#ENr-uJW`f{qN{dK+fROS(>6zr zok=?g*n;t(?zw`%FM^-kH{0zfynkpu0!b6xYTeXb-|p9a#KwgO6&O!9VgWU5BmsFv z0J{LrKbk{Z1-Bn#*V|^{3@_-&@E+yfINLj#G*F)UC)g45DYWr|gJ#G8ZC=-)01-@qlW~%LY%@;n5KiRKO19f)9RnO*_25dn%nCi37gfls?8UP=C7EBpwt~ z=4Be3Q3vySXnJ#R%6{LPu_3%hAkQ2%q7^Enj4}JKl+GyPltv2hlv5^4Fe}9Lk}v>> zn7xA0>4;7tMS0}(KEVh81`on~OmGm0i-E%j2xh7BZ@fw*k_<8xiUMFeefQn!?mu@? zT|kXA&6vapW16jZcke$G*?$I}+5A8OyAF{dD&aUtdh1FftMtNu?%uIN6Ux zSaOg_Q5F@v1c`&1iH1j7Qsr0{h!K`CCz+#NCHAjT!DzM|QGMg7=me%Yr5ho97C}%ejm$wnUpi8dguygo#X#_5(2W@B z85~LTi~?SYDHk##qA^Kz<+TX{A1ZU5}H}CVLI5pC{lHb0&UW4M0O=JoM2|PATxjYHG1q_yBGn}!OO$c)rns^9=F~{CkXY^r_T1@qu z-~}=m#m`IleFzfkc( zm;z;5R)PE{wX1a9npE&b-Ms5{G!VYI=o9FyTiNNq4SJlMr1Eg z%tUbfdV(ht5~fglGJR75;QY@$m%xkPdu@ES~PUS~h6n{v8r%v+Y;jvoVGx4KOa#gri z`1ju5-<<-q0AH3Yq&j;3Uh!N4($pVNGb=z7vv8R)@#`$z!CxL+o72@-(cuBKZkz%;9S*qmv zfUH9FA+H7*X)E^6T)6KZqWiJu-8e99zUVq;Y~)WGK`Yy=c1@py zYizfhZq^d|;qAA>Ow*cOy3a$VZ62&K!XVYO&BJ(Z`#I&pd%M5WVJyZEi>-g4n>Tyb zfpqBfz}Pl*!wd6f*o2bj6|7nht2SG|cz@>!OaJ38s?+@*EH%PmGp*^?;C}UkZMcq| z6(%HuopCM z>_-4}?#2`&0>zl~ju*~^WIN0w1&Xuh%f+oxfZ4o`g)Y>Du1=$B3jIyfP==6;s4_^i_=tHA`vByez*g7}N4<_tfcA2ho2_ae1ay{Pq15r}B5L6LH zeLv%~X>QvR(_7fi1kXluSGX+p!i+hLGu;J8i^Qa!#EwZp#+1@TaL|8rn!-j+G4`5* z*6uaWbncZi0;XKEg@HX|ym1>*YaMfhA@@E>m*`OcQEf~nPI&`Ii^K|lPZZL{Jg&@rpuY6+#fN|WTUu#gR-8iPGC=N%W`M|Q@9i6lGq42 zBH0R1a8Q9_m+Utc%T9$VEe<70i2r+okoaH#K&$z`CGBNTNR{vmoxXUkzc3|w6lgH8 z5e2fJIm@o?_6cp)3L&7F4T0i0k1$Hf7b+#=Xo|m!QY5Yk(fjnx4N1a_jsqMjz=y-R= z%u)CLwS^b2-T1DnPZ$W5@HkxjB#J7W@mQGeHOE;^4HPzK7IAmTi1{yhUA=o8;k5hp z7=F|EZval&_R>vE#tCKOoEB&0lZp{w`gonmyYqg{S9X7)eyC z=NOr;ETn3er^CH9M#34w-guif!y5wgwP$M$p&VF?d00rHLa<{3nD(YV{9(1uq_T+6 zIL;iKWN1o|^6a;JtHDHWA)oY+V)A)@>}ErkS2p$FIu$o zGc=R%V<~@HTaVnf6@K4ep*~fEdT8-3rZ5n+wNo3-Lz6{g!1052M>{KfMzfJLUOT_O z=a7dQX@+~rrU;s%FFO=ohh3)?u=!Bfmm8^u*6@lPgVj;mw zV2lVpCsr^_n{kEri>0t-{sQSTZkbgE2&@WkIZmIwJU{#CjKdd2#xtO1PG&|**vDj- z+p~Xn?~7~&@7`nuldjBeJ>@n7MoJiLvhUCS83ZoM={ad3p_p{XDTHf z>g{3)Cw@zuIe6u)Ed7!NQ$l5maV`Vxd4hk(3MI4Ugz810lGEeyf@$E7#Pl*LN2A1} zHSxfyxd+fFt7B4u+km;SA7?k+G_zZ%TV0nAe?Oc3EV!B5G+ zjAnLUB$N&yZQRuEze<1$XN4dmkKun*Yr(jHZ?^Ew4~tTGP*EIUAr3a%T|eNs!06f4 z&v2{{m;^LOm;^Jsi=k@TdPQr5pAKW}rlP0}6Bp>5c|G9QxA>>7+pyENX`5~Ha|rD~ ziE-O|@Pq{jan_WXRt1Ehz(H4E?%ICn_Lp%Jlh<9h>%y>VS78v+0A;5MKs|q>v6063 zR3SyVt%k1o%oa-!dj73HFfi!P?2meUP64XqDjamoL*nUR*bsu(Kkb_U%^MI0$aElN z-vzpD_4yzhkN>pR(GkbAXF_t*!6LBahx&5x+QDq88Y)IM#Su3gSOwZk0bpZUSrR6l z`$eqIeR5T8!b3mQHwjxS0yKX{0l=gxVP$DYQ`2ZGqAWqa`^^f6AoH&I)Idu2CA=X{ zYkGN29{`{Bz$eZipEHsvpWYI1^2b6KUcE%x)fXtd&@|7-O4bptmQf?j?2E;)Rk}m)Ij$i;l z!Xi;hBf!!og7%(h^AMJlIskSeUp# z&c9G{!4vEWfP9HZov!`iLqZ^$=|k9iASS7q;mkHZ#3Uk$n;qpL8gd`W3^$WJ1hEH> z8KFlcLhD3q!a4}&X3p9Rl)ecW-rXiGoMuWLNgOTG@ci}m#s`0>T~Ao6qbUXjtPt;G zjj3}$E*uyi?%??!)w-+Nb)Ad`N@5;kNW(sX-we&orl~0!gm_5BYSoT7PNSx!ps+^( zqK6SLPZNX^awn@o{?CI@-z4)D1&~0hN4!j!2UM2!Y34E8>cl((7>?Qcv6n)jsmq75 zL;k4r(Ed-RhxdQT8fsxs>xAe}2@}E5ME61`y|u(D@(HRfcnX`q6OB9US)_C^JJ)Yr z7CaC)?-znSG4E5U&%EiYWJ>^YbPL}s!3CTgc`RjKeLPJ9S9M3(KD1?8pgk+XJVT78WIxzm@uNO<; zEd^a%Fe&sSuuDI!+>-Z|TT!`3tpq8Ub~cm7GE?yTS_wc|3VUBOK{}||WF{fg5YdFc zPDbxi$%j~c*nBwzX3#$545ExRy9Z~HvK0uTZZwtO9ahdT=>#heuyoX?oWPPu*5t0_ zPsP(2XD5Gn`t(SEoftD+inN+)D$KQ-ZdWSoxN#T=27nPLw{_J{fGPGP=N2O|@4|+j zuQz|MJ(#p;^{mMyPWsmN5mv!d`yE@wtkwC8O1$Ilkxev@gqW$iz^e~_6ox{0F}-e+AIFM%8EOTl{JAEUL|M7u zp}`VTOMDEKB&Tvr;wVD{Ny-4EiLcrf=DPd z1UQ{6IO7Es&ws$uSLd&N`{K}3!|?_?3s*yUm=p+KPRa>|J!{9fqVm&6`h=AWW}J99 zfyRGQOg|=p9;>rd(04wqfkev6$K7E(wuhzi8?1QJZLC1hBrou=@Zr9F?s)nCD&oHr z;Qk{`ZK1ReO5Ph@U!B&|M_rW}yods}}nT{r8{Dh8i&BZL7(aGo+!I^WE8@#b&j zr;HHhX=14``D{~lYd~Qhh z;msWl!BK^f5g{ndK5D4>H~4n(mb#fCzLY1eLEl;z6P@_>;VMi{`k9|6tmCV&o*TQ* zGH7~=r?gU3l|15=<6=f;VJttTep`1 zy;tFWsGw%nWQSGVH|zHKRb37Hj!b{>!T#;YL>YRDo{P6Bbpd+wF%q(qCM>}Sx1h-~ z8ZMqf$BP9Uc!lRH?`b;f1qM45To{s<#88KB+27ZI<`{O=Y~#me`utw>RI>#BIENI! zu*4US+iS^<1;B&js$wNTB-gV8TM|a9s zpM@bR%V(}Lnc*9dnIa<$7N_#n0;`x&tBcl2qnU2RWQdvhmq9evjyPtZ!EzBAnoe|$$8|Ik(K zi?i z;CnwOI{Eb72l%8okVoN%2VC+(?R_;+V>}p|b?hB)$7h_THcV>l(R9xCaE={m7r4wW zjS~^X4+;`lT$Cw^KbU5!e@9pbiqL6PwU7N^$HOtcxzkAzeY67}DYb~~4XF#84d2cF zoJeIHt@UDJ<8UML=mka0BQu=Zsxx6mHBzg!VO8Ds&Nv<(`}0;_`b*JM6_=7V-&A9D z3-hIns;8N8z`t>yQUR}SKdUP~IvO)tlp%$nBy%%uzwNf zsn}(S0Hi|anHXT2`yl3wd zV&Q#30aAj^(qetIduq^;ycfN8+@<6)({Y)X>*f2Y3ziQTN1u8aE6Zb5+tT1{kJsL$ zOB~d+6my>IU6=)2(z~#z{_Bs9y!JgIG{X&9MO9;df^bs(G3juDF&0OY_xa zWFWX;=4(p}k;XdFAeT>ECvfR%D<47bNpcyc^?YbQ4RlnGf3iGxEE@TJL&k$lwn$~< z$~w#AG-c~SM#6PEs+^mS-Z`PeLF-%oW{_)8m1E`1NPWvw&#EvD?=@~*nn>$7%~oh1|HP}V$esx4}QQoQd z{^^^oeHf|%GBt0|^xgY$JAh;wha3PJd^8*9!egF-D?s}Kt(sMC%Na7Lz06-C+sXyE^N~3p3DYXhmmW+F4Zf8! zlRSpJ#3=R}w><=Uw*}8*R872|DB`d~Fw^mzo)b#31szEiYjt_*HeduvWvW5Z@`|L6 zPJQq&e@|_K*xW-bxgZQ$7IuNGe4!BK7m87(j%C62J$Pl1{$~~;3IXX1?bx9qMIlj) z(o?2_oeCT5N^ht|03>FrT%XyzO#nqMV_oX?nuX7xbnG)F`%KCB0YUKDv_U&0t0#TX zI`|u`Z@Lv_s*te~Yz;8QG?9Fe*?m^^v_ZoW1hfbNzrnzR zCM3X?W*&2aAa^nmd`KcaM8G{A^(>~uW3UU2@l-LRG>m+;AFI*UkhNcUe_lmOchn`k$7Og0{I2o-syPxsu7b_M>M8uS z5IO%yw)n7T*eZNt8OPZY^9ojbflRh@V8^3p2t3yFcgZ(EZMQVM0OEqd1g%=v#<}xC z29rcx+&~s3Xm`p_!CT%yzzxMGDK_0+5SZ$er&P7+)rXFD?TN2z?poecfKr2DaF9|0EF?^uw6@I1n~9P4+P1OMS5=dLJT!8L|{Su%Ngp$ zj1Yde74D}SYNK(>0-66!p^|uw?pSLn!4BmyPeSz{Xq8qGXI$`(7a9QWwVzs=d9ua_ zD>R7#AlXBA0`JFrbv)*14zmNKe|w&8g0?-u@yD>qC}qRQ;Ay+I=USAthsrVaC(v zo}M@s$5mggo6p!HFjAB;6mqW|OUmC)T)&4}d<$F3H2Olc!Uta->P~$9!z&Hc{vNB2 z?MIU(M8GI8v{>Z)I`FR>f1r4L-I?}xM8=8t4~B^x=`35Q=Yed&^+_J~d6-zc6^1ZE zd9!?yK?JYbv#D-_%@^fM(0g4u-jp5$aCcbk#%sw+Hh8ojpeP}iF!&f!| zJ|Z%G_>W0}FA$-|VkdxTA&( zh>TjcyL|TKf24YT6Qto#OY4PSgsii4CxzJuvaBvhY@b0ZVoUhK%{GMZ;9u~_X;p9; zm26*4B}=cKcS#~aU4L!pN?%XrP){=Vh2JhqN|?4RDODO$yW7l0DZsc&GDE}Tga45@dX9da3WBxzkPNK}J z+})`pP9*b$RIDcb>HgjS0R{h37L)PF69F)j0TdJiI5RMl@M9={ty$e~3VWhDXt<*{x6J}|?N|P+qCRyF?R{spD zdS~0A?%H8}ZFCZU^!C?7-P?+0X)ty??t8md!C?E3Yn=s_fkpBg{^;&`@3@tfu`lbk zZXXyt*zwze7e20&Bq;m3Y&Z7%^>u8L;2-N;1>J#BH{GGB*8jTw%SpQ9B-A;RjjLL0 z$qPE2HhlLMOEb3p-pqtWwA|Y={z6PiSmfAnTVeg*C(g@%!Z_0&VbksQU2EHM5KMDg z;5r83S-iOXcNd7&NfO3Iw!p7W5IesjjlEJmrqWiP-`C8{t7CIoF042JL^F<@~|W9!-lZ8XVruex@21J*4K3YINBa3qBr_Pl3P-#@br0m!BWtkzNB=#aDf<@SAFx0`xjHVh_R z0S_0quwd)9j{~DV(*&kRj6`8kq%%%pwMw-LO~!mY5zA#uzausqaShlnT!Z}r0=(j- zXPP*Z#`>mg8G6}Jb!x&KvYcP~e>c>{Npp@3I96GIvAEqcc<01tnTe8NA0m@am!zhTVA&tqOWp-AV|I2H;xLjVv;Ljp0If#rB;0N!%QSp-2M1?BXQ=BEKfxK|OJ(!W^^nYNc?Tj}crN}VrUIqrw#jtG-$F|qy*SZ5rp9sfsdMb>KJmC~b{dgGc{ed(S#bP4>Hf8@{W%H4LV1WODbgQ)RM7K0U$E!{p z1ljMKXZ{rL{VWtE5gxEqF$-PW)U8B+A2NzMwBZ#`yOsmW6rCt4!o*A<2<5AF z6b#fG+q*f=85Pk67?BR2=yA- z%5N{RmPBD1WnU%2ILX5}H(w{hREH>!UK-CA@NQlqCevY5oM8Q8A`@qSDXc&*w_TmJ zc%+e9UQn@t0et)+hr_{uxVTok@1lI(4i=vg@x9poT%4JpC#G>Ld=$OA5b)^H*$>s@W{h zPH_H85uAsad0{v7@DxRV;NE{2o=cu`$t^HeeMvE$-lb=T+~eVJFI-L)uzLe?-_yt` zV%v{(cNk8l3^A$~RB%#%&of0TL8w=8qEbudc5|xE&%-2|5NbJ%OK?2E{Ms>a*wOpi z`)a8?bzc#Oko(e1&z6=aGm&eR$66Vfs+};w<1sd%Px8U zcJZmlR%@GT35%KiG+gY}gKSF6gEP_(qE$L84|vL9rT zcKICbOonTar$xrcHrEkwRS7pq;)rU30!%#fY+FBUuc^yMOb!0^#=@{KxneDxyGKO{f2dp^g)6)YR8(zM62;Gd6eqdRq|phJ&?ZexY9Qz& zV!{=j5PZ}1sFHo}h*Cp$SjVd+PbC98_YN8qLn;+d?DZE|$B4hl!x4gRr&S*{K8YnWT}vX{mqM{c`Vq z(#?wIU7^T-6;(AGudmS~pZq)jdYsw?wX_B#-Gy=8HFmjC>IewJmlEbEX*W5F(zotj z24sy)S0^HQ%HrwB|G+$@(+#Oe*C7pNCQ-X4mPo(1)xm85C9Xy-d z&4FID=@1?lA&&Ro^SkGcSV#((SH4@r2t&8CRI?A~OkSs1Xkw`{EmybBWb)w9_FW?Z z3)89`ORCv<=54e<6tE21G~FPd^9V~**SW62UB!T1+1B@6Q<0joh`K(CNyeJ}RFdfs zBe8OS9&qXfr{25CMesPP>0CQ=YC 5FL;db7N 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

    5_cI@`^Ff6#JXzMc3UZW{sz& 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 Jq*SC4{|g(XdvX8( diff --git a/doc/src/DimRed/DimRed.do.txt b/doc/src/DimRed/DimRed.do.txt index 077e1be6c..621e66422 100644 --- a/doc/src/DimRed/DimRed.do.txt +++ b/doc/src/DimRed/DimRed.do.txt @@ -337,6 +337,14 @@ applications. !split ===== Basic ideas of the Principal Component Analysis (PCA) ===== +The principal component analysis deals with the problem of fitting a +low-dimensional affine subspace $S$ of dimension $d$ much smaller than +the totaldimension $D$ of the problem at hand (our data +set). Mathematically it can be formulated as a statistical problem or +a geometric problem. In our discussion of the theorem for the +classical PCA, we will stay with a statistical approach. This is also +what set the scene historically which for the PCA. + We have a data set defined by a design/feature matrix $\bm{X}$ (see below for its definition) * Each data point is determined by $p$ extrinsic (measurement) variables * We may want to ask the following question: Are there fewer intrinsic variables (say $d << p$) that still approximately describe the data? @@ -347,7 +355,7 @@ We have a data set defined by a design/feature matrix $\bm{X}$ (see below for it ===== Introducing the Covariance and Correlation functions ===== Before we discuss the PCA theorem, we need to remind ourselves about -the definition of the covariance and the correlation function. +the definition of the covariance and the correlation function. These are quantities Suppose we have defined two vectors $\hat{x}$ and $\hat{y}$ with $n$ elements each. The covariance matrix $\bm{C}$ is defined as @@ -409,7 +417,9 @@ In the above example this is the function we constructed using _pandas_. !split ===== Correlation Function and Design/Feature Matrix ===== -In our derivation of the various regression algorithms like Ordinary Least Squares or Ridge regression we defined the design/feature matrix $\bm{X}$ as +In our derivation of the various regression algorithms like _Ordinary Least Squares_ or _Ridge regression_ +we defined the design/feature matrix $\bm{X}$ as + !bt \[ \bm{X}=\begin{bmatrix} @@ -437,7 +447,11 @@ with a given vector \] !et -With these definitions, we can now rewrite our $2\times 2$ correaltion/covariance matrix in terms of a moe general design/feature matrix $\bm{X}\in {\mathbb{R}}^{n\times p}$. This leads to a $p\times p$ covariance matrix for the vectors $\bm{x}_i$ with $i =0,1,\dots,p-1$ +With these definitions, we can now rewrite our $2\times 2$ +correaltion/covariance matrix in terms of a moe general design/feature +matrix $\bm{X}\in {\mathbb{R}}^{n\times p}$. This leads to a $p\times p$ +covariance matrix for the vectors $\bm{x}_i$ with $i=0,1,\dots,p-1$ + !bt \[ \bm{C}[\bm{x}] = \begin{bmatrix} @@ -624,8 +638,8 @@ columns since all matrix elements in the design matrix were set to one This means that the variance for these elements will be zero and will cause problems when we set up the correlation matrix. We can simply -drop these elements as follows and then construct the correlation -matrix. +drop these elements and construct a correlation +matrix without these elements. !split @@ -773,7 +787,7 @@ X = np.random.multivariate_normal(mean, cov, n) Make thereafter a small Python code which plots the data. Note that the function _multivariate_ returns also the covariance discussed above and that it is defined by dividing by $n-1$ instead of $n$. -Now we are going to implement the PCA algorithm. We will break it down into sub-steps and across multiple cells. +Now we are going to implement the PCA algorithm. We will break it down into various substeps. === Compute the sample mean and center the data === @@ -835,8 +849,11 @@ Finally, try out your own PCA function with other data sets. !split ===== Classical PCA Theorem ===== -We assume now that we have a design matrix $\bm{X}$ which has been centered as discussed above. For the sake of simplicity we skip the overline symbol. The matrix is defined in terms of the various column vectors $[\bm{x}_0,\bm{x}_1,\dots, \bm{x}_{p-1}]$ -each with dimension $\bm{x}\in {\mathbb{R}}^{n}$. +We assume now that we have a design matrix $\bm{X}$ which has been +centered as discussed above. For the sake of simplicity we skip the +overline symbol. The matrix is defined in terms of the various column +vectors $[\bm{x}_0,\bm{x}_1,\dots, \bm{x}_{p-1}]$ each with dimension +$\bm{x}\in {\mathbb{R}}^{n}$. We assume also that we have an orthogonal transformation $\bm{W}\in {\mathbb{R}}^{p\times p}$. We define the reconstruction error (which is similar to the mean squared error we have seen before) as !bt @@ -847,7 +864,13 @@ J(\bm{W},\bm{Z}) = \frac{1}{n}\sum_i (\bm{x}_i - \overline{\bm{x}}_i)^2, with $\overline{\bm{x}}_i = \bm{W}\bm{z}_i$, where $\bm{z}_i$ is a row vector with dimension ${\mathbb{R}}^{n}$ of the matrix $\bm{Z}\in{\mathbb{R}}^{p\times n}$. When doing PCA we want to reduce this dimensionality. -The PCA theorem states that minimizing the above reconstruction error corresponds to setting $\bm{W}=\bm{S}$, the orthogonal matrix which diagonalizes the empirical covariance(correlation) matrix. The optimal low-dimensional encoding of the data is then given by a set of vectors $\bm{z}_i$ with at most $l$ vectors, with $l << p$, defined by the orthogonal projection of the data onto the columns spanned by the eigenvectors of the covariance(correlations matrix). +The PCA theorem states that minimizing the above reconstruction error +corresponds to setting $\bm{W}=\bm{S}$, the orthogonal matrix which +diagonalizes the empirical covariance(correlation) matrix. The optimal +low-dimensional encoding of the data is then given by a set of vectors +$\bm{z}_i$ with at most $l$ vectors, with $l << p$, defined by the +orthogonal projection of the data onto the columns spanned by the +eigenvectors of the covariance(correlations matrix). @@ -912,7 +935,10 @@ we have thus that \] !et -We are almost there, we have obtained a relation between minimizing the reconstruction error and the variance and the covariance matrix. Minimizing the error is equivalent to maximizing the variance of the projected data. +We are almost there, we have obtained a relation between minimizing +the reconstruction error and the variance and the covariance +matrix. Minimizing the error is equivalent to maximizing the variance +of the projected data. !split ===== The final step ===== @@ -965,9 +991,12 @@ discussion in chapter 12.2 of Murphy's text has also a nice link with the Singular Value Decomposition theorem. For categorical data, see chapter 12.4 and discussion therein. +Additional part of the proof for the other eigenvectors will be added by mid January 2020. +!split +===== Geometric Interpretation and link with Singular Value Decomposition ===== - +This material will be added by mid January 2020. !split