From 4df1fb1eccd7d880d0afa7d11dddbceae2198f80 Mon Sep 17 00:00:00 2001 From: mhjensen Date: Fri, 8 Nov 2019 05:34:05 +0100 Subject: [PATCH] more cleaning --- .../html/._DecisionTrees-bs000.html | 44 ++--- .../html/._DecisionTrees-bs001.html | 44 ++--- .../html/._DecisionTrees-bs002.html | 44 ++--- .../html/._DecisionTrees-bs003.html | 44 ++--- .../html/._DecisionTrees-bs004.html | 44 ++--- .../html/._DecisionTrees-bs005.html | 44 ++--- .../html/._DecisionTrees-bs006.html | 44 ++--- .../html/._DecisionTrees-bs007.html | 44 ++--- .../html/._DecisionTrees-bs008.html | 44 ++--- .../html/._DecisionTrees-bs009.html | 44 ++--- .../html/._DecisionTrees-bs010.html | 44 ++--- .../html/._DecisionTrees-bs011.html | 44 ++--- .../html/._DecisionTrees-bs012.html | 44 ++--- .../html/._DecisionTrees-bs013.html | 44 ++--- .../html/._DecisionTrees-bs014.html | 44 ++--- .../html/._DecisionTrees-bs015.html | 44 ++--- .../html/._DecisionTrees-bs016.html | 44 ++--- .../html/._DecisionTrees-bs017.html | 44 ++--- .../html/._DecisionTrees-bs018.html | 44 ++--- .../html/._DecisionTrees-bs019.html | 44 ++--- .../html/._DecisionTrees-bs020.html | 44 ++--- .../html/._DecisionTrees-bs021.html | 44 ++--- .../html/._DecisionTrees-bs022.html | 44 ++--- .../html/._DecisionTrees-bs023.html | 44 ++--- .../html/._DecisionTrees-bs024.html | 44 ++--- .../html/._DecisionTrees-bs025.html | 44 ++--- .../html/._DecisionTrees-bs026.html | 44 ++--- .../html/._DecisionTrees-bs027.html | 44 ++--- .../html/._DecisionTrees-bs028.html | 44 ++--- .../html/._DecisionTrees-bs029.html | 44 ++--- .../html/._DecisionTrees-bs030.html | 44 ++--- .../html/._DecisionTrees-bs031.html | 44 ++--- .../html/._DecisionTrees-bs032.html | 44 ++--- .../html/._DecisionTrees-bs033.html | 44 ++--- .../html/._DecisionTrees-bs034.html | 44 ++--- .../html/._DecisionTrees-bs035.html | 44 ++--- .../html/._DecisionTrees-bs036.html | 44 ++--- .../html/._DecisionTrees-bs037.html | 44 ++--- .../html/._DecisionTrees-bs038.html | 44 ++--- .../html/._DecisionTrees-bs039.html | 44 ++--- .../html/._DecisionTrees-bs040.html | 44 ++--- .../html/._DecisionTrees-bs041.html | 44 ++--- .../html/._DecisionTrees-bs042.html | 44 ++--- .../html/._DecisionTrees-bs043.html | 44 ++--- .../html/._DecisionTrees-bs044.html | 44 ++--- .../html/._DecisionTrees-bs045.html | 44 ++--- .../html/._DecisionTrees-bs046.html | 44 ++--- .../html/._DecisionTrees-bs047.html | 48 +++--- .../html/._DecisionTrees-bs048.html | 44 ++--- .../html/._DecisionTrees-bs049.html | 56 ++++--- .../html/._DecisionTrees-bs050.html | 76 +++++---- .../html/._DecisionTrees-bs051.html | 85 ++++------ .../html/._DecisionTrees-bs052.html | 96 ++++++----- .../html/._DecisionTrees-bs053.html | 75 ++++++--- .../html/._DecisionTrees-bs054.html | 70 ++++---- .../html/._DecisionTrees-bs055.html | 149 +++++------------ .../html/._DecisionTrees-bs056.html | 155 +++++++++++------- .../html/._DecisionTrees-bs057.html | 114 +++++++++---- .../DecisionTrees/html/DecisionTrees-bs.html | 44 ++--- .../html/DecisionTrees-reveal.html | 75 +++++++-- .../html/DecisionTrees-solarized.html | 85 +++++++--- doc/pub/DecisionTrees/html/DecisionTrees.html | 85 +++++++--- .../DecisionTrees/ipynb/DecisionTrees.ipynb | 93 ++++++++++- .../ipynb/ipynb-DecisionTrees-src.tar.gz | Bin 294061 -> 294061 bytes .../pdf/DecisionTrees-minted.pdf | Bin 536529 -> 538378 bytes doc/src/DecisionTrees/DecisionTrees.do.txt | 45 ++++- 66 files changed, 1930 insertions(+), 1533 deletions(-) diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs000.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs000.html index 2c5b1c41f..4ad69c7e8 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs000.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs000.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -296,7 +298,7 @@ MathJax.Hub.Config({
  • 9
  • 10
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs001.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs001.html index d7053e6f6..af458a527 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs001.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs001.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -301,7 +303,7 @@ given some assumptions, make predictions about the target feature value
  • 10
  • 11
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs002.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs002.html index 2d4cb3b8e..1ee4ea5c3 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs002.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs002.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -279,7 +281,7 @@ This tree was produced using the Wisconsin cancer data (discussed here as well,
  • 11
  • 12
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs003.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs003.html index 1d37565bf..ed6cfa12c 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs003.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs003.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -287,7 +289,7 @@ node.
  • 12
  • 13
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs004.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs004.html index a464fee9b..c0696f3c5 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs004.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs004.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -288,7 +290,7 @@ Then we are essentially done!
  • 13
  • 14
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs005.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs005.html index 9afb71753..1e62e681c 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs005.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs005.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -367,7 +369,7 @@ plt.show()
  • 14
  • 15
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs006.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs006.html index f411da8ec..629d9fd81 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs006.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs006.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -300,7 +302,7 @@ within box \( j \).
  • 15
  • 16
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs007.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs007.html index 68d56d9ff..eb4898b13 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs007.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs007.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -292,7 +294,7 @@ better tree in some future step.
  • 16
  • 17
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs008.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs008.html index 3faec87be..2c35cc054 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs008.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs008.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -325,7 +327,7 @@ region contains more than five observations.
  • 17
  • 18
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs009.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs009.html index 6f5415d41..fafee14cd 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs009.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs009.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -294,7 +296,7 @@ parameter \( \alpha \).
  • 18
  • 19
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs010.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs010.html index cb2753e89..d7a84a484 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs010.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs010.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -307,7 +309,7 @@ subtree corresponding to \( \alpha \).
  • 19
  • 20
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs011.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs011.html index e3ffc776a..024094bce 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs011.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs011.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -303,7 +305,7 @@ MathJax.Hub.Config({
  • 20
  • 21
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs012.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs012.html index a6f5acf69..6390bcc11 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs012.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs012.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -295,7 +297,7 @@ fall into that region.
  • 21
  • 22
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs013.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs013.html index 53fdfece4..2272f8264 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs013.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs013.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -300,7 +302,7 @@ than is the classification error rate.
  • 22
  • 23
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs014.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs014.html index b88afea4a..1ee914fee 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs014.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs014.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -326,7 +328,7 @@ $$
  • 23
  • 24
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs015.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs015.html index 3a446242d..b03b9e931 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs015.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs015.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -317,7 +319,7 @@ os.system(cmd)
  • 24
  • 25
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs016.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs016.html index bb45fd29a..513ceca1d 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs016.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs016.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -308,7 +310,7 @@ os.system(cmd)
  • 25
  • 26
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs017.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs017.html index a497b1771..aec974035 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs017.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs017.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -291,7 +293,7 @@ We discuss both algorithms with applications here. The popular library Scikit
  • 26
  • 27
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs018.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs018.html index a6cd2421e..1b43c6a8c 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs018.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs018.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -281,7 +283,7 @@ MathJax.Hub.Config({
  • 27
  • 28
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs019.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs019.html index ce78078b4..a70590f6e 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs019.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs019.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -281,7 +283,7 @@ MathJax.Hub.Config({
  • 28
  • 29
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs020.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs020.html index 42f030fd4..7e79c572f 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs020.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs020.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -321,7 +323,7 @@ The table here summarizes the various attributes and
  • 29
  • 30
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs021.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs021.html index fca80a3ca..ebf7e3762 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs021.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs021.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -352,7 +354,7 @@ os.system(cmd)
  • 30
  • 31
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs022.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs022.html index d3a0d46df..ac5900e51 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs022.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs022.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -354,7 +356,7 @@ split = get_split(dataset)
  • 31
  • 32
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs023.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs023.html index 688c6bdc8..eb1f8aea9 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs023.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs023.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -312,7 +314,7 @@ attributes at each step while growing the tree.
  • 32
  • 33
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs024.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs024.html index cc1269996..306ca9a25 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs024.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs024.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -472,7 +474,7 @@ MathJax.Hub.Config({
  • 33
  • 34
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs025.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs025.html index 55ce4a637..896060889 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs025.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs025.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -325,7 +327,7 @@ deep_tree_clf.fit(X_train_scaled, y_train)
  • 34
  • 35
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs026.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs026.html index 62d72d0dc..3eed10ca9 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs026.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs026.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -348,7 +350,7 @@ plt.show()
  • 35
  • 36
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs027.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs027.html index 6506033b6..4771dc74c 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs027.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs027.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -304,7 +306,7 @@ plt.show()
  • 36
  • 37
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs028.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs028.html index 3fba7d9a2..10560bc69 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs028.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs028.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -298,7 +300,7 @@ tree_reg.fit(X, y)
  • 37
  • 38
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs029.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs029.html index 08d4f065f..e69405891 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs029.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs029.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -354,7 +356,7 @@ plt.show()
  • 38
  • 39
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs030.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs030.html index 6bf46786f..6c13085ca 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs030.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs030.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -290,7 +292,7 @@ MathJax.Hub.Config({
  • 39
  • 40
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs031.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs031.html index ed239515a..1b731ef21 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs031.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs031.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -293,7 +295,7 @@ However, by aggregating many decision trees, using methods like bagging, random
  • 40
  • 41
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs032.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs032.html index d4c1c9f0f..775b66caa 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs032.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs032.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -300,7 +302,7 @@ We discuss these methods here.
  • 41
  • 42
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs033.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs033.html index c45171198..c41a8521c 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs033.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs033.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -284,7 +286,7 @@ MathJax.Hub.Config({
  • 42
  • 43
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs034.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs034.html index 9a5d5a36d..92dddf039 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs034.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs034.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -295,7 +297,7 @@ learning method.
  • 43
  • 44
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs035.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs035.html index 369ad5478..0ee5bf69e 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs035.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs035.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -305,7 +307,7 @@ predictor, averaged over all \( B \) trees.
  • 44
  • 45
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs036.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs036.html index 8f94c5fad..8a63ae44e 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs036.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs036.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -296,7 +298,7 @@ plt.show()
  • 45
  • 46
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs037.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs037.html index 85083c311..e7f0fe107 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs037.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs037.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -327,7 +329,7 @@ voting_clf.fit(X_train, y_train)
  • 46
  • 47
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs038.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs038.html index 1ad91ae25..3ab620a74 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs038.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs038.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -334,7 +336,7 @@ voting_clf.fit(X_train, y_train)
  • 47
  • 48
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs039.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs039.html index 3dc135c85..efa07f8a0 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs039.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs039.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -337,7 +339,7 @@ plt.show()
  • 48
  • 49
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs040.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs040.html index 7d385e49c..034972284 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs040.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs040.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -335,7 +337,7 @@ plt.show()
  • 49
  • 50
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs041.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs041.html index c512686c0..7a7a9aaad 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs041.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs041.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -320,7 +322,7 @@ this setting.
  • 50
  • 51
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs042.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs042.html index f62977b12..b4d53777f 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs042.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs042.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -302,7 +304,7 @@ We will grow of forest of say \( M \) trees.
  • 51
  • 52
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs043.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs043.html index b25831f6c..dbb115f41 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs043.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs043.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -349,7 +351,7 @@ plt.show()
  • 52
  • 53
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs044.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs044.html index d143b6c76..c4f9dcfcb 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs044.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs044.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -298,7 +300,7 @@ np.sum(y_pred =
  • 53
  • 54
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs045.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs045.html index b151b2a8e..de5bbff3d 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs045.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs045.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -293,7 +295,7 @@ them with a factor.
  • 54
  • 55
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs046.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs046.html index 0743680c6..8c2e94a5a 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs046.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs046.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -316,7 +318,7 @@ In iterative fitting or additive modeling, we minimize the cost function with re
  • 55
  • 56
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs047.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs047.html index 3fe3cddaf..01fc229e6 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs047.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs047.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -264,9 +266,9 @@ The way we proceed is as follows (here we specialize to the squared-error cost f
  • For \( m=1:M \)
      -
    1. minmize $\sum_{i=0}^{n-1}(y_i-f_{m-1}(x_i)-\beta b(x;\gamma))^2 wrt \( \gamma \) and $\beta$$
    2. +
    3. minimize \( \sum_{i=0}^{n-1}(y_i-f_{m-1}(x_i)-\beta b(x;\gamma))^2 \) wrt \( \gamma \) and \( \beta \)
    4. This gives the optimial values \( \beta_m \) and \( \gamma_m \)
    5. -
    6. Determine then the new values $f_m(x)=f_{m-1}(x) +\beta_m b(x;\gamma_m)
    7. +
    8. Determine then the new values \( f_m(x)=f_{m-1}(x) +\beta_m b(x;\gamma_m) \)
    @@ -299,7 +301,7 @@ We could use any of the algorithms we have discussed till now. If we use trees,
  • 56
  • 57
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs048.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs048.html index e77407903..e7a5cc621 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs048.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs048.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -310,7 +312,7 @@ $$
  • 57
  • 58
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs049.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs049.html index cbd0f9069..8ebe52e23 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs049.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs049.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -265,9 +267,19 @@ $$ The simplest possible cost function which leads (also simple from a computational point of view) to the AdaBoost algorithm is the exponential cost/loss function defined as $$ -C(\boldsymbol{y},\boldsymbol{f}) = \sum_{i=0}^{n-1}\exp{-(y_i(f_{m-1(x_i)+\beta G(x_i})} +C(\boldsymbol{y},\boldsymbol{f}) = \sum_{i=0}^{n-1}\exp{-(y_i(f_{m-1}(x_i)+\beta G(x_i))}. $$ +

    +We optimize \( \beta \) and \( G \) for each value of \( m=1:M \) as we did in the regression case. +This is normally done in two steps. Let us however first rewrite the cost function as + +$$ +C(\boldsymbol{y},\boldsymbol{f}) = \sum_{i=0}^{n-1}w_i^{m}\exp{-(y_i\beta G(x_i))}, +$$ + +where we have defined \( w_i^m= \exp{-(y_if_{m-1}(x_i))} \). +

    @@ -294,7 +306,7 @@ $$

  • 58
  • 59
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs050.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs050.html index 5cfe30a73..97e1a58ab 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs050.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs050.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -253,26 +255,32 @@ MathJax.Hub.Config({ -

    Adaptive boosting: AdaBoost, Basic Algorithm

    +

    Building up AdaBoost

    -The algorithm here is rather straightforward. Assume that our weak -classifier is a decision tree and we consider a binary set of outputs -with \( y_i \in \{-1,1\} \) and \( i=0,1,2,\dots,n-1 \) as our set of -observations. Our design matrix is given in terms of the -feature/predictor vectors -\( \boldsymbol{X}=[\boldsymbol{x}_0\boldsymbol{x}_1\dots\boldsymbol{x}_{p-1} \). Finally, we define also a -classifier determined by our data via a function \( G(\boldsymbol{X}) \). This function tells us how well we are able to classify our outputs/targets \( \boldsymbol{y} \). - -

    -We can then define the misclassification error \( \mathrm{err} \) as +First, for any \( \beta > 0 \), we optimize \( G \) by setting $$ -\mathrm{err}=\frac{1}{n}\sum_{i=0}^{n-1}I(y_i\ne G(\boldsymbol{X}_{i*}), +G_m(x) = \mathrm{sign} \sum_{i=0}^{n-1} w_i^m I(y_i \ne G_(x_i)), $$ -where the function \( I() \) is one if we misclassify and zero if we classify correctly. +which is the classifier that minimizes the weighted error rate in predicting \( y \).

    +We can do this by rewriting +$$ +\exp{-\beta}\sum_{y_i=G(x_i)}w_i^m+\exp{\beta}\sum_{y_i\ne G(x_i)}w_i^m, +$$ + +which can be rewritten as +$$ +(\exp{\beta}-\exp{-\beta})\sum_{i=0}^{n-1}w_i^mI(y_i\ne G(x_i))+\exp{-\beta}\sum_{i=0}^{n-1}w_i^m=0, +$$ + +which leads to +$$ +\beta_m = frac{1}{2}\log{\frac{1-\mathrm{\overline{err}}}{\mathrm{\overline{err}}}}, +$$ +

      @@ -297,6 +305,8 @@ where the function \( I() \) is one if we misclassify and zero if we classify co
    • 58
    • 59
    • 60
    • +
    • ...
    • +
    • 61
    • »
    diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs051.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs051.html index 04529d0ff..f944dd2e6 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs051.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs051.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -253,42 +255,24 @@ MathJax.Hub.Config({ -

    Basic Steps of AdaBoost

    +

    Adaptive boosting: AdaBoost, Basic Algorithm

    -With the above definitions we are now ready to set up the algorithm for AdaBoost. -The basic idea is to set up weights which will be used to scale the correctly classified and the misclassified cases. - -

      -
    1. We start by initializing all weights to \( w_i = 1/n \), with \( i=0,1,2,\dots n-1 \). It is to see then that \( \sum_{i=0}^{n-1}w_i = 1 \).
    2. -
    3. We rewrite the misclassification error as
    4. -
    +The algorithm here is rather straightforward. Assume that our weak +classifier is a decision tree and we consider a binary set of outputs +with \( y_i \in \{-1,1\} \) and \( i=0,1,2,\dots,n-1 \) as our set of +observations. Our design matrix is given in terms of the +feature/predictor vectors +\( \boldsymbol{X}=[\boldsymbol{x}_0\boldsymbol{x}_1\dots\boldsymbol{x}_{p-1} \). Finally, we define also a +classifier determined by our data via a function \( G(\boldsymbol{X}) \). This function tells us how well we are able to classify our outputs/targets \( \boldsymbol{y} \). +

    +We can then define the misclassification error \( \mathrm{err} \) as $$ -\mathrm{err}=\frac{\sum_{i=0}^{n-1}w_iI(y_i\ne G(\boldsymbol{X}_{i*})}{\sum_{i=0}^{n-1}w_i}, +\mathrm{err}=\frac{1}{n}\sum_{i=0}^{n-1}I(y_i\ne G(\boldsymbol{X}_{i*}), $$ - -

      -
    1. Then we start looping over all attempts at classifying, namely we start an iterative process for \( m=1:M \), where \( M \) is the final number of classifications. Our given classifier could for example be a plain decision tree. - -
        -
      1. Fit then a given classifier to the training using the weights \( w_i \).
      2. -
      3. Compute then \( \mathrm{err} \) and figure out which events are classified properly and which are classified wrongly.
      4. -
      5. Define a quantity \( \alpha_{m} = \log{(1-\mathrm{err})/\mathrm{err}} \)
      6. -
      7. Set the new weights to \( w_i = w_i\times \exp{(\alpha_m I(y_i\ne G(\boldsymbol{X}_{i*})} \).
      8. -
      - -
    2. Compute the new classifier \( G(\boldsymbol{X})= \sum_{i=0}^{n-1}\alpha_m I(y_i\ne G(\boldsymbol{X}_{i*}) \).
    3. -
    - -For the iterations with \( m \le 2 \) the weights are modified -individually at each steps. The obersvations which were misclassified -at iteration \( m-1 \) have a weight which is larger than those which were -classified properly. As this proceeds, the observations which were -difficult to classifiy correctly are given a larger influence. Each -new classification step \( m \) is then forced to concentrate on those -observations that are missed in the previous iterations. +where the function \( I() \) is one if we misclassify and zero if we classify correctly.

    @@ -314,6 +298,7 @@ observations that are missed in the previous iterations.

  • 58
  • 59
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs052.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs052.html index ceaec0361..77cff1af6 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs052.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs052.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -253,36 +255,43 @@ MathJax.Hub.Config({ -

    AdaBoost Examples

    +

    Basic Steps of AdaBoost

    -Using Scikit-Learn it is easy to appply the adaptive boosting algorithm, as done here. +With the above definitions we are now ready to set up the algorithm for AdaBoost. +The basic idea is to set up weights which will be used to scale the correctly classified and the misclassified cases. -

    +

      +
    1. We start by initializing all weights to \( w_i = 1/n \), with \( i=0,1,2,\dots n-1 \). It is to see then that \( \sum_{i=0}^{n-1}w_i = 1 \).
    2. +
    3. We rewrite the misclassification error as
    4. +
    - -
    from sklearn.ensemble import AdaBoostClassifier
    +$$
    +\mathrm{err}=\frac{\sum_{i=0}^{n-1}w_iI(y_i\ne G(\boldsymbol{X}_{i*})}{\sum_{i=0}^{n-1}w_i},
    +$$
     
    -ada_clf = AdaBoostClassifier(
    -    DecisionTreeClassifier(max_depth=1), n_estimators=200,
    -    algorithm="SAMME.R", learning_rate=0.5, random_state=42)
    -ada_clf.fit(X_train, y_train)
     
    -from sklearn.ensemble import AdaBoostClassifier
    +
      +
    1. Then we start looping over all attempts at classifying, namely we start an iterative process for \( m=1:M \), where \( M \) is the final number of classifications. Our given classifier could for example be a plain decision tree. + +
        +
      1. Fit then a given classifier to the training using the weights \( w_i \).
      2. +
      3. Compute then \( \mathrm{err} \) and figure out which events are classified properly and which are classified wrongly.
      4. +
      5. Define a quantity \( \alpha_{m} = \log{(1-\mathrm{err})/\mathrm{err}} \)
      6. +
      7. Set the new weights to \( w_i = w_i\times \exp{(\alpha_m I(y_i\ne G(\boldsymbol{X}_{i*})} \).
      8. +
      + +
    2. Compute the new classifier \( G(\boldsymbol{X})= \sum_{i=0}^{n-1}\alpha_m I(y_i\ne G(\boldsymbol{X}_{i*}) \).
    3. +
    + +For the iterations with \( m \le 2 \) the weights are modified +individually at each steps. The obersvations which were misclassified +at iteration \( m-1 \) have a weight which is larger than those which were +classified properly. As this proceeds, the observations which were +difficult to classifiy correctly are given a larger influence. Each +new classification step \( m \) is then forced to concentrate on those +observations that are missed in the previous iterations. -ada_clf = AdaBoostClassifier( - DecisionTreeClassifier(max_depth=1), n_estimators=200, - algorithm="SAMME.R", learning_rate=0.5, random_state=42) -ada_clf.fit(X_train_scaled, y_train) -y_pred = ada_clf.predict(X_test_scaled) -skplt.metrics.plot_confusion_matrix(y_test, y_pred, normalize=True) -plt.show() -y_probas = ada_clf.predict_proba(X_test_scaled) -skplt.metrics.plot_roc(y_test, y_probas) -plt.show() -skplt.metrics.plot_cumulative_gain(y_test, y_probas) -plt.show() -

    @@ -306,6 +315,7 @@ plt.show()

  • 58
  • 59
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs053.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs053.html index b50c93b1b..f10ebc350 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs053.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs053.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -253,18 +255,36 @@ MathJax.Hub.Config({ -

    Gradient boosting: Basics

    +

    AdaBoost Examples

    -Gradient boosting is again a similar technique to Adapative boosting, -it combines so-called weak classifiers or regressors into a strong -method via a series of iterations. +Using Scikit-Learn it is easy to appply the adaptive boosting algorithm, as done here.

    -In order to understand the method, let us illustrate its basics by -bringing back the essential steps in linear regression, where our cost -function was the least squares function. + +

    from sklearn.ensemble import AdaBoostClassifier
    +
    +ada_clf = AdaBoostClassifier(
    +    DecisionTreeClassifier(max_depth=1), n_estimators=200,
    +    algorithm="SAMME.R", learning_rate=0.5, random_state=42)
    +ada_clf.fit(X_train, y_train)
    +
    +from sklearn.ensemble import AdaBoostClassifier
    +
    +ada_clf = AdaBoostClassifier(
    +    DecisionTreeClassifier(max_depth=1), n_estimators=200,
    +    algorithm="SAMME.R", learning_rate=0.5, random_state=42)
    +ada_clf.fit(X_train_scaled, y_train)
    +y_pred = ada_clf.predict(X_test_scaled)
    +skplt.metrics.plot_confusion_matrix(y_test, y_pred, normalize=True)
    +plt.show()
    +y_probas = ada_clf.predict_proba(X_test_scaled)
    +skplt.metrics.plot_roc(y_test, y_probas)
    +plt.show()
    +skplt.metrics.plot_cumulative_gain(y_test, y_probas)
    +plt.show()
    +

    @@ -287,6 +307,7 @@ function was the least squares function.

  • 58
  • 59
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs054.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs054.html index 437fa274b..7e040723f 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs054.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs054.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -253,30 +255,19 @@ MathJax.Hub.Config({ -

    Gradient Boosting, algorithm

    +

    Gradient boosting: Basics

    -Suppose we have a cost function \( C(f)=\sum_{i=0}^{n-1}L(y_i, f(x_i)) \) where \( y_i \) is our target and \( f(x_i) \) the function which is meant to model \( y_i \). The above cost function could be our standard least squares function -$$ -C(\boldsymbol{y},\boldsymbol{f})=\frac{1}{n}\sum_{i=0}^{n-1}(y_i-f(x_i))^2. -$$ +Gradient boosting is again a similar technique to Adapative boosting, +it combines so-called weak classifiers or regressors into a strong +method via a series of iterations.

    -The way we proceed in an iterative fashion is to - -

      -
    1. Initialize our estimate by \( f_0(x)=0 \).
    2. -
    3. For \( m=1:M \), we - -
        -
      1. compute the negative gradient vector \( \boldsymbol{u}_m = -\partial C(\boldsymbol{y},\boldsymbol{f})/\partial \boldsymbol{f}(x) \) at $f(x) = f_{m-1}(x);
      2. -
      3. fit the so-called base-learner to the negative gradient \( h_m(u_m,x) \);
      4. -
      5. update the estimate \( f_m(x) = f_{m-1}(x)+\nu h_m(u_m,x) \);
      6. -
      - -
    4. The final estimate is then \( f_M(x) = \sum_{m=1}^M\nu h_m(u_m,x) \).
    5. -
    +In order to understand the method, let us illustrate its basics by +bringing back the essential steps in linear regression, where our cost +function was the least squares function. +

      @@ -297,6 +288,7 @@ The way we proceed in an iterative fashion is to
    • 58
    • 59
    • 60
    • +
    • 61
    • »
    diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs055.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs055.html index d807e85cf..ea2668395 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs055.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs055.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -253,94 +255,30 @@ MathJax.Hub.Config({ -

    Gradient Boosting, Examples

    +

    Gradient Boosting, algorithm

    +

    +Suppose we have a cost function \( C(f)=\sum_{i=0}^{n-1}L(y_i, f(x_i)) \) where \( y_i \) is our target and \( f(x_i) \) the function which is meant to model \( y_i \). The above cost function could be our standard least squares function +$$ +C(\boldsymbol{y},\boldsymbol{f})=\frac{1}{n}\sum_{i=0}^{n-1}(y_i-f(x_i))^2. +$$ - -

    np.random.seed(42)
    -X = np.random.rand(100, 1) - 0.5
    -y = 3*X[:, 0]**2 + 0.05 * np.random.randn(100)
    -
    -from sklearn.tree import DecisionTreeRegressor
    -
    -tree_reg1 = DecisionTreeRegressor(max_depth=2, random_state=42)
    -tree_reg1.fit(X, y)
    -
    -y2 = y - tree_reg1.predict(X)
    -tree_reg2 = DecisionTreeRegressor(max_depth=2, random_state=42)
    -tree_reg2.fit(X, y2)
    -
    -y3 = y2 - tree_reg2.predict(X)
    -tree_reg3 = DecisionTreeRegressor(max_depth=2, random_state=42)
    -tree_reg3.fit(X, y3)
    -
    -X_new = np.array([[0.8]])
    -y_pred = sum(tree.predict(X_new) for tree in (tree_reg1, tree_reg2, tree_reg3))
    -
    -def plot_predictions(regressors, X, y, axes, label=None, style="r-", data_style="b.", data_label=None):
    -    x1 = np.linspace(axes[0], axes[1], 500)
    -    y_pred = sum(regressor.predict(x1.reshape(-1, 1)) for regressor in regressors)
    -    plt.plot(X[:, 0], y, data_style, label=data_label)
    -    plt.plot(x1, y_pred, style, linewidth=2, label=label)
    -    if label or data_label:
    -        plt.legend(loc="upper center", fontsize=16)
    -    plt.axis(axes)
    -
    -plt.figure(figsize=(11,11))
    -
    -plt.subplot(321)
    -plot_predictions([tree_reg1], X, y, axes=[-0.5, 0.5, -0.1, 0.8], label="$h_1(x_1)$", style="g-", data_label="Training set")
    -plt.ylabel("$y$", fontsize=16, rotation=0)
    -plt.title("Residuals and tree predictions", fontsize=16)
    -
    -plt.subplot(322)
    -plot_predictions([tree_reg1], X, y, axes=[-0.5, 0.5, -0.1, 0.8], label="$h(x_1) = h_1(x_1)$", data_label="Training set")
    -plt.ylabel("$y$", fontsize=16, rotation=0)
    -plt.title("Ensemble predictions", fontsize=16)
    -
    -plt.subplot(323)
    -plot_predictions([tree_reg2], X, y2, axes=[-0.5, 0.5, -0.5, 0.5], label="$h_2(x_1)$", style="g-", data_style="k+", data_label="Residuals")
    -plt.ylabel("$y - h_1(x_1)$", fontsize=16)
    -
    -plt.subplot(324)
    -plot_predictions([tree_reg1, tree_reg2], X, y, axes=[-0.5, 0.5, -0.1, 0.8], label="$h(x_1) = h_1(x_1) + h_2(x_1)$")
    -plt.ylabel("$y$", fontsize=16, rotation=0)
    -
    -plt.subplot(325)
    -plot_predictions([tree_reg3], X, y3, axes=[-0.5, 0.5, -0.5, 0.5], label="$h_3(x_1)$", style="g-", data_style="k+")
    -plt.ylabel("$y - h_1(x_1) - h_2(x_1)$", fontsize=16)
    -plt.xlabel("$x_1$", fontsize=16)
    -
    -plt.subplot(326)
    -plot_predictions([tree_reg1, tree_reg2, tree_reg3], X, y, axes=[-0.5, 0.5, -0.1, 0.8], label="$h(x_1) = h_1(x_1) + h_2(x_1) + h_3(x_1)$")
    -plt.xlabel("$x_1$", fontsize=16)
    -plt.ylabel("$y$", fontsize=16, rotation=0)
    -
    -save_fig("gradient_boosting_plot")
    -plt.show()
    -
    -from sklearn.ensemble import GradientBoostingRegressor
    -
    -gbrt = GradientBoostingRegressor(max_depth=2, n_estimators=3, learning_rate=1.0, random_state=42)
    -gbrt.fit(X, y)
    -
    -gbrt_slow = GradientBoostingRegressor(max_depth=2, n_estimators=200, learning_rate=0.1, random_state=42)
    -gbrt_slow.fit(X, y)
    -
    -plt.figure(figsize=(11,4))
    -
    -plt.subplot(121)
    -plot_predictions([gbrt], X, y, axes=[-0.5, 0.5, -0.1, 0.8], label="Ensemble predictions")
    -plt.title("learning_rate={}, n_estimators={}".format(gbrt.learning_rate, gbrt.n_estimators), fontsize=14)
    -
    -plt.subplot(122)
    -plot_predictions([gbrt_slow], X, y, axes=[-0.5, 0.5, -0.1, 0.8])
    -plt.title("learning_rate={}, n_estimators={}".format(gbrt_slow.learning_rate, gbrt_slow.n_estimators), fontsize=14)
    -
    -save_fig("gbrt_learning_rate_plot")
    -plt.show()
    -

    +The way we proceed in an iterative fashion is to + +

      +
    1. Initialize our estimate by \( f_0(x)=0 \).
    2. +
    3. For \( m=1:M \), we + +
        +
      1. compute the negative gradient vector \( \boldsymbol{u}_m = -\partial C(\boldsymbol{y},\boldsymbol{f})/\partial \boldsymbol{f}(x) \) at $f(x) = f_{m-1}(x);
      2. +
      3. fit the so-called base-learner to the negative gradient \( h_m(u_m,x) \);
      4. +
      5. update the estimate \( f_m(x) = f_{m-1}(x)+\nu h_m(u_m,x) \);
      6. +
      + +
    4. The final estimate is then \( f_M(x) = \sum_{m=1}^M\nu h_m(u_m,x) \).
    5. +
    +

    diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs056.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs056.html index fd4fc52b9..665e91b5d 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs056.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs056.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -253,66 +255,92 @@ MathJax.Hub.Config({ -

    Gradient Boots with Early Stopping

    +

    Gradient Boosting, Examples

    -

    from sklearn.model_selection import train_test_split
    -from sklearn.metrics import mean_squared_error
    +
    np.random.seed(42)
    +X = np.random.rand(100, 1) - 0.5
    +y = 3*X[:, 0]**2 + 0.05 * np.random.randn(100)
     
    -X_train, X_val, y_train, y_val = train_test_split(X, y, random_state=49)
    +from sklearn.tree import DecisionTreeRegressor
     
    -gbrt = GradientBoostingRegressor(max_depth=2, n_estimators=120, random_state=42)
    -gbrt.fit(X_train, y_train)
    +tree_reg1 = DecisionTreeRegressor(max_depth=2, random_state=42)
    +tree_reg1.fit(X, y)
     
    -errors = [mean_squared_error(y_val, y_pred)
    -          for y_pred in gbrt.staged_predict(X_val)]
    -bst_n_estimators = np.argmin(errors) + 1
    +y2 = y - tree_reg1.predict(X)
    +tree_reg2 = DecisionTreeRegressor(max_depth=2, random_state=42)
    +tree_reg2.fit(X, y2)
     
    -gbrt_best = GradientBoostingRegressor(max_depth=2,n_estimators=bst_n_estimators, random_state=42)
    -gbrt_best.fit(X_train, y_train)
    +y3 = y2 - tree_reg2.predict(X)
    +tree_reg3 = DecisionTreeRegressor(max_depth=2, random_state=42)
    +tree_reg3.fit(X, y3)
     
    -min_error = np.min(errors)
    -plt.figure(figsize=(11, 4))
    +X_new = np.array([[0.8]])
    +y_pred = sum(tree.predict(X_new) for tree in (tree_reg1, tree_reg2, tree_reg3))
     
    -plt.subplot(121)
    -plt.plot(errors, "b.-")
    -plt.plot([bst_n_estimators, bst_n_estimators], [0, min_error], "k--")
    -plt.plot([0, 120], [min_error, min_error], "k--")
    -plt.plot(bst_n_estimators, min_error, "ko")
    -plt.text(bst_n_estimators, min_error*1.2, "Minimum", ha="center", fontsize=14)
    -plt.axis([0, 120, 0, 0.01])
    -plt.xlabel("Number of trees")
    -plt.title("Validation error", fontsize=14)
    +def plot_predictions(regressors, X, y, axes, label=None, style="r-", data_style="b.", data_label=None):
    +    x1 = np.linspace(axes[0], axes[1], 500)
    +    y_pred = sum(regressor.predict(x1.reshape(-1, 1)) for regressor in regressors)
    +    plt.plot(X[:, 0], y, data_style, label=data_label)
    +    plt.plot(x1, y_pred, style, linewidth=2, label=label)
    +    if label or data_label:
    +        plt.legend(loc="upper center", fontsize=16)
    +    plt.axis(axes)
     
    -plt.subplot(122)
    -plot_predictions([gbrt_best], X, y, axes=[-0.5, 0.5, -0.1, 0.8])
    -plt.title("Best model (%d trees)" % bst_n_estimators, fontsize=14)
    +plt.figure(figsize=(11,11))
     
    -save_fig("early_stopping_gbrt_plot")
    +plt.subplot(321)
    +plot_predictions([tree_reg1], X, y, axes=[-0.5, 0.5, -0.1, 0.8], label="$h_1(x_1)$", style="g-", data_label="Training set")
    +plt.ylabel("$y$", fontsize=16, rotation=0)
    +plt.title("Residuals and tree predictions", fontsize=16)
    +
    +plt.subplot(322)
    +plot_predictions([tree_reg1], X, y, axes=[-0.5, 0.5, -0.1, 0.8], label="$h(x_1) = h_1(x_1)$", data_label="Training set")
    +plt.ylabel("$y$", fontsize=16, rotation=0)
    +plt.title("Ensemble predictions", fontsize=16)
    +
    +plt.subplot(323)
    +plot_predictions([tree_reg2], X, y2, axes=[-0.5, 0.5, -0.5, 0.5], label="$h_2(x_1)$", style="g-", data_style="k+", data_label="Residuals")
    +plt.ylabel("$y - h_1(x_1)$", fontsize=16)
    +
    +plt.subplot(324)
    +plot_predictions([tree_reg1, tree_reg2], X, y, axes=[-0.5, 0.5, -0.1, 0.8], label="$h(x_1) = h_1(x_1) + h_2(x_1)$")
    +plt.ylabel("$y$", fontsize=16, rotation=0)
    +
    +plt.subplot(325)
    +plot_predictions([tree_reg3], X, y3, axes=[-0.5, 0.5, -0.5, 0.5], label="$h_3(x_1)$", style="g-", data_style="k+")
    +plt.ylabel("$y - h_1(x_1) - h_2(x_1)$", fontsize=16)
    +plt.xlabel("$x_1$", fontsize=16)
    +
    +plt.subplot(326)
    +plot_predictions([tree_reg1, tree_reg2, tree_reg3], X, y, axes=[-0.5, 0.5, -0.1, 0.8], label="$h(x_1) = h_1(x_1) + h_2(x_1) + h_3(x_1)$")
    +plt.xlabel("$x_1$", fontsize=16)
    +plt.ylabel("$y$", fontsize=16, rotation=0)
    +
    +save_fig("gradient_boosting_plot")
     plt.show()
     
    +from sklearn.ensemble import GradientBoostingRegressor
     
    -gbrt = GradientBoostingRegressor(max_depth=2, warm_start=True, random_state=42)
    +gbrt = GradientBoostingRegressor(max_depth=2, n_estimators=3, learning_rate=1.0, random_state=42)
    +gbrt.fit(X, y)
     
    -min_val_error = float("inf")
    -error_going_up = 0
    -for n_estimators in range(1, 120):
    -    gbrt.n_estimators = n_estimators
    -    gbrt.fit(X_train, y_train)
    -    y_pred = gbrt.predict(X_val)
    -    val_error = mean_squared_error(y_val, y_pred)
    -    if val_error < min_val_error:
    -        min_val_error = val_error
    -        error_going_up = 0
    -    else:
    -        error_going_up += 1
    -        if error_going_up == 5:
    -            break  # early stopping
    +gbrt_slow = GradientBoostingRegressor(max_depth=2, n_estimators=200, learning_rate=0.1, random_state=42)
    +gbrt_slow.fit(X, y)
     
    +plt.figure(figsize=(11,4))
     
    -print(gbrt.n_estimators)
    -print("Minimum validation MSE:", min_val_error)
    +plt.subplot(121)
    +plot_predictions([gbrt], X, y, axes=[-0.5, 0.5, -0.1, 0.8], label="Ensemble predictions")
    +plt.title("learning_rate={}, n_estimators={}".format(gbrt.learning_rate, gbrt.n_estimators), fontsize=14)
    +
    +plt.subplot(122)
    +plot_predictions([gbrt_slow], X, y, axes=[-0.5, 0.5, -0.1, 0.8])
    +plt.title("learning_rate={}, n_estimators={}".format(gbrt_slow.learning_rate, gbrt_slow.n_estimators), fontsize=14)
    +
    +save_fig("gbrt_learning_rate_plot")
    +plt.show()
     

    @@ -333,6 +361,7 @@ error_going_up = 58

  • 59
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs057.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs057.html index 14c41a09d..203990494 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs057.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs057.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -253,24 +255,67 @@ MathJax.Hub.Config({ -

    XGBoost: Extreme Gradient Boosting

    - +

    Gradient Boots with Early Stopping

    -XGBoost or Extreme Gradient -Boosting, is an optimized distributed gradient boosting library -designed to be highly efficient, flexible and portable. It implements -machine learning algorithms under the Gradient Boosting -framework. XGBoost provides a parallel tree boosting that solve many -data science problems in a fast and accurate way. See the article by Chen and Guestrin. -

    -The authors design and build a highly scalable end-to-end tree -boosting system. It has a theoretically justified weighted quantile -sketch for efficient proposal calculation. It introduces a novel sparsity-aware algorithm for parallel tree learning and an effective cache-aware block structure for out-of-core tree learning. + +

    from sklearn.model_selection import train_test_split
    +from sklearn.metrics import mean_squared_error
     
    -

    -It is now the algorithm which wins essentially all ML competitions!!! +X_train, X_val, y_train, y_val = train_test_split(X, y, random_state=49) +gbrt = GradientBoostingRegressor(max_depth=2, n_estimators=120, random_state=42) +gbrt.fit(X_train, y_train) + +errors = [mean_squared_error(y_val, y_pred) + for y_pred in gbrt.staged_predict(X_val)] +bst_n_estimators = np.argmin(errors) + 1 + +gbrt_best = GradientBoostingRegressor(max_depth=2,n_estimators=bst_n_estimators, random_state=42) +gbrt_best.fit(X_train, y_train) + +min_error = np.min(errors) +plt.figure(figsize=(11, 4)) + +plt.subplot(121) +plt.plot(errors, "b.-") +plt.plot([bst_n_estimators, bst_n_estimators], [0, min_error], "k--") +plt.plot([0, 120], [min_error, min_error], "k--") +plt.plot(bst_n_estimators, min_error, "ko") +plt.text(bst_n_estimators, min_error*1.2, "Minimum", ha="center", fontsize=14) +plt.axis([0, 120, 0, 0.01]) +plt.xlabel("Number of trees") +plt.title("Validation error", fontsize=14) + +plt.subplot(122) +plot_predictions([gbrt_best], X, y, axes=[-0.5, 0.5, -0.1, 0.8]) +plt.title("Best model (%d trees)" % bst_n_estimators, fontsize=14) + +save_fig("early_stopping_gbrt_plot") +plt.show() + + +gbrt = GradientBoostingRegressor(max_depth=2, warm_start=True, random_state=42) + +min_val_error = float("inf") +error_going_up = 0 +for n_estimators in range(1, 120): + gbrt.n_estimators = n_estimators + gbrt.fit(X_train, y_train) + y_pred = gbrt.predict(X_val) + val_error = mean_squared_error(y_val, y_pred) + if val_error < min_val_error: + min_val_error = val_error + error_going_up = 0 + else: + error_going_up += 1 + if error_going_up == 5: + break # early stopping + + +print(gbrt.n_estimators) +print("Minimum validation MSE:", min_val_error) +

    @@ -289,6 +334,7 @@ It is now the algorithm which wins essentially all ML competitions!!!

  • 58
  • 59
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/DecisionTrees-bs.html b/doc/pub/DecisionTrees/html/DecisionTrees-bs.html index 2c5b1c41f..4ad69c7e8 100644 --- a/doc/pub/DecisionTrees/html/DecisionTrees-bs.html +++ b/doc/pub/DecisionTrees/html/DecisionTrees-bs.html @@ -129,19 +129,20 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -228,16 +229,17 @@ MathJax.Hub.Config({
  • Iterative Fitting, Regression and Squared-error Cost Function
  • Iterative Fitting, Classification, AdaBoost
  • Adaptive Boosting, AdaBoost
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • -
  • Regression Case
  • -
  • Xgboost on the Cancer Data
  • +
  • Building up AdaBoost
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • +
  • Regression Case
  • +
  • Xgboost on the Cancer Data
  • @@ -296,7 +298,7 @@ MathJax.Hub.Config({
  • 9
  • 10
  • ...
  • -
  • 60
  • +
  • 61
  • »
  • diff --git a/doc/pub/DecisionTrees/html/DecisionTrees-reveal.html b/doc/pub/DecisionTrees/html/DecisionTrees-reveal.html index b36ba49b9..e9b1c112e 100644 --- a/doc/pub/DecisionTrees/html/DecisionTrees-reveal.html +++ b/doc/pub/DecisionTrees/html/DecisionTrees-reveal.html @@ -2026,9 +2026,9 @@ The way we proceed is as follows (here we specialize to the squared-error cost f

  • For \( m=1:M \)
      -

    1. minmize $\sum_{i=0}^{n-1}(y_i-f_{m-1}(x_i)-\beta b(x;\gamma))^2 wrt \( \gamma \) and $\beta$$
    2. +

    3. minimize \( \sum_{i=0}^{n-1}(y_i-f_{m-1}(x_i)-\beta b(x;\gamma))^2 \) wrt \( \gamma \) and \( \beta \)
    4. This gives the optimial values \( \beta_m \) and \( \gamma_m \)
    5. -

    6. Determine then the new values $f_m(x)=f_{m-1}(x) +\beta_m b(x;\gamma_m)
    7. +

    8. Determine then the new values \( f_m(x)=f_{m-1}(x) +\beta_m b(x;\gamma_m) \)

    @@ -2094,14 +2094,63 @@ The simplest possible cost function which leads (also simple from a computationa exponential cost/loss function defined as

     
    $$ -C(\boldsymbol{y},\boldsymbol{f}) = \sum_{i=0}^{n-1}\exp{-(y_i(f_{m-1(x_i)+\beta G(x_i})} +C(\boldsymbol{y},\boldsymbol{f}) = \sum_{i=0}^{n-1}\exp{-(y_i(f_{m-1}(x_i)+\beta G(x_i))}. +$$ +

     
    + +

    +We optimize \( \beta \) and \( G \) for each value of \( m=1:M \) as we did in the regression case. +This is normally done in two steps. Let us however first rewrite the cost function as + +

     
    +$$ +C(\boldsymbol{y},\boldsymbol{f}) = \sum_{i=0}^{n-1}w_i^{m}\exp{-(y_i\beta G(x_i))}, +$$ +

     
    + +where we have defined \( w_i^m= \exp{-(y_if_{m-1}(x_i))} \). + + + +

    +

    Building up AdaBoost

    + +

    +First, for any \( \beta > 0 \), we optimize \( G \) by setting +

     
    +$$ +G_m(x) = \mathrm{sign} \sum_{i=0}^{n-1} w_i^m I(y_i \ne G_(x_i)), +$$ +

     
    + +which is the classifier that minimizes the weighted error rate in predicting \( y \). + +

    +We can do this by rewriting +

     
    +$$ +\exp{-\beta}\sum_{y_i=G(x_i)}w_i^m+\exp{\beta}\sum_{y_i\ne G(x_i)}w_i^m, +$$ +

     
    + +which can be rewritten as +

     
    +$$ +(\exp{\beta}-\exp{-\beta})\sum_{i=0}^{n-1}w_i^mI(y_i\ne G(x_i))+\exp{-\beta}\sum_{i=0}^{n-1}w_i^m=0, +$$ +

     
    + +which leads to +

     
    +$$ +\beta_m = frac{1}{2}\log{\frac{1-\mathrm{\overline{err}}}{\mathrm{\overline{err}}}}, $$

     

    -

    Adaptive boosting: AdaBoost, Basic Algorithm

    +

    Adaptive boosting: AdaBoost, Basic Algorithm

    The algorithm here is rather straightforward. Assume that our weak @@ -2125,7 +2174,7 @@ where the function \( I() \) is one if we misclassify and zero if we classify co

    -

    Basic Steps of AdaBoost

    +

    Basic Steps of AdaBoost

    With the above definitions we are now ready to set up the algorithm for AdaBoost. @@ -2166,7 +2215,7 @@ observations that are missed in the previous iterations.

    -

    AdaBoost Examples

    +

    AdaBoost Examples

    Using Scikit-Learn it is easy to appply the adaptive boosting algorithm, as done here. @@ -2200,7 +2249,7 @@ plt.show()

    -

    Gradient boosting: Basics

    +

    Gradient boosting: Basics

    Gradient boosting is again a similar technique to Adapative boosting, @@ -2215,7 +2264,7 @@ function was the least squares function.

    -

    Gradient Boosting, algorithm

    +

    Gradient Boosting, algorithm

    Suppose we have a cost function \( C(f)=\sum_{i=0}^{n-1}L(y_i, f(x_i)) \) where \( y_i \) is our target and \( f(x_i) \) the function which is meant to model \( y_i \). The above cost function could be our standard least squares function @@ -2243,7 +2292,7 @@ The way we proceed in an iterative fashion is to

    -

    Gradient Boosting, Examples

    +

    Gradient Boosting, Examples

    @@ -2334,7 +2383,7 @@ plt.show()

    -

    Gradient Boots with Early Stopping

    +

    Gradient Boots with Early Stopping

    @@ -2399,7 +2448,7 @@ error_going_up = 0

    -

    XGBoost: Extreme Gradient Boosting

    +

    XGBoost: Extreme Gradient Boosting

    XGBoost or Extreme Gradient @@ -2420,7 +2469,7 @@ It is now the algorithm which wins essentially all ML competitions!!!

    -

    Regression Case

    +

    Regression Case

    @@ -2476,7 +2525,7 @@ plt.show()

    -

    Xgboost on the Cancer Data

    +

    Xgboost on the Cancer Data

    diff --git a/doc/pub/DecisionTrees/html/DecisionTrees-solarized.html b/doc/pub/DecisionTrees/html/DecisionTrees-solarized.html index 9b84cf8d4..8a40a0fa1 100644 --- a/doc/pub/DecisionTrees/html/DecisionTrees-solarized.html +++ b/doc/pub/DecisionTrees/html/DecisionTrees-solarized.html @@ -149,19 +149,20 @@ div { text-align: justify; text-justify: inter-word; } None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -2018,9 +2019,9 @@ The way we proceed is as follows (here we specialize to the squared-error cost f

  • For \( m=1:M \)
      -
    1. minmize $\sum_{i=0}^{n-1}(y_i-f_{m-1}(x_i)-\beta b(x;\gamma))^2 wrt \( \gamma \) and $\beta$$
    2. +
    3. minimize \( \sum_{i=0}^{n-1}(y_i-f_{m-1}(x_i)-\beta b(x;\gamma))^2 \) wrt \( \gamma \) and \( \beta \)
    4. This gives the optimial values \( \beta_m \) and \( \gamma_m \)
    5. -
    6. Determine then the new values $f_m(x)=f_{m-1}(x) +\beta_m b(x;\gamma_m)
    7. +
    8. Determine then the new values \( f_m(x)=f_{m-1}(x) +\beta_m b(x;\gamma_m) \)
    @@ -2076,13 +2077,51 @@ $$ The simplest possible cost function which leads (also simple from a computational point of view) to the AdaBoost algorithm is the exponential cost/loss function defined as $$ -C(\boldsymbol{y},\boldsymbol{f}) = \sum_{i=0}^{n-1}\exp{-(y_i(f_{m-1(x_i)+\beta G(x_i})} +C(\boldsymbol{y},\boldsymbol{f}) = \sum_{i=0}^{n-1}\exp{-(y_i(f_{m-1}(x_i)+\beta G(x_i))}. $$ +

    +We optimize \( \beta \) and \( G \) for each value of \( m=1:M \) as we did in the regression case. +This is normally done in two steps. Let us however first rewrite the cost function as + +$$ +C(\boldsymbol{y},\boldsymbol{f}) = \sum_{i=0}^{n-1}w_i^{m}\exp{-(y_i\beta G(x_i))}, +$$ + +where we have defined \( w_i^m= \exp{-(y_if_{m-1}(x_i))} \). +











    -

    Adaptive boosting: AdaBoost, Basic Algorithm

    +

    Building up AdaBoost

    + +

    +First, for any \( \beta > 0 \), we optimize \( G \) by setting +$$ +G_m(x) = \mathrm{sign} \sum_{i=0}^{n-1} w_i^m I(y_i \ne G_(x_i)), +$$ + +which is the classifier that minimizes the weighted error rate in predicting \( y \). + +

    +We can do this by rewriting +$$ +\exp{-\beta}\sum_{y_i=G(x_i)}w_i^m+\exp{\beta}\sum_{y_i\ne G(x_i)}w_i^m, +$$ + +which can be rewritten as +$$ +(\exp{\beta}-\exp{-\beta})\sum_{i=0}^{n-1}w_i^mI(y_i\ne G(x_i))+\exp{-\beta}\sum_{i=0}^{n-1}w_i^m=0, +$$ + +which leads to +$$ +\beta_m = frac{1}{2}\log{\frac{1-\mathrm{\overline{err}}}{\mathrm{\overline{err}}}}, +$$ + +









    + +

    Adaptive boosting: AdaBoost, Basic Algorithm

    The algorithm here is rather straightforward. Assume that our weak @@ -2104,7 +2143,7 @@ where the function \( I() \) is one if we misclassify and zero if we classify co











    -

    Basic Steps of AdaBoost

    +

    Basic Steps of AdaBoost

    With the above definitions we are now ready to set up the algorithm for AdaBoost. @@ -2144,7 +2183,7 @@ observations that are missed in the previous iterations.











    -

    AdaBoost Examples

    +

    AdaBoost Examples

    Using Scikit-Learn it is easy to appply the adaptive boosting algorithm, as done here. @@ -2177,7 +2216,7 @@ plt.show()











    -

    Gradient boosting: Basics

    +

    Gradient boosting: Basics

    Gradient boosting is again a similar technique to Adapative boosting, @@ -2192,7 +2231,7 @@ function was the least squares function.











    -

    Gradient Boosting, algorithm

    +

    Gradient Boosting, algorithm

    Suppose we have a cost function \( C(f)=\sum_{i=0}^{n-1}L(y_i, f(x_i)) \) where \( y_i \) is our target and \( f(x_i) \) the function which is meant to model \( y_i \). The above cost function could be our standard least squares function @@ -2218,7 +2257,7 @@ The way we proceed in an iterative fashion is to









    -

    Gradient Boosting, Examples

    +

    Gradient Boosting, Examples

    @@ -2308,7 +2347,7 @@ plt.show()











    -

    Gradient Boots with Early Stopping

    +

    Gradient Boots with Early Stopping

    @@ -2372,7 +2411,7 @@ error_going_up = 0











    -

    XGBoost: Extreme Gradient Boosting

    +

    XGBoost: Extreme Gradient Boosting

    XGBoost or Extreme Gradient @@ -2393,7 +2432,7 @@ It is now the algorithm which wins essentially all ML competitions!!!











    -

    Regression Case

    +

    Regression Case

    @@ -2448,7 +2487,7 @@ plt.show()











    -

    Xgboost on the Cancer Data

    +

    Xgboost on the Cancer Data

    diff --git a/doc/pub/DecisionTrees/html/DecisionTrees.html b/doc/pub/DecisionTrees/html/DecisionTrees.html index 42acee4ec..98c64a7c6 100644 --- a/doc/pub/DecisionTrees/html/DecisionTrees.html +++ b/doc/pub/DecisionTrees/html/DecisionTrees.html @@ -154,19 +154,20 @@ div { text-align: justify; text-justify: inter-word; } None, '___sec47'), ('Adaptive Boosting, AdaBoost', 2, None, '___sec48'), + ('Building up AdaBoost', 2, None, '___sec49'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec49'), - ('Basic Steps of AdaBoost', 2, None, '___sec50'), - ('AdaBoost Examples', 2, None, '___sec51'), - ('Gradient boosting: Basics', 2, None, '___sec52'), - ('Gradient Boosting, algorithm', 2, None, '___sec53'), - ('Gradient Boosting, Examples', 2, None, '___sec54'), - ('Gradient Boots with Early Stopping', 2, None, '___sec55'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec56'), - ('Regression Case', 2, None, '___sec57'), - ('Xgboost on the Cancer Data', 2, None, '___sec58')]} + '___sec50'), + ('Basic Steps of AdaBoost', 2, None, '___sec51'), + ('AdaBoost Examples', 2, None, '___sec52'), + ('Gradient boosting: Basics', 2, None, '___sec53'), + ('Gradient Boosting, algorithm', 2, None, '___sec54'), + ('Gradient Boosting, Examples', 2, None, '___sec55'), + ('Gradient Boots with Early Stopping', 2, None, '___sec56'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec57'), + ('Regression Case', 2, None, '___sec58'), + ('Xgboost on the Cancer Data', 2, None, '___sec59')]} end of tocinfo --> @@ -2023,9 +2024,9 @@ The way we proceed is as follows (here we specialize to the squared-error cost f

  • For \( m=1:M \)
      -
    1. minmize $\sum_{i=0}^{n-1}(y_i-f_{m-1}(x_i)-\beta b(x;\gamma))^2 wrt \( \gamma \) and $\beta$$
    2. +
    3. minimize \( \sum_{i=0}^{n-1}(y_i-f_{m-1}(x_i)-\beta b(x;\gamma))^2 \) wrt \( \gamma \) and \( \beta \)
    4. This gives the optimial values \( \beta_m \) and \( \gamma_m \)
    5. -
    6. Determine then the new values $f_m(x)=f_{m-1}(x) +\beta_m b(x;\gamma_m)
    7. +
    8. Determine then the new values \( f_m(x)=f_{m-1}(x) +\beta_m b(x;\gamma_m) \)
    @@ -2081,13 +2082,51 @@ $$ The simplest possible cost function which leads (also simple from a computational point of view) to the AdaBoost algorithm is the exponential cost/loss function defined as $$ -C(\boldsymbol{y},\boldsymbol{f}) = \sum_{i=0}^{n-1}\exp{-(y_i(f_{m-1(x_i)+\beta G(x_i})} +C(\boldsymbol{y},\boldsymbol{f}) = \sum_{i=0}^{n-1}\exp{-(y_i(f_{m-1}(x_i)+\beta G(x_i))}. $$ +

    +We optimize \( \beta \) and \( G \) for each value of \( m=1:M \) as we did in the regression case. +This is normally done in two steps. Let us however first rewrite the cost function as + +$$ +C(\boldsymbol{y},\boldsymbol{f}) = \sum_{i=0}^{n-1}w_i^{m}\exp{-(y_i\beta G(x_i))}, +$$ + +where we have defined \( w_i^m= \exp{-(y_if_{m-1}(x_i))} \). +











    -

    Adaptive boosting: AdaBoost, Basic Algorithm

    +

    Building up AdaBoost

    + +

    +First, for any \( \beta > 0 \), we optimize \( G \) by setting +$$ +G_m(x) = \mathrm{sign} \sum_{i=0}^{n-1} w_i^m I(y_i \ne G_(x_i)), +$$ + +which is the classifier that minimizes the weighted error rate in predicting \( y \). + +

    +We can do this by rewriting +$$ +\exp{-\beta}\sum_{y_i=G(x_i)}w_i^m+\exp{\beta}\sum_{y_i\ne G(x_i)}w_i^m, +$$ + +which can be rewritten as +$$ +(\exp{\beta}-\exp{-\beta})\sum_{i=0}^{n-1}w_i^mI(y_i\ne G(x_i))+\exp{-\beta}\sum_{i=0}^{n-1}w_i^m=0, +$$ + +which leads to +$$ +\beta_m = frac{1}{2}\log{\frac{1-\mathrm{\overline{err}}}{\mathrm{\overline{err}}}}, +$$ + +









    + +

    Adaptive boosting: AdaBoost, Basic Algorithm

    The algorithm here is rather straightforward. Assume that our weak @@ -2109,7 +2148,7 @@ where the function \( I() \) is one if we misclassify and zero if we classify co











    -

    Basic Steps of AdaBoost

    +

    Basic Steps of AdaBoost

    With the above definitions we are now ready to set up the algorithm for AdaBoost. @@ -2149,7 +2188,7 @@ observations that are missed in the previous iterations.











    -

    AdaBoost Examples

    +

    AdaBoost Examples

    Using Scikit-Learn it is easy to appply the adaptive boosting algorithm, as done here. @@ -2182,7 +2221,7 @@ plt.show()











    -

    Gradient boosting: Basics

    +

    Gradient boosting: Basics

    Gradient boosting is again a similar technique to Adapative boosting, @@ -2197,7 +2236,7 @@ function was the least squares function.











    -

    Gradient Boosting, algorithm

    +

    Gradient Boosting, algorithm

    Suppose we have a cost function \( C(f)=\sum_{i=0}^{n-1}L(y_i, f(x_i)) \) where \( y_i \) is our target and \( f(x_i) \) the function which is meant to model \( y_i \). The above cost function could be our standard least squares function @@ -2223,7 +2262,7 @@ The way we proceed in an iterative fashion is to









    -

    Gradient Boosting, Examples

    +

    Gradient Boosting, Examples

    @@ -2313,7 +2352,7 @@ plt.show()











    -

    Gradient Boots with Early Stopping

    +

    Gradient Boots with Early Stopping

    @@ -2377,7 +2416,7 @@ error_going_up = XGBoost: Extreme Gradient Boosting +

    XGBoost: Extreme Gradient Boosting

    XGBoost or Extreme Gradient @@ -2398,7 +2437,7 @@ It is now the algorithm which wins essentially all ML competitions!!!











    -

    Regression Case

    +

    Regression Case

    @@ -2453,7 +2492,7 @@ plt.show()











    -

    Xgboost on the Cancer Data

    +

    Xgboost on the Cancer Data

    diff --git a/doc/pub/DecisionTrees/ipynb/DecisionTrees.ipynb b/doc/pub/DecisionTrees/ipynb/DecisionTrees.ipynb index 018a5f714..4891455ed 100644 --- a/doc/pub/DecisionTrees/ipynb/DecisionTrees.ipynb +++ b/doc/pub/DecisionTrees/ipynb/DecisionTrees.ipynb @@ -2084,11 +2084,11 @@ "\n", "3. For $m=1:M$\n", "\n", - "a. minmize $\\sum_{i=0}^{n-1}(y_i-f_{m-1}(x_i)-\\beta b(x;\\gamma))^2 wrt $\\gamma$ and $\\beta$$\n", + "a. minimize $\\sum_{i=0}^{n-1}(y_i-f_{m-1}(x_i)-\\beta b(x;\\gamma))^2$ wrt $\\gamma$ and $\\beta$\n", "\n", "b. This gives the optimial values $\\beta_m$ and $\\gamma_m$\n", "\n", - "c. Determine then the new values $f_m(x)=f_{m-1}(x) +\\beta_m b(x;\\gamma_m)\n", + "c. Determine then the new values $f_m(x)=f_{m-1}(x) +\\beta_m b(x;\\gamma_m)$\n", "\n", "\n", "We could use any of the algorithms we have discussed till now. If we use trees, $\\gamma$ parameterizes the split variables and split points at the internal nodes, and the predictions at the terminal nodes. \n", @@ -2180,7 +2180,94 @@ "metadata": {}, "source": [ "$$\n", - "C(\\boldsymbol{y},\\boldsymbol{f}) = \\sum_{i=0}^{n-1}\\exp{-(y_i(f_{m-1(x_i)+\\beta G(x_i})}\n", + "C(\\boldsymbol{y},\\boldsymbol{f}) = \\sum_{i=0}^{n-1}\\exp{-(y_i(f_{m-1}(x_i)+\\beta G(x_i))}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We optimize $\\beta$ and $G$ for each value of $m=1:M$ as we did in the regression case.\n", + "This is normally done in two steps. Let us however first rewrite the cost function as" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "C(\\boldsymbol{y},\\boldsymbol{f}) = \\sum_{i=0}^{n-1}w_i^{m}\\exp{-(y_i\\beta G(x_i))},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where we have defined $w_i^m= \\exp{-(y_if_{m-1}(x_i))}$.\n", + "\n", + "## Building up AdaBoost\n", + "\n", + "First, for any $\\beta > 0$, we optimize $G$ by setting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "G_m(x) = \\mathrm{sign} \\sum_{i=0}^{n-1} w_i^m I(y_i \\ne G_(x_i)),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which is the classifier that minimizes the weighted error rate in predicting $y$.\n", + "\n", + "We can do this by rewriting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\exp{-\\beta}\\sum_{y_i=G(x_i)}w_i^m+\\exp{\\beta}\\sum_{y_i\\ne G(x_i)}w_i^m,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which can be rewritten as" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "(\\exp{\\beta}-\\exp{-\\beta})\\sum_{i=0}^{n-1}w_i^mI(y_i\\ne G(x_i))+\\exp{-\\beta}\\sum_{i=0}^{n-1}w_i^m=0,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which leads to" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\beta_m = frac{1}{2}\\log{\\frac{1-\\mathrm{\\overline{err}}}{\\mathrm{\\overline{err}}}},\n", "$$" ] }, diff --git a/doc/pub/DecisionTrees/ipynb/ipynb-DecisionTrees-src.tar.gz b/doc/pub/DecisionTrees/ipynb/ipynb-DecisionTrees-src.tar.gz index b9e443560ac7bd5f81aec60924a222f18bc05972..b4cba0fa7ca46db8eb9e70f8ac9d4328f5557cb4 100644 GIT binary patch delta 29 lcmZ4cQ*iB1K{okr4hE$Ujcl!KjIC@;t!&I&*;tm>005n_2}u9| delta 29 lcmZ4cQ*iB1K{okr4u(Ci8`)af7+cwxTG^Plvau|$0RX5l3Eltz diff --git a/doc/pub/DecisionTrees/pdf/DecisionTrees-minted.pdf b/doc/pub/DecisionTrees/pdf/DecisionTrees-minted.pdf index 67c0dcc5d6f7f3a1f96f1beb5dddd5286028d576..2e4ad30138c68f9124aecbb82fde5210bb2be0d2 100644 GIT binary patch delta 60140 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 f9!%qHzzm*byRcDSul@Z`?)}zUx=?k;1quti2c` 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 z%0A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 z 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 0$, we optimize $G$ by setting +!bt +\[ +G_m(x) = \mathrm{sign} \sum_{i=0}^{n-1} w_i^m I(y_i \ne G_(x_i)), +\] +!et +which is the classifier that minimizes the weighted error rate in predicting $y$. + +We can do this by rewriting +!bt +\[ +\exp{-\beta}\sum_{y_i=G(x_i)}w_i^m+\exp{\beta}\sum_{y_i\ne G(x_i)}w_i^m, +\] +!et +which can be rewritten as +!bt +\[ +(\exp{\beta}-\exp{-\beta})\sum_{i=0}^{n-1}w_i^mI(y_i\ne G(x_i))+\exp{-\beta}\sum_{i=0}^{n-1}w_i^m=0, +\] +!et +which leads to +!bt +\[ +\beta_m = frac{1}{2}\log{\frac{1-\mathrm{\overline{err}}}{\mathrm{\overline{err}}}}, +\] +!et !split ===== Adaptive boosting: AdaBoost, Basic Algorithm =====