diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs000.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs000.html index d44f3e9dc..532859bcb 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs000.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs000.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -249,7 +251,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Nov 5, 2019

    +

    Nov 6, 2019


    @@ -273,7 +275,7 @@ MathJax.Hub.Config({

  • 9
  • 10
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs001.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs001.html index f9d50de42..b7c6325e5 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs001.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs001.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -278,7 +280,7 @@ given some assumptions, make predictions about the target feature value
  • 10
  • 11
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs002.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs002.html index 61ed7cf48..a8748ce44 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs002.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs002.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -256,7 +258,7 @@ This tree was produced using the Wisconsin cancer data (discussed here as well,
  • 11
  • 12
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs003.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs003.html index 116fc194b..56f38313c 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs003.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs003.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -264,7 +266,7 @@ node.
  • 12
  • 13
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs004.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs004.html index 6d46d19cf..b5bc1fc5a 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs004.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs004.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -265,7 +267,7 @@ Then we are essentially done!
  • 13
  • 14
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs005.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs005.html index 43a694004..4f74844c7 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs005.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs005.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -344,7 +346,7 @@ plt.show()
  • 14
  • 15
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs006.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs006.html index ad7ba5d22..1ba0164b2 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs006.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs006.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -277,7 +279,7 @@ within box \( j \).
  • 15
  • 16
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs007.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs007.html index c2aa59226..3663532e9 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs007.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs007.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -269,7 +271,7 @@ better tree in some future step.
  • 16
  • 17
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs008.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs008.html index 6e65bb774..ad64a1ba1 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs008.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs008.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -302,7 +304,7 @@ region contains more than five observations.
  • 17
  • 18
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs009.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs009.html index da729347a..52d193278 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs009.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs009.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -271,7 +273,7 @@ parameter \( \alpha \).
  • 18
  • 19
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs010.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs010.html index 7f434547a..b2f5cacf7 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs010.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs010.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -284,7 +286,7 @@ subtree corresponding to \( \alpha \).
  • 19
  • 20
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs011.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs011.html index eda8fd1f1..68a3f02d3 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs011.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs011.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -280,7 +282,7 @@ MathJax.Hub.Config({
  • 20
  • 21
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs012.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs012.html index b5c8465ff..42cffb0de 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs012.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs012.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -272,7 +274,7 @@ fall into that region.
  • 21
  • 22
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs013.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs013.html index 096e9532c..5733e08f7 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs013.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs013.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -277,7 +279,7 @@ than is the classification error rate.
  • 22
  • 23
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs014.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs014.html index 07727f977..88ae28e91 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs014.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs014.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -303,7 +305,7 @@ $$
  • 23
  • 24
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs015.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs015.html index 28e41e197..818a8d847 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs015.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs015.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -294,7 +296,7 @@ os.system(cmd)
  • 24
  • 25
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs016.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs016.html index eae1cedb0..b5710e68c 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs016.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs016.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -285,7 +287,7 @@ os.system(cmd)
  • 25
  • 26
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs017.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs017.html index e21a486a1..3e07f6869 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs017.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs017.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -266,7 +268,7 @@ We discuss both algorithms with applications here. The popular library -Scikit-L
  • 26
  • 27
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs018.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs018.html index 22fb991f5..62dbbc302 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs018.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs018.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -258,7 +260,7 @@ MathJax.Hub.Config({
  • 27
  • 28
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs019.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs019.html index c1b270ff4..8b19e19bb 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs019.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs019.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -258,7 +260,7 @@ MathJax.Hub.Config({
  • 28
  • 29
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs020.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs020.html index 0615b8301..a915226ba 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs020.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs020.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -298,7 +300,7 @@ The table here summarizes the various attributes and
  • 29
  • 30
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs021.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs021.html index dafcb108a..cf72c7947 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs021.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs021.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -329,7 +331,7 @@ os.system(cmd)
  • 30
  • 31
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs022.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs022.html index 081cbcb0a..e7b8aa064 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs022.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs022.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -331,7 +333,7 @@ split = get_split(dataset)
  • 31
  • 32
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs023.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs023.html index 8da93e536..39dd82763 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs023.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs023.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -289,7 +291,7 @@ attributes at each step while growing the tree.
  • 32
  • 33
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs024.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs024.html index c1b3ddd9c..f4ea06f2d 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs024.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs024.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -449,7 +451,7 @@ MathJax.Hub.Config({
  • 33
  • 34
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs025.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs025.html index d15b58644..f66bca351 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs025.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs025.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -302,7 +304,7 @@ deep_tree_clf.fit(X_train_scaled, y_train)
  • 34
  • 35
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs026.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs026.html index e9148a901..5a7c5c524 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs026.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs026.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -325,7 +327,7 @@ plt.show()
  • 35
  • 36
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs027.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs027.html index 361b898f1..968b88265 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs027.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs027.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -281,7 +283,7 @@ plt.show()
  • 36
  • 37
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs028.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs028.html index 2d4dcc7f0..999e10fd3 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs028.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs028.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -275,7 +277,7 @@ tree_reg.fit(X, y)
  • 37
  • 38
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs029.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs029.html index 02dc79e85..763697a01 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs029.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs029.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -331,7 +333,7 @@ plt.show()
  • 38
  • 39
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs030.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs030.html index 26491eaa6..713e3bf13 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs030.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs030.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -267,7 +269,7 @@ MathJax.Hub.Config({
  • 39
  • 40
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs031.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs031.html index f08c9f7b7..c6626c3b9 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs031.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs031.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -270,7 +272,7 @@ However, by aggregating many decision trees, using methods like bagging, random
  • 40
  • 41
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs032.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs032.html index 97b823338..ed1d0ac50 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs032.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs032.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -277,7 +279,7 @@ We discuss these methods here.
  • 41
  • 42
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs033.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs033.html index 1d96f5fdc..7332fd504 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs033.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs033.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,21 +232,10 @@ MathJax.Hub.Config({ -

    Bagging

    +

    An Overview of Ensemble Methods

    -The plain decision trees suffer from high -variance. This means that if we split the training data into two parts -at random, and fit a decision tree to both halves, the results that we -get could be quite different. In contrast, a procedure with low -variance will yield similar results if applied repeatedly to distinct -data sets; linear regression tends to have low variance, if the ratio -of \( n \) to \( p \) is moderately large. - -

    -Bootstrap aggregation, or just bagging, is a -general-purpose procedure for reducing the variance of a statistical -learning method. +



    @@ -272,7 +263,7 @@ learning method.

  • 42
  • 43
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs034.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs034.html index 39ad277b2..095abbcbb 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs034.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs034.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,31 +232,21 @@ MathJax.Hub.Config({ -

    More bagging

    +

    Bagging

    -Bagging typically results in improved accuracy -over prediction using a single tree. Unfortunately, however, it can be -difficult to interpret the resulting model. Recall that one of the -advantages of decision trees is the attractive and easily interpreted -diagram that results. +The plain decision trees suffer from high +variance. This means that if we split the training data into two parts +at random, and fit a decision tree to both halves, the results that we +get could be quite different. In contrast, a procedure with low +variance will yield similar results if applied repeatedly to distinct +data sets; linear regression tends to have low variance, if the ratio +of \( n \) to \( p \) is moderately large.

    -However, when we bag a large number of trees, it is no longer -possible to represent the resulting statistical learning procedure -using a single tree, and it is no longer clear which variables are -most important to the procedure. Thus, bagging improves prediction -accuracy at the expense of interpretability. Although the collection -of bagged trees is much more difficult to interpret than a single -tree, one can obtain an overall summary of the importance of each -predictor using the MSE (for bagging regression trees) or the Gini -index (for bagging classification trees). In the case of bagging -regression trees, we can record the total amount that the MSE is -decreased due to splits over a given predictor, averaged over all \( B \) possible -trees. A large value indicates an important predictor. Similarly, in -the context of bagging classification trees, we can add up the total -amount that the Gini index is decreased by splits over a given -predictor, averaged over all \( B \) trees. +Bootstrap aggregation, or just bagging, is a +general-purpose procedure for reducing the variance of a statistical +learning method.

    @@ -282,7 +274,7 @@ predictor, averaged over all \( B \) trees.

  • 43
  • 44
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs035.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs035.html index 4d249c000..3879ad651 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs035.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs035.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,23 +232,32 @@ MathJax.Hub.Config({ -

    Simple Voting Example, head or tail

    -

    +

    More bagging

    + +

    +Bagging typically results in improved accuracy +over prediction using a single tree. Unfortunately, however, it can be +difficult to interpret the resulting model. Recall that one of the +advantages of decision trees is the attractive and easily interpreted +diagram that results. + +

    +However, when we bag a large number of trees, it is no longer +possible to represent the resulting statistical learning procedure +using a single tree, and it is no longer clear which variables are +most important to the procedure. Thus, bagging improves prediction +accuracy at the expense of interpretability. Although the collection +of bagged trees is much more difficult to interpret than a single +tree, one can obtain an overall summary of the importance of each +predictor using the MSE (for bagging regression trees) or the Gini +index (for bagging classification trees). In the case of bagging +regression trees, we can record the total amount that the MSE is +decreased due to splits over a given predictor, averaged over all \( B \) possible +trees. A large value indicates an important predictor. Similarly, in +the context of bagging classification trees, we can add up the total +amount that the Gini index is decreased by splits over a given +predictor, averaged over all \( B \) trees. - -

    heads_proba = 0.51
    -coin_tosses = (np.random.rand(10000, 10) < heads_proba).astype(np.int32)
    -cumulative_heads_ratio = np.cumsum(coin_tosses, axis=0) / np.arange(1, 10001).reshape(-1, 1)
    -plt.figure(figsize=(8,3.5))
    -plt.plot(cumulative_heads_ratio)
    -plt.plot([0, 10000], [0.51, 0.51], "k--", linewidth=2, label="51%")
    -plt.plot([0, 10000], [0.5, 0.5], "k-", label="50%")
    -plt.xlabel("Number of coin tosses")
    -plt.ylabel("Heads ratio")
    -plt.legend(loc="lower right")
    -plt.axis([0, 10000, 0.42, 0.58])
    -plt.show()
    -

    @@ -273,7 +284,7 @@ plt.show()

  • 44
  • 45
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs036.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs036.html index 38dc2899e..1480014a9 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs036.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs036.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,53 +232,22 @@ MathJax.Hub.Config({ -

    Using the Voting Classifier

    +

    Simple Voting Example, head or tail

    -

    from sklearn.model_selection import train_test_split
    -from sklearn.datasets import make_moons
    -
    -X, y = make_moons(n_samples=500, noise=0.30, random_state=42)
    -X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
    -
    -from sklearn.ensemble import RandomForestClassifier
    -from sklearn.ensemble import VotingClassifier
    -from sklearn.linear_model import LogisticRegression
    -from sklearn.svm import SVC
    -
    -log_clf = LogisticRegression(solver="liblinear", random_state=42)
    -rnd_clf = RandomForestClassifier(n_estimators=10, random_state=42)
    -svm_clf = SVC(gamma="auto", random_state=42)
    -
    -voting_clf = VotingClassifier(
    -    estimators=[('lr', log_clf), ('rf', rnd_clf), ('svc', svm_clf)],
    -    voting='hard')
    -
    -voting_clf.fit(X_train, y_train)
    -
    -from sklearn.metrics import accuracy_score
    -
    -for clf in (log_clf, rnd_clf, svm_clf, voting_clf):
    -    clf.fit(X_train, y_train)
    -    y_pred = clf.predict(X_test)
    -    print(clf.__class__.__name__, accuracy_score(y_test, y_pred))
    -
    -log_clf = LogisticRegression(solver="liblinear", random_state=42)
    -rnd_clf = RandomForestClassifier(n_estimators=10, random_state=42)
    -svm_clf = SVC(gamma="auto", probability=True, random_state=42)
    -
    -voting_clf = VotingClassifier(
    -    estimators=[('lr', log_clf), ('rf', rnd_clf), ('svc', svm_clf)],
    -    voting='soft')
    -voting_clf.fit(X_train, y_train)
    -
    -from sklearn.metrics import accuracy_score
    -
    -for clf in (log_clf, rnd_clf, svm_clf, voting_clf):
    -    clf.fit(X_train, y_train)
    -    y_pred = clf.predict(X_test)
    -    print(clf.__class__.__name__, accuracy_score(y_test, y_pred))
    +
    heads_proba = 0.51
    +coin_tosses = (np.random.rand(10000, 10) < heads_proba).astype(np.int32)
    +cumulative_heads_ratio = np.cumsum(coin_tosses, axis=0) / np.arange(1, 10001).reshape(-1, 1)
    +plt.figure(figsize=(8,3.5))
    +plt.plot(cumulative_heads_ratio)
    +plt.plot([0, 10000], [0.51, 0.51], "k--", linewidth=2, label="51%")
    +plt.plot([0, 10000], [0.5, 0.5], "k-", label="50%")
    +plt.xlabel("Number of coin tosses")
    +plt.ylabel("Heads ratio")
    +plt.legend(loc="lower right")
    +plt.axis([0, 10000, 0.42, 0.58])
    +plt.show()
     

    @@ -304,7 +275,7 @@ voting_clf.fit(X_train, y_train)

  • 45
  • 46
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs037.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs037.html index 2ac864af2..4f248f6f5 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs037.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs037.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,7 +232,7 @@ MathJax.Hub.Config({ -

    Please, not the moons again! Voting and Bagging

    +

    Using the Voting Classifier

    @@ -239,46 +241,39 @@ MathJax.Hub.Config({ X, y = make_moons(n_samples=500, noise=0.30, random_state=42) X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42) + from sklearn.ensemble import RandomForestClassifier from sklearn.ensemble import VotingClassifier from sklearn.linear_model import LogisticRegression from sklearn.svm import SVC -log_clf = LogisticRegression(random_state=42) -rnd_clf = RandomForestClassifier(random_state=42) -svm_clf = SVC(random_state=42) +log_clf = LogisticRegression(solver="liblinear", random_state=42) +rnd_clf = RandomForestClassifier(n_estimators=10, random_state=42) +svm_clf = SVC(gamma="auto", random_state=42) voting_clf = VotingClassifier( estimators=[('lr', log_clf), ('rf', rnd_clf), ('svc', svm_clf)], voting='hard') -voting_clf.fit(X_train, y_train) -

    -

    - -

    from sklearn.metrics import accuracy_score
    +voting_clf.fit(X_train, y_train)
    +
    +from sklearn.metrics import accuracy_score
     
     for clf in (log_clf, rnd_clf, svm_clf, voting_clf):
         clf.fit(X_train, y_train)
         y_pred = clf.predict(X_test)
         print(clf.__class__.__name__, accuracy_score(y_test, y_pred))
    -
    -

    - -

    log_clf = LogisticRegression(random_state=42)
    -rnd_clf = RandomForestClassifier(random_state=42)
    -svm_clf = SVC(probability=True, random_state=42)
    +log_clf = LogisticRegression(solver="liblinear", random_state=42)
    +rnd_clf = RandomForestClassifier(n_estimators=10, random_state=42)
    +svm_clf = SVC(gamma="auto", probability=True, random_state=42)
     
     voting_clf = VotingClassifier(
         estimators=[('lr', log_clf), ('rf', rnd_clf), ('svc', svm_clf)],
         voting='soft')
     voting_clf.fit(X_train, y_train)
    -
    -

    - -

    from sklearn.metrics import accuracy_score
    +from sklearn.metrics import accuracy_score
     
     for clf in (log_clf, rnd_clf, svm_clf, voting_clf):
         clf.fit(X_train, y_train)
    @@ -311,7 +306,7 @@ voting_clf.fit(X_train, y_train)
       
  • 46
  • 47
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs038.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs038.html index aaf42f6a9..17feef8c7 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs038.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs038.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,63 +232,60 @@ MathJax.Hub.Config({ -

    Now Bagging

    - +

    Please, not the moons again! Voting and Bagging

    -

    from sklearn.ensemble import BaggingClassifier
    -from sklearn.tree import DecisionTreeClassifier
    +
    from sklearn.model_selection import train_test_split
    +from sklearn.datasets import make_moons
     
    -bag_clf = BaggingClassifier(
    -    DecisionTreeClassifier(random_state=42), n_estimators=500,
    -    max_samples=100, bootstrap=True, n_jobs=-1, random_state=42)
    -bag_clf.fit(X_train, y_train)
    -y_pred = bag_clf.predict(X_test)
    +X, y = make_moons(n_samples=500, noise=0.30, random_state=42)
    +X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
    +from sklearn.ensemble import RandomForestClassifier
    +from sklearn.ensemble import VotingClassifier
    +from sklearn.linear_model import LogisticRegression
    +from sklearn.svm import SVC
    +
    +log_clf = LogisticRegression(random_state=42)
    +rnd_clf = RandomForestClassifier(random_state=42)
    +svm_clf = SVC(random_state=42)
    +
    +voting_clf = VotingClassifier(
    +    estimators=[('lr', log_clf), ('rf', rnd_clf), ('svc', svm_clf)],
    +    voting='hard')
    +voting_clf.fit(X_train, y_train)
     

    from sklearn.metrics import accuracy_score
    -print(accuracy_score(y_test, y_pred))
    +
    +for clf in (log_clf, rnd_clf, svm_clf, voting_clf):
    +    clf.fit(X_train, y_train)
    +    y_pred = clf.predict(X_test)
    +    print(clf.__class__.__name__, accuracy_score(y_test, y_pred))
     

    -

    tree_clf = DecisionTreeClassifier(random_state=42)
    -tree_clf.fit(X_train, y_train)
    -y_pred_tree = tree_clf.predict(X_test)
    -print(accuracy_score(y_test, y_pred_tree))
    +
    log_clf = LogisticRegression(random_state=42)
    +rnd_clf = RandomForestClassifier(random_state=42)
    +svm_clf = SVC(probability=True, random_state=42)
    +
    +voting_clf = VotingClassifier(
    +    estimators=[('lr', log_clf), ('rf', rnd_clf), ('svc', svm_clf)],
    +    voting='soft')
    +voting_clf.fit(X_train, y_train)
     

    -

    from matplotlib.colors import ListedColormap
    +
    from sklearn.metrics import accuracy_score
     
    -def plot_decision_boundary(clf, X, y, axes=[-1.5, 2.5, -1, 1.5], alpha=0.5, contour=True):
    -    x1s = np.linspace(axes[0], axes[1], 100)
    -    x2s = np.linspace(axes[2], axes[3], 100)
    -    x1, x2 = np.meshgrid(x1s, x2s)
    -    X_new = np.c_[x1.ravel(), x2.ravel()]
    -    y_pred = clf.predict(X_new).reshape(x1.shape)
    -    custom_cmap = ListedColormap(['#fafab0','#9898ff','#a0faa0'])
    -    plt.contourf(x1, x2, y_pred, alpha=0.3, cmap=custom_cmap)
    -    if contour:
    -        custom_cmap2 = ListedColormap(['#7d7d58','#4c4c7f','#507d50'])
    -        plt.contour(x1, x2, y_pred, cmap=custom_cmap2, alpha=0.8)
    -    plt.plot(X[:, 0][y==0], X[:, 1][y==0], "yo", alpha=alpha)
    -    plt.plot(X[:, 0][y==1], X[:, 1][y==1], "bs", alpha=alpha)
    -    plt.axis(axes)
    -    plt.xlabel(r"$x_1$", fontsize=18)
    -    plt.ylabel(r"$x_2$", fontsize=18, rotation=0)
    -plt.figure(figsize=(11,4))
    -plt.subplot(121)
    -plot_decision_boundary(tree_clf, X, y)
    -plt.title("Decision Tree", fontsize=14)
    -plt.subplot(122)
    -plot_decision_boundary(bag_clf, X, y)
    -plt.title("Decision Trees with Bagging", fontsize=14)
    -plt.show()
    +for clf in (log_clf, rnd_clf, svm_clf, voting_clf):
    +    clf.fit(X_train, y_train)
    +    y_pred = clf.predict(X_test)
    +    print(clf.__class__.__name__, accuracy_score(y_test, y_pred))
     

    @@ -314,7 +313,7 @@ plt.show()

  • 47
  • 48
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs039.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs039.html index 2f2ba5519..ccb8fad5c 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs039.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs039.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,47 +232,64 @@ MathJax.Hub.Config({ -

    Random forests

    +

    Now Bagging

    -Random forests provide an improvement over bagged trees by way of a -small tweak that decorrelates the trees. + +

    from sklearn.ensemble import BaggingClassifier
    +from sklearn.tree import DecisionTreeClassifier
    +
    +bag_clf = BaggingClassifier(
    +    DecisionTreeClassifier(random_state=42), n_estimators=500,
    +    max_samples=100, bootstrap=True, n_jobs=-1, random_state=42)
    +bag_clf.fit(X_train, y_train)
    +y_pred = bag_clf.predict(X_test)
    +

    -As in bagging, we build a -number of decision trees on bootstrapped training samples. But when -building these decision trees, each time a split in a tree is -considered, a random sample of \( m \) predictors is chosen as split -candidates from the full set of \( p \) predictors. The split is allowed to -use only one of those \( m \) predictors. + +

    from sklearn.metrics import accuracy_score
    +print(accuracy_score(y_test, y_pred))
    +

    -A fresh sample of \( m \) predictors is -taken at each split, and typically we choose - -$$ -m\approx \sqrt{p}. -$$ + +

    tree_clf = DecisionTreeClassifier(random_state=42)
    +tree_clf.fit(X_train, y_train)
    +y_pred_tree = tree_clf.predict(X_test)
    +print(accuracy_score(y_test, y_pred_tree))
    +

    -In building a random forest, at -each split in the tree, the algorithm is not even allowed to consider -a majority of the available predictors. -

    -The reason for this is rather clever. Suppose that there is one very -strong predictor in the data set, along with a number of other -moderately strong predictors. Then in the collection of bagged -variable importance random forest trees, most or all of the trees will -use this strong predictor in the top split. Consequently, all of the -bagged trees will look quite similar to each other. Hence the -predictions from the bagged trees will be highly correlated. -Unfortunately, averaging many highly correlated quantities does not -lead to as large of a reduction in variance as averaging many -uncorrelated quanti- ties. In particular, this means that bagging will -not lead to a substantial reduction in variance over a single tree in -this setting. + +

    from matplotlib.colors import ListedColormap
     
    +def plot_decision_boundary(clf, X, y, axes=[-1.5, 2.5, -1, 1.5], alpha=0.5, contour=True):
    +    x1s = np.linspace(axes[0], axes[1], 100)
    +    x2s = np.linspace(axes[2], axes[3], 100)
    +    x1, x2 = np.meshgrid(x1s, x2s)
    +    X_new = np.c_[x1.ravel(), x2.ravel()]
    +    y_pred = clf.predict(X_new).reshape(x1.shape)
    +    custom_cmap = ListedColormap(['#fafab0','#9898ff','#a0faa0'])
    +    plt.contourf(x1, x2, y_pred, alpha=0.3, cmap=custom_cmap)
    +    if contour:
    +        custom_cmap2 = ListedColormap(['#7d7d58','#4c4c7f','#507d50'])
    +        plt.contour(x1, x2, y_pred, cmap=custom_cmap2, alpha=0.8)
    +    plt.plot(X[:, 0][y==0], X[:, 1][y==0], "yo", alpha=alpha)
    +    plt.plot(X[:, 0][y==1], X[:, 1][y==1], "bs", alpha=alpha)
    +    plt.axis(axes)
    +    plt.xlabel(r"$x_1$", fontsize=18)
    +    plt.ylabel(r"$x_2$", fontsize=18, rotation=0)
    +plt.figure(figsize=(11,4))
    +plt.subplot(121)
    +plot_decision_boundary(tree_clf, X, y)
    +plt.title("Decision Tree", fontsize=14)
    +plt.subplot(122)
    +plot_decision_boundary(bag_clf, X, y)
    +plt.title("Decision Trees with Bagging", fontsize=14)
    +plt.show()
    +

    @@ -297,7 +316,7 @@ this setting.

  • 48
  • 49
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs040.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs040.html index f14ffae64..7ebfb7732 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs040.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs040.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,30 +232,48 @@ MathJax.Hub.Config({ -

    Random Forest Algorithm

    -The algorithm described here can be applied to both classification and regression problems. +

    Random forests

    -We will grow of forest of say \( M \) trees. +Random forests provide an improvement over bagged trees by way of a +small tweak that decorrelates the trees. -

      -
    1. For \( m=1:M \) we
    2. +

      +As in bagging, we build a +number of decision trees on bootstrapped training samples. But when +building these decision trees, each time a split in a tree is +considered, a random sample of \( m \) predictors is chosen as split +candidates from the full set of \( p \) predictors. The split is allowed to +use only one of those \( m \) predictors. -

        -
      • Draw a bootstrap sample of from the training data organized in our \( \boldsymbol{X} \) matrix.
      • -
      • We grow then a random forest tree \( T_m \) based on the bootstrapped data by repeating the steps outlined till we reach the maximum node size is reached
      • +

        +A fresh sample of \( m \) predictors is +taken at each split, and typically we choose -

          -
        1. we select \( m \le p \) varibales at random from the \( p \) predictors/features
        2. -
        3. pick the best split point among the \( m \) features using either the CART algorithm or the ID3 for classification and create a new node
        4. -
        5. split the node into daughter nodes
        6. -
        +$$ +m\approx \sqrt{p}. +$$ -
      +

      +In building a random forest, at +each split in the tree, the algorithm is not even allowed to consider +a majority of the available predictors. -

    3. Output then the ensemble of trees \( \{T_m\}_1^{M} \) and make predictions for either a regression type of problem or a classification type of problem.
    4. -
    +

    +The reason for this is rather clever. Suppose that there is one very +strong predictor in the data set, along with a number of other +moderately strong predictors. Then in the collection of bagged +variable importance random forest trees, most or all of the trees will +use this strong predictor in the top split. Consequently, all of the +bagged trees will look quite similar to each other. Hence the +predictions from the bagged trees will be highly correlated. +Unfortunately, averaging many highly correlated quantities does not +lead to as large of a reduction in variance as averaging many +uncorrelated quanti- ties. In particular, this means that bagging will +not lead to a substantial reduction in variance over a single tree in +this setting. +

      @@ -279,7 +299,7 @@ We will grow of forest of say \( M \) trees.
    • 49
    • 50
    • ...
    • -
    • 54
    • +
    • 55
    • »
    diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs041.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs041.html index 78b84e253..09e205e9c 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs041.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs041.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,78 +232,30 @@ MathJax.Hub.Config({ -

    Random Forests Compared with other Methods on the Cancer Data

    +

    Random Forest Algorithm

    +The algorithm described here can be applied to both classification and regression problems. +

    +We will grow of forest of say \( M \) trees. - -

    import matplotlib.pyplot as plt
    -import numpy as np
    -from sklearn.model_selection import  train_test_split 
    -from sklearn.datasets import load_breast_cancer
    -from sklearn.svm import SVC
    -from sklearn.linear_model import LogisticRegression
    -from sklearn.tree import DecisionTreeClassifier
    +
      +
    1. For \( m=1:M \) we
    2. -# Load the data -cancer = load_breast_cancer() +
        +
      • Draw a bootstrap sample of from the training data organized in our \( \boldsymbol{X} \) matrix.
      • +
      • We grow then a random forest tree \( T_m \) based on the bootstrapped data by repeating the steps outlined till we reach the maximum node size is reached
      • -X_train, X_test, y_train, y_test = train_test_split(cancer.data,cancer.target,random_state=0) -print(X_train.shape) -print(X_test.shape) -# Logistic Regression -logreg = LogisticRegression(solver='lbfgs') -logreg.fit(X_train, y_train) -print("Test set accuracy with Logistic Regression: {:.2f}".format(logreg.score(X_test,y_test))) -# Support vector machine -svm = SVC(gamma='auto', C=100) -svm.fit(X_train, y_train) -print("Test set accuracy with SVM: {:.2f}".format(svm.score(X_test,y_test))) -# Decision Trees -deep_tree_clf = DecisionTreeClassifier(max_depth=None) -deep_tree_clf.fit(X_train, y_train) -print("Test set accuracy with Decision Trees: {:.2f}".format(deep_tree_clf.score(X_test,y_test))) -#now scale the data -from sklearn.preprocessing import StandardScaler -scaler = StandardScaler() -scaler.fit(X_train) -X_train_scaled = scaler.transform(X_train) -X_test_scaled = scaler.transform(X_test) -# Logistic Regression -logreg.fit(X_train_scaled, y_train) -print("Test set accuracy Logistic Regression with scaled data: {:.2f}".format(logreg.score(X_test_scaled,y_test))) -# Support Vector Machine -svm.fit(X_train_scaled, y_train) -print("Test set accuracy SVM with scaled data: {:.2f}".format(logreg.score(X_test_scaled,y_test))) -# Decision Trees -deep_tree_clf.fit(X_train_scaled, y_train) -print("Test set accuracy with Decision Trees and scaled data: {:.2f}".format(deep_tree_clf.score(X_test_scaled,y_test))) +
          +
        1. we select \( m \le p \) varibales at random from the \( p \) predictors/features
        2. +
        3. pick the best split point among the \( m \) features using either the CART algorithm or the ID3 for classification and create a new node
        4. +
        5. split the node into daughter nodes
        6. +
        +
      -from sklearn.ensemble import RandomForestClassifier -from sklearn.preprocessing import LabelEncoder -from sklearn.model_selection import cross_validate -# Data set not specificied -#Instantiate the model with 500 trees and entropy as splitting criteria -Random_Forest_model = RandomForestClassifier(n_estimators=500,criterion="entropy") -Random_Forest_model.fit(X_train_scaled, y_train) -#Cross validation -accuracy = cross_validate(Random_Forest_model,X_test_scaled,y_test,cv=10)['test_score'] -print(accuracy) -print("Test set accuracy with Random Forests and scaled data: {:.2f}".format(Random_Forest_model.score(X_test_scaled,y_test))) +
    3. Output then the ensemble of trees \( \{T_m\}_1^{M} \) and make predictions for either a regression type of problem or a classification type of problem.
    4. +
    - -import scikitplot as skplt -y_pred = Random_Forest_model.predict(X_test_scaled) -skplt.metrics.plot_confusion_matrix(y_test, y_pred, normalize=True) -#<matplotlib.axes._subplots.AxesSubplot object at 0x7fe967d64490> -plt.show() -y_probas = Random_Forest_model.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() -
    -

    diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs042.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs042.html index 9b3514df5..8cbdfe4b6 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs042.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs042.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,24 +232,76 @@ MathJax.Hub.Config({ -

    Compare Bagging on Trees with Random Forests

    +

    Random Forests Compared with other Methods on the Cancer Data

    -

    bag_clf = BaggingClassifier(
    -    DecisionTreeClassifier(splitter="random", max_leaf_nodes=16, random_state=42),
    -    n_estimators=500, max_samples=1.0, bootstrap=True, n_jobs=-1, random_state=42)
    -
    -

    +

    import matplotlib.pyplot as plt
    +import numpy as np
    +from sklearn.model_selection import  train_test_split 
    +from sklearn.datasets import load_breast_cancer
    +from sklearn.svm import SVC
    +from sklearn.linear_model import LogisticRegression
    +from sklearn.tree import DecisionTreeClassifier
    +
    +# Load the data
    +cancer = load_breast_cancer()
    +
    +X_train, X_test, y_train, y_test = train_test_split(cancer.data,cancer.target,random_state=0)
    +print(X_train.shape)
    +print(X_test.shape)
    +# Logistic Regression
    +logreg = LogisticRegression(solver='lbfgs')
    +logreg.fit(X_train, y_train)
    +print("Test set accuracy with Logistic Regression: {:.2f}".format(logreg.score(X_test,y_test)))
    +# Support vector machine
    +svm = SVC(gamma='auto', C=100)
    +svm.fit(X_train, y_train)
    +print("Test set accuracy with SVM: {:.2f}".format(svm.score(X_test,y_test)))
    +# Decision Trees
    +deep_tree_clf = DecisionTreeClassifier(max_depth=None)
    +deep_tree_clf.fit(X_train, y_train)
    +print("Test set accuracy with Decision Trees: {:.2f}".format(deep_tree_clf.score(X_test,y_test)))
    +#now scale the data
    +from sklearn.preprocessing import StandardScaler
    +scaler = StandardScaler()
    +scaler.fit(X_train)
    +X_train_scaled = scaler.transform(X_train)
    +X_test_scaled = scaler.transform(X_test)
    +# Logistic Regression
    +logreg.fit(X_train_scaled, y_train)
    +print("Test set accuracy Logistic Regression with scaled data: {:.2f}".format(logreg.score(X_test_scaled,y_test)))
    +# Support Vector Machine
    +svm.fit(X_train_scaled, y_train)
    +print("Test set accuracy SVM with scaled data: {:.2f}".format(logreg.score(X_test_scaled,y_test)))
    +# Decision Trees
    +deep_tree_clf.fit(X_train_scaled, y_train)
    +print("Test set accuracy with Decision Trees and scaled data: {:.2f}".format(deep_tree_clf.score(X_test_scaled,y_test)))
    +
     
    -
    -
    bag_clf.fit(X_train, y_train)
    -y_pred = bag_clf.predict(X_test)
     from sklearn.ensemble import RandomForestClassifier
    -rnd_clf = RandomForestClassifier(n_estimators=500, max_leaf_nodes=16, n_jobs=-1, random_state=42)
    -rnd_clf.fit(X_train, y_train)
    -y_pred_rf = rnd_clf.predict(X_test)
    -np.sum(y_pred == y_pred_rf) / len(y_pred) 
    +from sklearn.preprocessing import LabelEncoder
    +from sklearn.model_selection import cross_validate
    +# Data set not specificied
    +#Instantiate the model with 500 trees and entropy as splitting criteria
    +Random_Forest_model = RandomForestClassifier(n_estimators=500,criterion="entropy")
    +Random_Forest_model.fit(X_train_scaled, y_train)
    +#Cross validation
    +accuracy = cross_validate(Random_Forest_model,X_test_scaled,y_test,cv=10)['test_score']
    +print(accuracy)
    +print("Test set accuracy with Random Forests and scaled data: {:.2f}".format(Random_Forest_model.score(X_test_scaled,y_test)))
    +
    +
    +import scikitplot as skplt
    +y_pred = Random_Forest_model.predict(X_test_scaled)
    +skplt.metrics.plot_confusion_matrix(y_test, y_pred, normalize=True)
    +#<matplotlib.axes._subplots.AxesSubplot object at 0x7fe967d64490>
    +plt.show()
    +y_probas = Random_Forest_model.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()
     

    @@ -275,7 +329,7 @@ np.sum(y_pred =

  • 51
  • 52
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs043.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs043.html index 3ea5fbe0c..0b45318a1 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs043.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs043.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,11 +232,25 @@ MathJax.Hub.Config({ -

    Feature Importance

    - +

    Compare Bagging on Trees with Random Forests

    -Example will be added here. + +

    bag_clf = BaggingClassifier(
    +    DecisionTreeClassifier(splitter="random", max_leaf_nodes=16, random_state=42),
    +    n_estimators=500, max_samples=1.0, bootstrap=True, n_jobs=-1, random_state=42)
    +
    +

    + + +

    bag_clf.fit(X_train, y_train)
    +y_pred = bag_clf.predict(X_test)
    +from sklearn.ensemble import RandomForestClassifier
    +rnd_clf = RandomForestClassifier(n_estimators=500, max_leaf_nodes=16, n_jobs=-1, random_state=42)
    +rnd_clf.fit(X_train, y_train)
    +y_pred_rf = rnd_clf.predict(X_test)
    +np.sum(y_pred == y_pred_rf) / len(y_pred) 
    +

    @@ -261,7 +277,7 @@ Example will be added here.

  • 52
  • 53
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs044.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs044.html index 5519ff351..159f3cf2a 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs044.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs044.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,19 +232,10 @@ MathJax.Hub.Config({ -

    Boosting, a Bird'e Eye

    +

    Feature Importance

    -The basic idea is to combine weak classifiers in order to create a good -classifier. With a weak classifier we often intend a classifier which -produces results which are only slightly better than we would get by -random guesses. - -

    -This is done by applying in an iterative way a weak (or a standard -classifier like decision trees) to modify the data. In each iteration -we emphasize those observations which are misclassified by weighting -them with a factor. +Example will be added here.

    @@ -269,6 +262,8 @@ them with a factor.

  • 52
  • 53
  • 54
  • +
  • ...
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs045.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs045.html index 4afd6e9ef..875fb75aa 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs045.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs045.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,24 +232,19 @@ MathJax.Hub.Config({ -

    Adaptive boosting: AdaBoost, Basic Algorithm

    +

    Boosting, a Bird'e Eye

    -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} \). +The basic idea is to combine weak classifiers in order to create a good +classifier. With a weak classifier we often intend a classifier which +produces results which are only slightly better than we would get by +random guesses.

    -We can then define the misclassification error \( \mathrm{err} \) as -$$ -\mathrm{err}=\frac{1}{n}\sum_{i=0}^{n-1}I(y_i\ne G(\boldsymbol{X}_{i*}), -$$ - -where the function \( I() \) is one if we misclassify and zero if we classify correctly. +This is done by applying in an iterative way a weak (or a standard +classifier like decision trees) to modify the data. In each iteration +we emphasize those observations which are misclassified by weighting +them with a factor.

    @@ -273,6 +270,7 @@ where the function \( I() \) is one if we misclassify and zero if we classify co

  • 52
  • 53
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs046.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs046.html index 11b689d88..4240a0897 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs046.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs046.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,42 +232,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 thus 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 classificatio 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.

    @@ -290,6 +274,7 @@ observations that are missed in the previous iterations.

  • 52
  • 53
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs047.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs047.html index 416aaf671..e2b533008 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs047.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs047.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,7 +232,42 @@ MathJax.Hub.Config({ -

    Figure to Illustrate the Iterative Classification Process

    +

    Basic Steps of AdaBoost

    + +

    +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. +
    + +$$ +\mathrm{err}=\frac{\sum_{i=0}^{n-1}w_iI(y_i\ne G(\boldsymbol{X}_{i*})}{\sum_{i=0}^{n-1}w_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 thus 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 classificatio step \( m \) is then forced to concentrate on those +observations that are missed in the previous iterations.

    @@ -254,6 +291,7 @@ MathJax.Hub.Config({

  • 52
  • 53
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs048.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs048.html index af9e80be2..230d60153 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs048.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs048.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,46 +232,8 @@ MathJax.Hub.Config({ -

    AdaBoost Examples

    +

    Figure to Illustrate the Iterative Classification Process

    -

    -Using Scikit-Learn it is easy to appply the adaptive boosting algorithm, as done here. - -

    - - -

    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)
    -
    -plot_decision_boundary(ada_clf, X, y)
    -
    -m = len(X_train)
    -
    -plt.figure(figsize=(11, 4))
    -for subplot, learning_rate in ((121, 1), (122, 0.5)):
    -    sample_weights = np.ones(m)
    -    plt.subplot(subplot)
    -    for i in range(5):
    -        svm_clf = SVC(kernel="rbf", C=0.05, gamma="auto", random_state=42)
    -        svm_clf.fit(X_train, y_train, sample_weight=sample_weights)
    -        y_pred = svm_clf.predict(X_train)
    -        sample_weights[y_pred != y_train] *= (1 + learning_rate)
    -        plot_decision_boundary(svm_clf, X, y, alpha=0.2)
    -        plt.title("learning_rate = {}".format(learning_rate), fontsize=16)
    -    if subplot == 121:
    -        plt.text(-0.7, -0.65, "1", fontsize=14)
    -        plt.text(-0.6, -0.10, "2", fontsize=14)
    -        plt.text(-0.5,  0.10, "3", fontsize=14)
    -        plt.text(-0.4,  0.55, "4", fontsize=14)
    -        plt.text(-0.3,  0.90, "5", fontsize=14)
    -
    -save_fig("boosting_plot")
    -plt.show()
    -

    @@ -291,6 +255,7 @@ plt.show()

  • 52
  • 53
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs049.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs049.html index dd5ac1ce0..2e1feab4d 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs049.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs049.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,18 +232,46 @@ 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)
    +
    +plot_decision_boundary(ada_clf, X, y)
    +
    +m = len(X_train)
    +
    +plt.figure(figsize=(11, 4))
    +for subplot, learning_rate in ((121, 1), (122, 0.5)):
    +    sample_weights = np.ones(m)
    +    plt.subplot(subplot)
    +    for i in range(5):
    +        svm_clf = SVC(kernel="rbf", C=0.05, gamma="auto", random_state=42)
    +        svm_clf.fit(X_train, y_train, sample_weight=sample_weights)
    +        y_pred = svm_clf.predict(X_train)
    +        sample_weights[y_pred != y_train] *= (1 + learning_rate)
    +        plot_decision_boundary(svm_clf, X, y, alpha=0.2)
    +        plt.title("learning_rate = {}".format(learning_rate), fontsize=16)
    +    if subplot == 121:
    +        plt.text(-0.7, -0.65, "1", fontsize=14)
    +        plt.text(-0.6, -0.10, "2", fontsize=14)
    +        plt.text(-0.5,  0.10, "3", fontsize=14)
    +        plt.text(-0.4,  0.55, "4", fontsize=14)
    +        plt.text(-0.3,  0.90, "5", fontsize=14)
    +
    +save_fig("boosting_plot")
    +plt.show()
    +

    @@ -262,6 +292,7 @@ function was the least squares function.

  • 52
  • 53
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs050.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs050.html index ad0af564b..9d656303a 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs050.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs050.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,30 +232,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. +

      @@ -272,6 +263,7 @@ The way we proceed in an iterative fashion is to
    • 52
    • 53
    • 54
    • +
    • 55
    • »
    diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs051.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs051.html index 9bfb51dfe..20712fafa 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs051.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs051.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,94 +232,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-bs052.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs052.html index 54ea53871..94de8a221 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs052.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs052.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,66 +232,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()
     

    @@ -308,6 +336,7 @@ error_going_up = 52

  • 53
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/._DecisionTrees-bs053.html b/doc/pub/DecisionTrees/html/._DecisionTrees-bs053.html index a01826cc0..5f7afcc1d 100644 --- a/doc/pub/DecisionTrees/html/._DecisionTrees-bs053.html +++ b/doc/pub/DecisionTrees/html/._DecisionTrees-bs053.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -230,16 +232,68 @@ 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 + +

    from sklearn.model_selection import train_test_split
    +from sklearn.metrics import mean_squared_error
    +
    +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)
    +
    +

      @@ -255,6 +309,8 @@ data science problems in a fast and accurate way
    • 52
    • 53
    • 54
    • +
    • 55
    • +
    • »
    diff --git a/doc/pub/DecisionTrees/html/DecisionTrees-bs.html b/doc/pub/DecisionTrees/html/DecisionTrees-bs.html index d44f3e9dc..532859bcb 100644 --- a/doc/pub/DecisionTrees/html/DecisionTrees-bs.html +++ b/doc/pub/DecisionTrees/html/DecisionTrees-bs.html @@ -89,42 +89,43 @@ Automatically generated HTML file from DocOnce source 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -194,27 +195,28 @@ MathJax.Hub.Config({
  • Pros and cons of trees, pros
  • Disadvantages
  • From a Single Tree to Many Trees, Meet the Jungle of Methods
  • -
  • Bagging
  • -
  • More bagging
  • -
  • Simple Voting Example, head or tail
  • -
  • Using the Voting Classifier
  • -
  • Please, not the moons again! Voting and Bagging
  • -
  • Now Bagging
  • -
  • Random forests
  • -
  • Random Forest Algorithm
  • -
  • Random Forests Compared with other Methods on the Cancer Data
  • -
  • Compare Bagging on Trees with Random Forests
  • -
  • Feature Importance
  • -
  • Boosting, a Bird'e Eye
  • -
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • -
  • Basic Steps of AdaBoost
  • -
  • Figure to Illustrate the Iterative Classification Process
  • -
  • AdaBoost Examples
  • -
  • Gradient boosting: Basics
  • -
  • Gradient Boosting, algorithm
  • -
  • Gradient Boosting, Examples
  • -
  • Gradient Boots with Early Stopping
  • -
  • XGBoost: Extreme Gradient Boosting
  • +
  • An Overview of Ensemble Methods
  • +
  • Bagging
  • +
  • More bagging
  • +
  • Simple Voting Example, head or tail
  • +
  • Using the Voting Classifier
  • +
  • Please, not the moons again! Voting and Bagging
  • +
  • Now Bagging
  • +
  • Random forests
  • +
  • Random Forest Algorithm
  • +
  • Random Forests Compared with other Methods on the Cancer Data
  • +
  • Compare Bagging on Trees with Random Forests
  • +
  • Feature Importance
  • +
  • Boosting, a Bird'e Eye
  • +
  • Adaptive boosting: AdaBoost, Basic Algorithm
  • +
  • Basic Steps of AdaBoost
  • +
  • Figure to Illustrate the Iterative Classification Process
  • +
  • AdaBoost Examples
  • +
  • Gradient boosting: Basics
  • +
  • Gradient Boosting, algorithm
  • +
  • Gradient Boosting, Examples
  • +
  • Gradient Boots with Early Stopping
  • +
  • XGBoost: Extreme Gradient Boosting
  • @@ -249,7 +251,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Nov 5, 2019

    +

    Nov 6, 2019


    @@ -273,7 +275,7 @@ MathJax.Hub.Config({

  • 9
  • 10
  • ...
  • -
  • 54
  • +
  • 55
  • »
  • diff --git a/doc/pub/DecisionTrees/html/DecisionTrees-reveal.html b/doc/pub/DecisionTrees/html/DecisionTrees-reveal.html index 31bcc4388..5c05bc76e 100644 --- a/doc/pub/DecisionTrees/html/DecisionTrees-reveal.html +++ b/doc/pub/DecisionTrees/html/DecisionTrees-reveal.html @@ -148,7 +148,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

     
    -

    Nov 5, 2019

    +

    Nov 6, 2019


    @@ -1464,7 +1464,15 @@ We discuss these methods here.

    -

    Bagging

    +

    An Overview of Ensemble Methods

    + +

    +



    +
    + + +
    +

    Bagging

    The plain decision trees suffer from high @@ -1483,7 +1491,7 @@ learning method.

    -

    More bagging

    +

    More bagging

    Bagging typically results in improved accuracy @@ -1512,7 +1520,7 @@ predictor, averaged over all \( B \) trees.

    -

    Simple Voting Example, head or tail

    +

    Simple Voting Example, head or tail

    @@ -1533,7 +1541,7 @@ plt.show()

    -

    Using the Voting Classifier

    +

    Using the Voting Classifier

    @@ -1585,7 +1593,7 @@ voting_clf.fit(X_train, y_train)

    -

    Please, not the moons again! Voting and Bagging

    +

    Please, not the moons again! Voting and Bagging

    @@ -1644,7 +1652,7 @@ voting_clf.fit(X_train, y_train)

    -

    Now Bagging

    +

    Now Bagging

    @@ -1706,7 +1714,7 @@ plt.show()

    -

    Random forests

    +

    Random forests

    Random forests provide an improvement over bagged trees by way of a @@ -1752,7 +1760,7 @@ this setting.

    -

    Random Forest Algorithm

    +

    Random Forest Algorithm

    The algorithm described here can be applied to both classification and regression problems.

    @@ -1783,7 +1791,7 @@ We will grow of forest of say \( M \) trees.

    -

    Random Forests Compared with other Methods on the Cancer Data

    +

    Random Forests Compared with other Methods on the Cancer Data

    @@ -1858,7 +1866,7 @@ plt.show()

    -

    Compare Bagging on Trees with Random Forests

    +

    Compare Bagging on Trees with Random Forests

    @@ -1881,7 +1889,7 @@ np.sum(y_pred == y_pred_rf) / len(y_pred)

    -

    Feature Importance

    +

    Feature Importance

    Example will be added here. @@ -1889,7 +1897,7 @@ Example will be added here.

    -

    Boosting, a Bird'e Eye

    +

    Boosting, a Bird'e Eye

    The basic idea is to combine weak classifiers in order to create a good @@ -1906,7 +1914,7 @@ them with a factor.

    -

    Adaptive boosting: AdaBoost, Basic Algorithm

    +

    Adaptive boosting: AdaBoost, Basic Algorithm

    The algorithm here is rather straightforward. Assume that our weak @@ -1930,7 +1938,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. @@ -1971,12 +1979,12 @@ observations that are missed in the previous iterations.

    -

    Figure to Illustrate the Iterative Classification Process

    +

    Figure to Illustrate the Iterative Classification Process

    -

    AdaBoost Examples

    +

    AdaBoost Examples

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

    -

    Gradient boosting: Basics

    +

    Gradient boosting: Basics

    Gradient boosting is again a similar technique to Adapative boosting, @@ -2035,7 +2043,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 @@ -2063,7 +2071,7 @@ The way we proceed in an iterative fashion is to

    -

    Gradient Boosting, Examples

    +

    Gradient Boosting, Examples

    @@ -2154,7 +2162,7 @@ plt.show()

    -

    Gradient Boots with Early Stopping

    +

    Gradient Boots with Early Stopping

    @@ -2219,7 +2227,7 @@ error_going_up = 0

    -

    XGBoost: Extreme Gradient Boosting

    +

    XGBoost: Extreme Gradient Boosting

    XGBoost or Extreme Gradient @@ -2227,7 +2235,15 @@ 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 +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. + +

    +It is now the algorithm which wins essentially all ML competitions!!!

    diff --git a/doc/pub/DecisionTrees/html/DecisionTrees-solarized.html b/doc/pub/DecisionTrees/html/DecisionTrees-solarized.html index cfe624d34..e09f2ea36 100644 --- a/doc/pub/DecisionTrees/html/DecisionTrees-solarized.html +++ b/doc/pub/DecisionTrees/html/DecisionTrees-solarized.html @@ -109,42 +109,43 @@ div { text-align: justify; text-justify: inter-word; } 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -186,7 +187,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Nov 5, 2019

    +

    Nov 6, 2019












    @@ -1461,7 +1462,15 @@ We discuss these methods here.











    -

    Bagging

    +

    An Overview of Ensemble Methods

    + +

    +



    + +

    +









    + +

    Bagging

    The plain decision trees suffer from high @@ -1480,7 +1489,7 @@ learning method.











    -

    More bagging

    +

    More bagging

    Bagging typically results in improved accuracy @@ -1509,7 +1518,7 @@ predictor, averaged over all \( B \) trees.











    -

    Simple Voting Example, head or tail

    +

    Simple Voting Example, head or tail

    @@ -1529,7 +1538,7 @@ plt.show()











    -

    Using the Voting Classifier

    +

    Using the Voting Classifier

    @@ -1580,7 +1589,7 @@ voting_clf.fit(X_train, y_train)











    -

    Please, not the moons again! Voting and Bagging

    +

    Please, not the moons again! Voting and Bagging

    @@ -1638,7 +1647,7 @@ voting_clf.fit(X_train, y_train)











    -

    Now Bagging

    +

    Now Bagging

    @@ -1699,7 +1708,7 @@ plt.show()











    -

    Random forests

    +

    Random forests

    Random forests provide an improvement over bagged trees by way of a @@ -1743,7 +1752,7 @@ this setting.











    -

    Random Forest Algorithm

    +

    Random Forest Algorithm

    The algorithm described here can be applied to both classification and regression problems.

    @@ -1769,7 +1778,7 @@ We will grow of forest of say \( M \) trees.









    -

    Random Forests Compared with other Methods on the Cancer Data

    +

    Random Forests Compared with other Methods on the Cancer Data

    @@ -1843,7 +1852,7 @@ plt.show()











    -

    Compare Bagging on Trees with Random Forests

    +

    Compare Bagging on Trees with Random Forests

    @@ -1865,7 +1874,7 @@ np.sum(y_pred == y_pred_rf) / len(y_pred)











    -

    Feature Importance

    +

    Feature Importance

    Example will be added here. @@ -1873,7 +1882,7 @@ Example will be added here.











    -

    Boosting, a Bird'e Eye

    +

    Boosting, a Bird'e Eye

    The basic idea is to combine weak classifiers in order to create a good @@ -1890,7 +1899,7 @@ them with a factor.











    -

    Adaptive boosting: AdaBoost, Basic Algorithm

    +

    Adaptive boosting: AdaBoost, Basic Algorithm

    The algorithm here is rather straightforward. Assume that our weak @@ -1912,7 +1921,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. @@ -1952,12 +1961,12 @@ observations that are missed in the previous iterations.











    -

    Figure to Illustrate the Iterative Classification Process

    +

    Figure to Illustrate the Iterative Classification Process











    -

    AdaBoost Examples

    +

    AdaBoost Examples

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











    -

    Gradient boosting: Basics

    +

    Gradient boosting: Basics

    Gradient boosting is again a similar technique to Adapative boosting, @@ -2015,7 +2024,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 @@ -2041,7 +2050,7 @@ The way we proceed in an iterative fashion is to









    -

    Gradient Boosting, Examples

    +

    Gradient Boosting, Examples

    @@ -2131,7 +2140,7 @@ plt.show()











    -

    Gradient Boots with Early Stopping

    +

    Gradient Boots with Early Stopping

    @@ -2195,7 +2204,7 @@ error_going_up = 0











    -

    XGBoost: Extreme Gradient Boosting

    +

    XGBoost: Extreme Gradient Boosting

    XGBoost or Extreme Gradient @@ -2203,7 +2212,15 @@ 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 +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. + +

    +It is now the algorithm which wins essentially all ML competitions!!! diff --git a/doc/pub/DecisionTrees/html/DecisionTrees.html b/doc/pub/DecisionTrees/html/DecisionTrees.html index 9f4a57d59..2b45b7595 100644 --- a/doc/pub/DecisionTrees/html/DecisionTrees.html +++ b/doc/pub/DecisionTrees/html/DecisionTrees.html @@ -114,42 +114,43 @@ div { text-align: justify; text-justify: inter-word; } 2, None, '___sec31'), - ('Bagging', 2, None, '___sec32'), - ('More bagging', 2, None, '___sec33'), - ('Simple Voting Example, head or tail', 2, None, '___sec34'), - ('Using the Voting Classifier', 2, None, '___sec35'), + ('An Overview of Ensemble Methods', 2, None, '___sec32'), + ('Bagging', 2, None, '___sec33'), + ('More bagging', 2, None, '___sec34'), + ('Simple Voting Example, head or tail', 2, None, '___sec35'), + ('Using the Voting Classifier', 2, None, '___sec36'), ('Please, not the moons again! Voting and Bagging', 2, None, - '___sec36'), - ('Now Bagging', 2, None, '___sec37'), - ('Random forests', 2, None, '___sec38'), - ('Random Forest Algorithm', 2, None, '___sec39'), + '___sec37'), + ('Now Bagging', 2, None, '___sec38'), + ('Random forests', 2, None, '___sec39'), + ('Random Forest Algorithm', 2, None, '___sec40'), ('Random Forests Compared with other Methods on the Cancer Data', 2, None, - '___sec40'), + '___sec41'), ('Compare Bagging on Trees with Random Forests', 2, None, - '___sec41'), - ('Feature Importance', 2, None, '___sec42'), - ("Boosting, a Bird'e Eye", 2, None, '___sec43'), + '___sec42'), + ('Feature Importance', 2, None, '___sec43'), + ("Boosting, a Bird'e Eye", 2, None, '___sec44'), ('Adaptive boosting: AdaBoost, Basic Algorithm', 2, None, - '___sec44'), - ('Basic Steps of AdaBoost', 2, None, '___sec45'), + '___sec45'), + ('Basic Steps of AdaBoost', 2, None, '___sec46'), ('Figure to Illustrate the Iterative Classification Process', 2, None, - '___sec46'), - ('AdaBoost Examples', 2, None, '___sec47'), - ('Gradient boosting: Basics', 2, None, '___sec48'), - ('Gradient Boosting, algorithm', 2, None, '___sec49'), - ('Gradient Boosting, Examples', 2, None, '___sec50'), - ('Gradient Boots with Early Stopping', 2, None, '___sec51'), - ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec52')]} + '___sec47'), + ('AdaBoost Examples', 2, None, '___sec48'), + ('Gradient boosting: Basics', 2, None, '___sec49'), + ('Gradient Boosting, algorithm', 2, None, '___sec50'), + ('Gradient Boosting, Examples', 2, None, '___sec51'), + ('Gradient Boots with Early Stopping', 2, None, '___sec52'), + ('XGBoost: Extreme Gradient Boosting', 2, None, '___sec53')]} end of tocinfo --> @@ -191,7 +192,7 @@ MathJax.Hub.Config({

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

    -

    Nov 5, 2019

    +

    Nov 6, 2019












    @@ -1466,7 +1467,15 @@ We discuss these methods here.











    -

    Bagging

    +

    An Overview of Ensemble Methods

    + +

    +



    + +

    +









    + +

    Bagging

    The plain decision trees suffer from high @@ -1485,7 +1494,7 @@ learning method.











    -

    More bagging

    +

    More bagging

    Bagging typically results in improved accuracy @@ -1514,7 +1523,7 @@ predictor, averaged over all \( B \) trees.











    -

    Simple Voting Example, head or tail

    +

    Simple Voting Example, head or tail

    @@ -1534,7 +1543,7 @@ plt.show()











    -

    Using the Voting Classifier

    +

    Using the Voting Classifier

    @@ -1585,7 +1594,7 @@ voting_clf.fit(X_train, y_train)











    -

    Please, not the moons again! Voting and Bagging

    +

    Please, not the moons again! Voting and Bagging

    @@ -1643,7 +1652,7 @@ voting_clf.fit(X_train, y_train)











    -

    Now Bagging

    +

    Now Bagging

    @@ -1704,7 +1713,7 @@ plt.show()











    -

    Random forests

    +

    Random forests

    Random forests provide an improvement over bagged trees by way of a @@ -1748,7 +1757,7 @@ this setting.











    -

    Random Forest Algorithm

    +

    Random Forest Algorithm

    The algorithm described here can be applied to both classification and regression problems.

    @@ -1774,7 +1783,7 @@ We will grow of forest of say \( M \) trees.









    -

    Random Forests Compared with other Methods on the Cancer Data

    +

    Random Forests Compared with other Methods on the Cancer Data

    @@ -1848,7 +1857,7 @@ plt.show()











    -

    Compare Bagging on Trees with Random Forests

    +

    Compare Bagging on Trees with Random Forests

    @@ -1870,7 +1879,7 @@ np.sum(y_pred =











    -

    Feature Importance

    +

    Feature Importance

    Example will be added here. @@ -1878,7 +1887,7 @@ Example will be added here.











    -

    Boosting, a Bird'e Eye

    +

    Boosting, a Bird'e Eye

    The basic idea is to combine weak classifiers in order to create a good @@ -1895,7 +1904,7 @@ them with a factor.











    -

    Adaptive boosting: AdaBoost, Basic Algorithm

    +

    Adaptive boosting: AdaBoost, Basic Algorithm

    The algorithm here is rather straightforward. Assume that our weak @@ -1917,7 +1926,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. @@ -1957,12 +1966,12 @@ observations that are missed in the previous iterations.











    -

    Figure to Illustrate the Iterative Classification Process

    +

    Figure to Illustrate the Iterative Classification Process











    -

    AdaBoost Examples

    +

    AdaBoost Examples

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











    -

    Gradient boosting: Basics

    +

    Gradient boosting: Basics

    Gradient boosting is again a similar technique to Adapative boosting, @@ -2020,7 +2029,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 @@ -2046,7 +2055,7 @@ The way we proceed in an iterative fashion is to









    -

    Gradient Boosting, Examples

    +

    Gradient Boosting, Examples

    @@ -2136,7 +2145,7 @@ plt.show()











    -

    Gradient Boots with Early Stopping

    +

    Gradient Boots with Early Stopping

    @@ -2200,7 +2209,7 @@ error_going_up = XGBoost: Extreme Gradient Boosting +

    XGBoost: Extreme Gradient Boosting

    XGBoost or Extreme Gradient @@ -2208,7 +2217,15 @@ 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 +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. + +

    +It is now the algorithm which wins essentially all ML competitions!!! diff --git a/doc/pub/DecisionTrees/ipynb/DecisionTrees.ipynb b/doc/pub/DecisionTrees/ipynb/DecisionTrees.ipynb index 3c8225c59..666e15bc7 100644 --- a/doc/pub/DecisionTrees/ipynb/DecisionTrees.ipynb +++ b/doc/pub/DecisionTrees/ipynb/DecisionTrees.ipynb @@ -10,7 +10,7 @@ " \n", "**Morten Hjorth-Jensen**, Department of Physics, University of Oslo and Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University\n", "\n", - "Date: **Nov 5, 2019**\n", + "Date: **Nov 6, 2019**\n", "\n", "Copyright 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license\n", "\n", @@ -101,40 +101,11 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2nd degree coefficients:\n", - "zero power: -0.28499417022929907\n", - "first power: 0.05490242306549711\n", - "second power: -0.0002577121418274489\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "

    " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEWCAYAAABxMXBSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzsnXd4FNXawH9nN73QQkKHxCgdEiGAiKKIILYoVtCrgAXkerkIlovyGSSKehULiuWqWEFUEDAUFZRIUTSAEhEEAQkdEkJLb3u+P2Zms0k2ySbZluT8nmee3Z055Z3ZmfPO+55z3iOklCgUCoVC4SgmTwugUCgUivqFUhwKhUKhqBFKcSgUCoWiRijFoVAoFIoaoRSHQqFQKGqEUhwKhUKhqBFKcSi8GiHE10KIMQ6kyxZCnOcOmRSOIYR4UgjxtqflUDgfoeZxKOqKECINaAUUAyXATuBj4B0ppcWDotUJIUS2zc8goADt/AAmSCkXuLj+w0CYXmc2sAqYJKXMcWW9CkV1KItD4Syul1KGAp2A54H/APM8K1LdkFKGGBtwEO0cjX0VlIYQwscFYlyt198H6A885oI6EEKYXVGuomGiFIfCqUgpz0opk4DbgTFCiJ4AQgh/IcRsIcRBIcQJIcTbQohAI58Q4gYhxDYhxDkhxD4hxAh9/w9CiPv07+cLIdYJIc4KIU4KIT63yS+FEOfr35sKIT4WQmQIIQ4IIf5PCGHSj40VQmzUZTkthNgvhLi6NucqhHhGCPG5EGKhECIL+IcQwiSEeEI/h5NCiM+EEM1t8gwSQvwshDijn+9gB6/rUWA1EGtTVoAQ4mUhxCH9mr4phAiwOf64EOK4EOKIEOJ+/RpF6sfmCyHeEEJ8I4TIAS6tqjwhRIQQYpUu9ykhxHqbep4QQhzV/7tdQojLba7PhzbpRgohduhlrBVCdLE5dlgIMVUIsV3/fxcKIfxr9o8o3IVSHAqXIKVMAQ4Dl+q7ngc6ozV85wPtgAQAIUR/NNfWo0AzYDCQZqfYp9Eaz+ZAe+D1Sqp/HWgKnAdcBtwNjLM5PgDYDbQEXgDmCSFEzc8SgJHAp3p9nwNTgGv1c2iP5mJ6DUAI0QFIAmYALYBpwBIhRFh1leh5RwB7bXa/CEQBvYELgEhgup7+OmASMATtul9hp9g7gJlAKLCpqvLQ/pu/gXCgNfB/ej09gAlAHyllE+BqNOusvPzdgE90mcKB74AkIYSvTbLbgGFo/1tf4K7qrovCQ0gp1aa2Om1ojfyVdvb/jNbwCCAHiLY5NhDYr3//H/BKJWX/ANynf/8YeAdobyedRFNIZqAQ6G5zbALwg/59LLDX5liQnrd1Tc8ReAZYW27fHuAym98dgHy0l7TpwAfl0n8P3FlJnYfRFE+WLuNqoKl+zKSX28km/aXAHptr9bTNsa56GZH67/nA+zbHqyvvWWCJ7X+o7+8CnACGAj52rs+H+veZwKfl6jsOXGJzrqNsjr8MzPX0va02+5uyOBSupB1wCu0NMwjYqrspzgDf6PtBa1z3OVDeY2hKKEV3edxjJ01LwBc4YLPvgC6LwXHji5QyV/8a4kD99jhU7ndHYLnNeW7X90eg9f+MNo7pxy8C2lZR/nVS6zsaCnRHs1RAe+v3B1Jtylqh14Nepq1s5eUsv6+68p5Hu47f6264RwGklLuBh4FEIF13MbW2U1dbbP4TqQ2aOEwl/wuQS+3/E4WLUYpD4RKEEP3QGoWNwEkgD+ghpWymb02l1ukLWgMWXV2ZUsrjUsr7pZRt0ayIN41+DRtOAkVojbRBR+BI3c6ocrHK/T4MDLM5z2ZSygAp5XG08/yg3LFgKeWL1VYi5VpgAZo7CbS3/EKgS7lr2lQ/fgzNVWbQoRrZqyxPSnlOSjlFShkJ3Aj8RwhxmX5svpRyEJqbyww8Z6euo9j8J3qfU3tc978oXIhSHAqnIoRoovvXPwPmSym362+X7wKvCCEi9HTthBBX6dnmAeOEEEP1zuV2Qoiudsq+VQhhNIan0Rq+MsN9pZQlwBfALCFEqBCiEzAVzTXjDt4GnhVCdNRljhBCxOvHPgFGCiGGCSHMemf0ECFEVRaHLa8A1wgheurn+R7wqhAiXGi0F0IM19N+AdwrhOgihAgCnqyq4OrKE0JcL4SI1vuCzqINEbYIIbrp5+CP9nKQR7n/xEaeeCHE5Xq/xqNoLrhfHDx3hRehFIfCWSwX2siiQ2i+/Jcp2yH9H7SO3Z+FEOfQOke7gLUjfRxaw3gWWEdZi8GgH/CL0OZXJAGTpZR/20k3Ca1P5W80i+dT4P26nqCDvIzmhvtevx4/ocmNlDINrTP9SSADrRP5YRx8DnWrZQGlSuBhNPdPCtp1W43WqY2UcjnwFrAerd/lRz1PQRVVVFoe2n+1Fq3P5UdgjpRyA5p76wU0S+842sCF6ZRDSrkDGKPLlIHW0R8vpSxy5NwV3oWaAKhQNAKEEL2AXwF/WY8nZSq8A2VxKBQNFH3ehJ8QogVa5/ZXSmkonIFSHApFw+VBNBfSXrShtg96VhxFQ0G5qhQKhUJRI5TFoVAoFIoa4YqgbB6nZcuWMjIy0tNiKBQKRb1h69atJ6WU4dWnbKCKIzIyki1btnhaDIVCoag3CCEOVJ9KQ7mqFAqFQlEjlOJQKBQKRY1QikOhUCgUNaJB9nEoFArPUFRUxOHDh8nPz/e0KIpKCAgIoH379vj6+lafuBKU4lAoFE7j8OHDhIaGEhkZSe3XxlK4CiklmZmZHD58mKioqFqXo1xVCoXCaeTn5xMWFqaUhpcihCAsLKzOFqFSHAqFwqkopeHdOOP/UYpDoWiAJCUlERsbS1JSkqdFUTRAlOJQKBogCQkJpKamkpCQ4GlRFA0QpTgUigZIYmIiMTExJCYmelqURkNkZCQnT56sVd4PP/yQo0eP1rmsQ4cOMWTIELp3706PHj2YM2dOreSpDjWqSqFogMTHxxMfH199QoVX8OGHH9KzZ0/atnV0FWH7+Pj48NJLL9GnTx+ysrLo27cvw4YNo3v37k6SVENZHAqFwjUI4ZqtGtLS0ujatStjx46lc+fO3HnnnXz33XcMGjSICy64gJSUFFJSUhg4cCAXXnghF198Mbt37wbglVde4Z577gFg+/bt9OzZk9zcXLv1ZGZmMnz4cHr06MF9992H7RIV8+fPp3///sTGxjJhwgRKSkoACAkJYcqUKfTo0YOhQ4eSkZHB4sWL2bJlC3feeSexsbHk5eUB8Prrr9OnTx969erFrl27HLrkbdq0oU+fPgCEhobSrVs3jhw54lDeGiGlbHBb3759pUKhcD87d+4s/QGu2aph//790mw2y99//12WlJTIPn36yHHjxkmLxSKXLVsmb7jhBnn27FlZVFQkpZRyzZo18qabbpJSSllSUiIvvfRSuWTJEtm3b1+5cePGSuuZNGmSnDlzppRSyhUrVkhAZmRkyJ07d8rrrrtOFhYWSimlnDhxovzoo4/0S4KcP3++lFLKmTNnygcffFBKKeVll10mN2/ebC27U6dO8rXXXpNSSvnGG2/Ie++9V0op5dq1a2VMTEyFbeDAgXavQ4cOHeTZs2er/p90gC3SwTZWuaoUCoVr8OAicVFRUfTq1QvA+nYvhKBXr16kpaVx9uxZxowZw549exBCUFRUBIDJZOLDDz+kd+/eTJgwgUGDBlVax/r161myZAkA1157Lc2bNwfg+++/Z+vWrfTr1w+AvLw8IiIirOXffvvtAPzjH//gpptuqrR841jfvn2t9QwZMoRt27ZVe/7Z2dncfPPNvPrqqzRp0qTa9DVFKQ6FQtHg8Pf3t343mUzW3yaTieLiYp588kmGDBnC0qVLSUtL4/LLL7em37NnDyEhIWU6q2uClJIxY8bw3HPPVZu2qjkVhsxms5ni4mIAkpOTmTJlSoW0QUFB/PTTT4AW9uXmm2/mzjvvrFIx1QXVx6FQKBodZ8+epV27doDWMW27/9///jfr168nMzOTxYsXV1rG4MGD+fTTTwH4+uuvOX36NABDhw5l8eLFpKenA3Dq1CkOHNCWurBYLNYyP/30Uy655BJA64/IysqqVm7D4ii/GUpDSsm9995Lt27dmDp1ak0uSY1wi+IQQrwvhEgXQvxhs6+FEGKNEGKP/tm8krxj9DR7hBBj3CGvQqFo2Dz22GM8/vjjXHjhhda3eYApU6bw4IMP0rlzZ+bNm8e0adOsCqA8M2bMYP369fTo0YMlS5bQsWNHALp3784zzzzD8OHD6d27N8OGDePYsWMABAcHk5KSQs+ePVm7dq11ns3YsWN54IEHynSO14Yff/yRTz75hLVr1xIbG0tsbCyrVq2qdXmVIaQb/JBCiMFANvCxlLKnvu8F4JSU8nkhxDSguZTyP+XytQC2AHGABLYCfaWUp6uqLy4uTqoVABUK9/Pnn3/SrVs3T4vhtYSEhJCdne1pMez+T0KIrVLKOEfyu8XikFKuB06V230D8JH+/SPgRjtZrwLWSClP6cpiDTDCZYIqFF5OUlISUVFRREVFkZSUZP0dERFBREQEUVFRTJ8+ndjYWKZPn14mrULhLDzZOd5KSnlM/34caGUnTTvgkM3vw/q+CgghxgPjAavJqFA0BKSUlGRr8wBmTZ/FibQT1u+A9TdAdkY2b730FvkF+RzcdZD8gnwkkoSEBDUhsJZ88MEHFWZgDxo0iDfeeKPGZXmDteEMvGJUlZRSCiHq5DOTUr4DvAOaq8opgikUXsDOUTvJ+CIDgP/y39IDf1SSoaDcJ1DQscBuUkX1jBs3jnHjxnlaDK/Ck4rjhBCijZTymBCiDWCvB+oIcLnN7/bAD26QTaHwGs78cAYAU5AJYapZSGxZIrHkWQg7HOYK0RSNFE8qjiRgDPC8/vmVnTTfAs/ajLgaDjzuHvEUCi9Bt58v2n8RfhF+NcqatS2LrRduRVqUEa5wHu4ajrsQ2AR0EUIcFkLci6Ywhgkh9gBX6r8RQsQJId4DkFKeAp4GNutbor5PoWg0WBv9WjytVgvF4jx5FAq3WBxSytGVHBpqJ+0W4D6b3+8D77tINIXC+9H1Rq1WbtOVjSxRFofCeaiZ4wqFt2NYC8ri8Gq8YT0OI2+vXr2IjY0lLs6haRk1xitGVSkUilJyi3JZ8dcKcou0cN4diztiwsTCPxZiCa2ZBvBJ86E97Tmbd5YPt31Y4fjlkZcT2SzSCVIr6oKz1uMwSE5OpmXLlk4pyx5KcSgUXsarP7/K9LXTrb9XFK4gmGAmrppIboD9tSEqo11mO+Yzn/Rz6Yz7quKQ0tjWsfw24bc6y2wPMbMWrjUHkDOqdrulpaUxYsQILrroIn766Sf69evHuHHjmDFjBunp6SxYsACAyZMnk5+fT2BgIB988AFdunThlVdeYfv27bz//vts376d0aNHk5KSQlBQUIV6MjMzGT16NEeOHGHgwIEV1uN47bXXKCwsZMCAAbz55puYzWZCQkK4//77Wb16Na1bt+azzz5j3bp11vU4AgMD2bRpE6Ctx7F8+XKKiopYtGgRXbt2deJVrBtKcSgUXkZGjjZnI65tHD3Ce+Bn0kZSje49muLA4qqyViD0WCgATfyaMCamNNRbTlEOi3cuttbV0Ni7dy+LFi3i/fffp1+/fnz66ads3LiRpKQknn32WT7++GM2bNiAj48P3333HU888QRffvklkydP5vLLL2fp0qXMmjWL//3vf3aVBsDMmTO55JJLSEhIYOXKlcybNw/Qwnl8/vnn/Pjjj/j6+vLPf/6TBQsWcPfdd5OTk0NcXByvvPIKiYmJzJw5k7lz5zJ37lxmz55dxrXUsmVLfv31V958801mz57Ne++951B0XCEEw4cPRwjBhAkTGD9+vNOvr1IcCoWXIfXe8Dt73clDFz3EetN6LFjYMG0DhaZC6yzmhIQEEhMTq5wRnpeWxy/8QtGpIm4yaSG2J0+eTHFQMdxWWpdLzqMay8CVNOb1ODZu3Ei7du1IT09n2LBhdO3alcGDB1d9wWqIUhwKhZdRIfCo3q2RdjCNQgqtEVVTU1OrDSVidI4XFRWRmJColZOWBqGV1NVAaMzrcRjh4iMiIhg5ciQpKSlOVxxqVJVC4WUYVoBAa1SMxr1jx45ERkaSmJhIYmIiMTExJCYmVl2Y/oT7+/hb80VGRtK+fXuXyV8faKjrceTk5FjLycnJYfXq1fTs2dPh6+IoyuJQKLwU69uobnHs3rMbk1/pu54jQQsNiyOiZQQXx19szXcs6xhtX27rUleVN/PYY48xZswYnnnmGa699lrr/vLrcQwZMoTBgwdbXU22zJgxg9GjR9OjRw8uvvhiu+txWCwWfH19eeONN+jUqZN1PY5nnnmGiIgIPv/8c6B0PQ7bzvHacOLECUaOHAlAcXExd9xxByNGOD+guFvW43A3aj0ORX1m0qpJzN08l9dGvMakAZNY57sOWSwZXDgYk2/NnASFJwr5qfVPmEPNXPD6Bdb9Z/LO8NC3D3Gk2xG2P7vdabKr9TiqpqGsx6EsDoXCyyhvBRghR2oa4BBA+Gt5SrJK2DV2V5lj05jG/pT98GwtBVU0WpTiUCi8DMMLYHVVGXqkFtMifJv5csHcCziXcq7M/tyzuWR9lUWTnCZ1kLRxoNbjqIhSHAqFl2J0jtdFcQC0e7Ad7R4su/7Zkb1HyPoqC2FxzSS9hoRaj6MialSVQuFlWEdVCVFmuGytghxWguH2ElIpDkXNUYpDofAyygxYqUOAw6owmbQCTVI1AYqao+4ahcJLEYg6dYxXWbYTrRdF40MpDoXCy5BImuQ2ocn9Tfgo5CMALE6Ii56UlERsbCxJSUms/WEtgOrjUNQKpTgUCi9DSkmfv/vQLrUdUYVRAKSb0+tcbkJCgjVMycuvvgyoPg5n4g3rcezevZvY2Fjr1qRJE1599dVayVQVSnEoFF6GROJTog14/CPgD55u8zSBHwbWuVzbMCVTp04FVB+Ht1BecdSWLl26WMOQbN26laCgIOtMcmeihuMqFF6I0aAPvXUo//r4X04pMz4+3hqmJDMjk+1sd6ni+EH84JJyL5eXV3lcrceh8f333xMdHU2nTp1qlM8RPPa6IYToIoTYZrOdE0I8VC7N5UKIszZpEjwlr0LhLqSU1gZdmF3jSmroneN79+7l4YcfZteuXezatcu6Hsfs2bN59tln6dq1Kxs2bOC3334jMTGRJ554AtCUyd69e1m6dCnjxo1zaD2OHTt2MHLkSA4ePAiUXY9j27ZtmM1mq7Iy1uPYsWMHl112GTNnzuSWW24hLi6OBQsWsG3bNgIDNevSWI9j4sSJzJ49G9Ci49q6oozt4osvriDfZ599xujRo51+bcGDFoeUcjcQCyCEMANHgKV2km6QUl7nTtkUCk8ikZgs+judi17tTGbXD8etzjJwJY15PQ6AwsJCkpKSHArtXhu8xVU1FNgnpTzgaUEUCm/ALM2ACy2OBj4BsDGvxwFamPc+ffrQqlWrmorvEN7SMzYKWFjJsYFCiFQhxNdCiB6VFSCEGC+E2CKE2JKR0TCXw1Q0DqQstThcpjjMDVtxVEdDXY/DYOHChS5zU4EXKA4hhB8QDyyyc/hXoJOUMgZ4HVhWWTlSyneklHFSyrjw8HDXCKtQuAFJaR8HZtfU0dhnjj/22GM8/vjjXHjhhda3eai4Hse0adOsCqA8M2bMYP369fTo0YMlS5bYXY+jd+/eDBs2jGPHjgFY1+Po2bMna9euta7maKzHERsbS15eXp3OLScnhzVr1lTpBqsrHl+PQwhxA/CglHK4A2nTgDgpZZUDnNV6HIr6zLivxpH1dhb/+uZftPt3Oy6Yc0H1mWpITkEOmwM2YxEWrrBc4bRy1XocVdNQ1uPwhteN0VTiphJCtBa6E1AI0R9N3kw3yqZQeASrq8rJoUYMDN96Y7U4FHXDo53jQohgYBgwwWbfAwBSyreBW4CJQohiIA8YJT1tIikULqbFXy0Ys3oMAPvS9nE+5zu9DsNVBbC81XIO5x2m/Zvtuf4f1zu9rvqOWo+jIh5VHFLKHCCs3L63bb7PBea6Wy6FwpNEbYiyfl+2ZRlXcZVL6jkYdpCOmR0JTQ+lG914///eV4rDDmo9joooO1Wh8DJMxdpjuSZyDVe/cbVL6hAIJkyYwPj7x5MZpXl/R906yiV1KRoeSnEoFF6GEbG276i+1hAhTq9DCPL98tnfYT/dBmidpH379HVJXYqGh1IcCoWXYQ117qKhuFC6LK2U0lqPLFHdhwrHUIpDofAyrIrDhU+nMapKIktHbpW4rj5P8dRTT1njPNlj2bJl7Ny5040SNQyU4lAovA3jxd+VisPG4jBmkTdGi0MpjtqhFIdC4WUYFoerwo1AWYujobmqZs2aRefOnbnkkkvYvXs3AO+++y79+vUjJiaGm2++mdzcXH766SeSkpJ49NFHiY2NZd++fXbTKSqiFIdC4WWIEr1RN7muITcsDrBRUHVfnbZW2C5pW1e2bt3KZ599xrZt21i1ahWbN28GtEizmzdvJjU1lW7dujFv3jwuvvhi4uPjefHFF9m2bRvR0dF20ykqohSHQuFluNPisK3HUxaH7ZK2dWXDhg2MHDmSoKAgmjRpYh2V9scff3DppZfSq1cvFixYwI4dO+zmdzRdY0cpDoXCy3DHqKqyFWofnlIctkvauoqxY8cyd+5ctm/fzowZM8jPz69TusaOUhwKhQuQJZI1g9awMHAhK8JXMN9vPm8FvsXyD5ZXme/4x8eJ3hQNwN8H/naHqCzYqa1O98u0X5gXPo9Ro0bR882e3PjZjRSVFLm8/vj4eLZt2+aUOSuDBw9m2bJl5OXlkZWVxfLl2vXOysqiTZs2FBUVWVfjg4rhzCtLpyiLUhwKhQvI3Z2L70++tMlvQ8jJENoXtadbfje+mvFVlfmOvl26eNDSVHsLYjqPbi21iX+/hfwGQFhuGNEnoxm4aSA7Mnbw1e6v2JFRv1w1ffr04fbbbycmJoarr77augrf008/zYABAxg0aFCZtbtHjRrFiy++yIUXXsi+ffsqTacoi7esAKhQNChkkeb2SfdLZ+/dewlYEECfvD7cPPLmqvMVa/mmj5rOxSMqriPtTLaO38q+0/sA2PjZRpJfSmbiwYmc738+XVt2ZdfJXVikh3rM68D06dOZPn16hf0TJ06ssG/QoEFlhuNOnDjRbjpFWZTiUChcgNFfcF7387jt3dvYZdnF8fePE9s71qF8J0NP0i+un0tlDPQNpGdETwB6/rsno/uP5reBv9G6RWuCfIMA6qXiULge5apSKFyAtaNZ7+A2ZmdLSzUd0Ho7bTG5v8G2juIqKReSRKEoh1IcCoULMBSHtTF2cJKdcVwKWWauhTuwKrcSWXaCYA1Rysa7ccb/oxSHQuEK9LhPhuKwxoOqxpAwLJISUVJmroVbsFFutbU4AgICyMzMVMrDS5FSkpmZSUBAQJ3KUX0cCoULMBSAVXE4OslOVzgesTjMdbc42rdvz+HDh8nIyHC6fArnEBAQQPv27etUhlIcCoWTKbYUs3H/RkII4Xjuceb9Oo+wk2E0oxk/H/iZs7+erTRvh9wO+OHn2T4OC5iE5oyoqeXg6+tLVFRU9QkV9RqPKw4hRBqQhfauVSyljCt3XABzgGuAXGCslPJXd8upUNglJwduugkOHbLuWtk2i8R2EbzES/x56k8eXv4w/0z7J7dyK19s/4JFyxdVWtz8rPm0ox0WYSFg0kNw7El3nAUAoiACeAq5bz9iWyq0BHnHaMgMcpsMdmnXDr78Epo08awcCiseVxw6Q6SUJys5djVwgb4NAN7SPxUKz5OSAqtXl9mVEQimNq0BaJNt4Z5foXuGZkEMOGwitIrXnqYF2pv+A1ssDN18DIpdI7Z9zgEgC4sRuXkAWA4egIPulMEOf/4JmzbBVa5Ze11Rc7xFcVTFDcDHUrOZfxZCNBNCtJFSHvO0YAoFFt2l1K8ffPghAKafv+LFewcC0Dq8C/Oe28G+l7I5tC+X/PQIeg26n/Xr1zN48GBWrlxJXl6etbiSAl8AHp75LQHt3BWsSkMcKoERmeTQmklLP+X6lgfY+q8TXHLt/W6Vowzjx8OPP4LqbPcqvEFxSGC1EEIC/5NSvlPueDvgkM3vw/q+MopDCDEeGA/QsWNH10mrUNgjJAS6dwcgcGGqdXfyyc0M6X49otXfwEH8TnYg9YOdBBXHkbqviFbFQ8oUY0Yb7SK6XgAd6jbypab4RZaQbf6akJIQWp9uQ+vTbZi5aCaTH+3uVjnKEBLiuboVleINiuMSKeURIUQEsEYIsUtKub6mhegK5x2AuLg49XqicA/Gm7DN0FkjbMjvrX8n7m2ty87cRLMe+tGPfsX6jPBK3FBSSMzB7rU2AMxBZiwLLMx6ahZ3n7qbDukdGHndSLfLYRdlcXgVHlccUsoj+me6EGIp0B+wVRxHgA42v9vr+xQK70QfUhvcJ5j4G7SIr23vbwsSSrKrX9g7JDYE3xa+rpSwUuJvjyf+9njmR8+HdOjdq7dH5FB4Nx5VHEKIYMAkpczSvw8HygflTwL+JYT4DK1T/Kzq31B4DfYsDiOsiM30Wt8wXzo93smNgtUNY/VBw3ryGO6eBKlwCE9bHK2ApfpkIx/gUynlN0KIBwCklG8Dq9CG4u5FG447zkOyKhQVsac4SioqjvqGVXFUF1vLXShXlVfhUcUhpfwbiLGz/22b7xJ40J1yKRR1wvBGub+bwmkYExA9bnEovJJ6/E6kUHgBdiwOq+Kox0+X1eLw0HKyVpSryiupx7e2QuEF2HGhNAhXlVCuKkXl1ONbW6HwImzfjI0wU/XYVWVtGaofBKZohCjFoVDUBQdHVdU3rH0cylWlsEM9vrXdS1JSErGxsSQlJZX57o76FN7Pb5uvYInfEr5u9jVhH4UBcOrMqQrp6sv/avRx+E3wY9bEWXW69+vLOStqgJSywW19+/aVziYmJkYCMiYmpsx3V+GOOhROYOVKWYy/TCa5zPY938vrBl1XIXl9+V+fGfmM9Vxu9rm5Tvd+nc75mmukBCmXL695XkWNALZIB9tYZXE4SGK7ZCAXAAAgAElEQVRiIjExMSQmJpb57o76FF6MlJzz0zozCkwFrPznSu679j5uevQmgu8KrpC8vvyvP93yExu6bgDgyiFX1unery/nrHAcIRvgaIW4uDi5ZcsWT4uhaAQcWvohfTdO4ouXl5Ptn831j19vPfbUZU8x4/IZHpSu9lz36XVEvRbFzb/cTPQr0XR4qEP1mVwiyHWwciUsX659V7gMIcRWWW49pMrw9MxxhaJe81feEQp8dMPdDJHNIgEI9Qvl+i7XV57RyzEJExahDw9z/2KEFWmAL7j1GaU4FIo6IJGYLJriaB7cnP2T93tYIucghLAqju1fbGfTmU1ljvs39WfYhGEEhXh4dUCFR1CKQ6GoA1JaMEnd4mhAPYaBPoHWIblBvwQR9EtFBbHs+DLuePEO1wqihuN6JUpxVEP+gXyO/u8olnz79rop0ETbiW0JaO/eRXcU3oGUpRaHMDecRu6JS59g4xcbrb9zW+Ry9MKjAAT8FUD7Q+0pSC9wn0DKVeVVOKQ4hBBRUsr91e1riBx66RBHXq96+Q9ZJIl+IdpNEim8CYnELLVRVQ1JcfRu1ZvQLqEc4AAA7S9qzzUrrwHgo3EfwYea0qyMzJWZnFh4osL+iFsjaHlDS5fIrHAfjlocXwJ9yu1bDPR1rjjeh7HwTvht4TQZ0KTMsbM/nuXkkpMOLc6jaJg0VIsDKBMyxeRX6oeznmcVneb7HtlH7q7cCvvP/XSuZopDuaq8kioVhxCiK9ADaCqEuMnmUBOgUfhmjPARLa5uQZuxbcocMwWZOLnkpPcEglO4HYlESL1xq8+xqexgqwiFr813vTGvyuIwXLvRL0XjG+FL8eli9v57L5a8Wg7RUq4qr6K67rwuwHVAM+B6m60PcL9rRfMS9Ps8ISGB6dOnlwm9MP3/pgNwYP8Bu1mNUAu2+apKl5SUROaqTNa2XstXvl/xbei3fOX7FWtbrCV1eCqWYm8YF1mKvfNrSOElHDkXmWPi7Xe15WNy8nLcJZpbEKZSZfH7zt+t1yIjIwOAU5kVQ6oYGDGuRr4ykoFPDmTe3nkA5OflN6h7pNHiyPRyYKCjU9G9YXNmyJEdd+6QySTLK7lSBgQElAm9cA3XyGSS5bMtnrWb1wi1YJuvqnQxMTHyz3v/rBC+wthy/spx2nk5A3vnV19CajiCI+ey6rEXrf/Pi81edKN0rufkqpPye76XySTL231ut16LCT0myGSS5b+7/7vSvD+2+1EmkyzDCZeAbOXfSiaTLFeYV9TsHomP10KOLFvmxDNT2AMXhBzJFEJ8L4T4A0AI0VsI8X9O1WDeiv6S36FjB6ZOnVom9EJYmBbMru+F9rt6jFALtvmqSpeYmGhdcW1p26Wsn7SehO4JWFp50UQsG+ydX0MKL+HQuVi0t/LjzfbT+cPObpLMPYRdHUb2gmym95hO9GPR1mvRuYt2nu3bta88s36vtmvfjsjISCb8cwIAQQFBDeoeabQ4ol2AdUB/4DebfX84qp0qKbMDkAzsBHYAk+2kuRw4C2zTtwRHynamxfHH7X/IZJLl8YXHKxw7+sFRmUyy3Dlmp9Pq23nXTplMsjz20THrvp87/yyTSZbZf2Y7rR6Fc1g5ZbZMJlm+3+kVT4viNhY8uEAmkyzfueWdStNsbLVRJpMs84/lSymlLDpTJJNJlutD19esMsPiWLq0LiIrHIAaWByOjqoKklKmiLIjHIrrqLOKgYellL8KIUKBrUKINVLKneXSbZBSei5IjT5gytbfa2Dd50RLwN7qca6oR+EkdIvDCEPeGHCkc7zCc6MPHPD4+h4Kp+Co4jgphIgGJIAQ4hbgWF0qllIeM8qQUmYJIf4E2qFZIF5DlYvymMqlcQa6cigztNP46mXPXNZvWZz7+VylxwMvCKTFlS3cKJHzOPXtKfL+zgMguFcwzS5pZjed8d/LRqTVrS+QVZxy+efGuJ9rrDjUcFyvxFHF8SDwDtBVCHEE2A/8w1lCCCEigQuBX+wcHiiESAWOAo9IKXc4q97qyCvKIzMnE4Bdp3bx18G/yhy3nNKenIysDDYe3Fghf20oydJe1Xaf3s2eg3sAKC7RjLsq3/DcjJSS1KGpFJ+u2vC8KO0iAjrVr5HbuXty+X3E79bfwlcwKGMQPk3tPC5649moLA7diqjyhancC5D1Rai2U5686N5XOKg4pJR/A1cKIYIBk5Qyy1kCCCFC0CYYPiSlLP/6+ivQSUqZLYS4BlgGXFBJOeOB8QAdO3Z0imy3Lb6Ni9IuYhCDeCL5CX489mOZ40O2DyGBBL7f9z1Pf/C0U+qc+fdMBjOYJ394kvUZ6wGYd2Ye53EeWXlZhBDilHrqiiyWmtIQ0HZC2wrH0xelU5xZTNGponqnOIoyiwDwjfDFkmuhJLuE4jPFdhWHNBSHaEQWh6l6V5WhVIy0tbY4FF6JoyFHppb7DVqn9VYp5bbaVi6E8EVTGguklEvKH7dVJFLKVUKIN4UQLaWUJ+2kfQfNKiIuLs4pd+ffp/9moBwIQJfwLlp3vg2dj2ujS8IDwxnUYZAzqqRlgDartnNEZ0o6aK9nhmvgVO4p2tCm0rzuoNhSzLd7v+XM6TO0ox0WfwspE1MqpItYF4Ffph8b0zYyPGY4ZlM9mh2n64DA6ECKMorI25uHpbASxaC/QTcqxaHfj0UlRRw8e9BuGkuJdj0OZx3GhKlUyUjYPHJzaVlmQfSD0TQf0ryyypwnuMJpOOqqitO35frv64DfgQeEEIuklC/UtGKh3X3zgD+llC9XkqY1cEJKKYUQ/dE8ppk1rau2SCmtkU9fuOoFwq4NK3M8vUk6O9/eyZBOQ5h0zySn1Ll92XYyf8vkueHP0TJeUyKfJHyiyeMFM9QX7VjEHUvuIDgvmBWsIFfmctfSuyqke+vsW3SlK1O+nsKsLrO4ufvNHpC2dtj6540Z07LQ/rWX1s7xRqQ4dOthT8YeOr3ayW6arwu+JoAAur3VjXy/fAAWhywmLDuMnGVlJ0qu2buG27bdVnWlylXlVTiqONoDfaSU2QBCiBnASmAwsBWoseIABgF3AduFEIbV8gTQEUBK+TZwCzBRCFEM5AGjpBsd/RZpKQ0nYadz3F2jqqTQ9lksnm+cTuRogeu6Ne0GgNnfzJ297qyQrkWw1ilukibSc9LdJ6AzMPzzJoHw0/5jS1El1954kRaNp2G7IOwCTnOaUL9QOjSxvzKgSb+B2zZtS5Gv5vp7dvKzRB2KsqYJPx7O7atvJy8nz/VCK5yKo4ojArCNoVwEtJJS5gkhahVbWUq5kdLxQpWlmQvMrU35zmDEtyMYsHcAAD//8jPXXn1t2QR64/7zqp+Z1noaQ4YMISUlhbvvvhuAjz/+mLvvvpuBAweyadMm3nrrLQAmTpxYYZ+R9468O2hKU1I2p3DNdVo00hKL5g9JSUmh99DetTqXpKQkJk+eDMCcOXOIj4+vVTl+e/345LVPaJrVFAB/H3/m3zS/QvlBJm39BiEF0tuGg1XBH+l/8J/F/+FRHmX9gfUElgTSmc6su2gdOX45pE9KZ9Iszbo8t+UcofO02J8llrqOTq8/hAWHcZrTBPwZwNzoucTHx5OUlMQLj7/AfzL+A5ngZ/EDYM9De6wBEpOSkkhYkWCd+Dd72mwASgrL9phLKfnu0u8o+LmA1k2upC/Lqm4oFG7HUcWxAPhFCPGV/vt64FO9s9yrhs86k/5b+lu/v/jFi1z7VFnFYfLVHojzC87nkROPwGfQl77wlHZ8IhPhKfid3wkmmEd4RDtgb5+RV+eD+R9wzUxNcRSVaG9sX3z+Bfc9fl+tziUhIYG0tDTr99oqjtAtobQ/VTpjOLUklSu4okL5/z70b87jPEzS5FWjwapj7f61HDurjTQvMZWQ2jaVzkc6E1IQQkhBCL8s/QVmaWlPrz5tzfd3k1RPiOsRDEv7VOYp672UkJBA8M5gQgm1pjsYeLBMcMSEhARSU1NJSEgAoDCzEICigqIy5VvyLPj+6IsvvmSf7kExIfjWo3uoMeBQyBEp5dNoI5bO6NsDUspEKWWOlLKin6KBIHT/9ayYWUx9fmqF400va0rhkEL+CPiDPwL+IDMqk10huyiOLaY4ttj6vfmw5hTHFlvT2dtn5M2MyuSX5r9w139L+w18fDX9fuutt9b6XBITE4mMjCQyMrJOoR4M//83Ud8wqcMkoj+Ktlt+x0htZJuQAov0vIvNUaQsjXYbdCqIgY8O5MiHR1jYZSEAbduWjiAz3IpL+i/hr7j17hfWU+i6oGVYS+u9lJiYSHQn7V7YFriNSR0m0WxBs9I5H5QN4ZKYmEjzllqHuL+vf5niy4+8cjwyksJdVGtxCCHMwA4pZVdgi+tF8h6MdRZee+c1uvXvVuG4T4gPw9cOZzjD7ea/kiur/F3Zvgpy+Ghy9Lmw/JIojhMfH19rK8MWQ3F0ie3C80uer7T832b/xlnO1jtXlUQi9JZxYP+BxNwUox34FdgNzUJLJwIaDVxWYBZBQY1n7W3D4rjl5lvoEt8F0P7/AbkD+HP0nwy7fhgPff5QhXzl75Fw33AKrinAx1S2Gao4ZLcejchrJFSryqWUJcBuIYRzJkfUI4w3T6Ph9jTeMKrKqgOquyTGjGEp6pWrCrC7hrjduQu6a94iLFZl0yioJJKBEaBT+Dh2LYzRWcYLmpVykwSVxeF9ONrH0RzYIYRIAaxj6aSUdX+F9WKMG9pk9uyNa8xK9gbFYTSc9mJ32WIcN0lT/bI4bFxVtudovQdsvG7Gm3GJqaQxqY3KFUeRfm/4OnY1TCYjZk+5cizlXVVCDcf1MhxVHE+6VAovxV4D4km8YTiu9aGu7pLYWBz1qo8DadfisMYls3GjGN8bm8VhPA95+/JIX1Q61NqIW2YMGqkOw5K3DnnXUa4q78fRkCPrXC2IN2K1ODzsqrLGQfKGly5DB1TTTpaxOOrR22KlFof+dmx7LlbFYbI0qqZN+GvX5UzyGc4kn6lw3BTo2PNiDUdiKb3OJZYS5vw4h/6Ujmic09/EVFmMb12EVjgVR0OOXAS8DnQD/NBeAXKklE1cKJvHMRRHmUi1nsCYZ+gNFofhqqouFIRtH4dXaDzHqMzisCoR21Ox6ePwaUQWR9i1YbR9oC1FJ4sqHDMFmmj7z4qxy+xhuP9sFUfKkRRe2vgSn/O5dd/rA0wMyNnF5XUTW+FEHHVVzQVGAYvQQo/cDTSs5c7s4DUWh/CePg6rxVHNJamvFgfYd1FaLQ5bV5Wl1OJoPGoDfJv70vmtuj/+9lxV2YXZpYrbSGcxkWup1TxjhYtwVHEgpdwrhDDro6w+EEL8BjzuOtE8j3VUlYc7x41WqaaKQ0rJXxP+Ijs1u9ZVmwJNRL8QTZP+unFpdHFU1+9TX/s4pH2Lw3oP2PwFjbWPw1kYVqut4iiRJRVGWZmlGUs9slobA462iLlCCD9gmxDiBSHElBrkrXdIKVkzYA0heVoI85p0jiclJREVFUVUVBRJSUl2j8fGxjJ9+nRiY2PtpqmAXn3WHVl8Zf6KVQmrKi3XtryCgwUce/cYWSlZtd7OrjvLz4k/W8s8maEFJj55qkKA4rIi643Ccwuf48h3R6pMe+SNIySHJrPIfxHP/PMZx6+LCwjYG8DML2YCcOxY6Vplxj3w98m/mXrRVFYGrOTAWweAxqs4yt/LNbqnKVXG4SfDWX3FapKSknhk/CN88OYHZdJ98OYH7Es95HT53c25zedY23Itq0yrrNt3fb8j6auq24yqOPTyIZJDkvnC/wsSJyW67dlx1OK4C01R/AuYghZgvP6EO60hJdkl+KZoXXF7W+2la9OuDuetLrSHEXZh9+7d5OfnOxT+I61zGtG7ogmwBBBAABve3MA1idfYLde2PGNcfQYZzD9/Pp/M/4S7/nEXe/busebz8/OjsLDQ+vuC87XlTvbs3cOlXMpoRrP5583WSY4H0g7Qn/7s37+/SpmbXtqUzBVaIOPTy09bw7DYI2NJBiJbEE44H7/3MalFqXUKi1IXQn8tDZmx4sAKhjEMgI7NO3KOcwgEg7cPJrggGIB8n3z+avMXD+WHu11WT1P+Xq7JPQ3g09qH402P0/psa8zJZhJOJeCf6Y9fiV+FtPu/z3DFKbiV09+dxpRpIgibyaK/wn+n/7fW4YAyFmUgcgQRRDDvf/Pc9uw4GnLkABAK+EspZ0opp0op97pUMg9i68ceP2F8jVxV1YX2MMIuTJ061Rp+oTp+uPEHrnn8Gj7poIVXH9BvQKXl2pZnnIf0k9z70r00GdCEe1+6l7zIPE6GnyQvMo9rH7m2zO97X7rXmuZciDa8sl/fftYyO3XUwmifF31elTJ3fKwjf170JwDdOlecdV8GG0/WiGEjHL4urkCUaJbDd9HfMfStodb9bZtqHb4tDragCZrbbmrkVFaFj2Xzx38yPqvBd/lVoPy9XJN7GsAUYOKuSVpoHZMwkZiYSNvW2nXe1WoX5746x6E2Wii87t16uOYk3IjxPH7T5BvGhI3htFmLdTZtyrRahwOybauuu/o6tz07VVoc+poZM9AsDZO+qxh4XUrpmSfbHeijZbICs5AmWSM3RHWhPWyPz5o1y6EyBYI8/zzueuAumA6dOlRcA8FevUafSKeoTgyIH1BpOntyxMfHc/S9o/x1/190bF8aNKBFcy1cesuIltXKHdRae7NqHd66ynS2fTcj40fy4IQHqy3bZehKLPrC6LLXSX93iL8mnowvM7BgYfOOzZgXzYexYxvlgkP27mVH72nQlEWxWYsqLKTg+uuvx3LQAlvAv70/8fHxfDBFW6qndUTV91B94GSW5t41XWIiLD6M4ieLIQNW/bCKgdcNxGKyMOvALHZs2MHjlzrWfWyrOG658RYmjXPOukDVUZ2ragrauhn9pJT7AYQQ5wFvCSGmSClfcbWAbmPPHnjsMQBkQSAwHovQNIhpzFiwYz67C9P5OyEESFoG3IhcvQZGTqs+47kWwF2Io4dh5PPVJi+PONAdGAbfrYWR2o0sD0UD5yNSU2FkhUUby+bf1wPoBFt+hZHLK0+44xagnVb+m/+Db36vPK2rOdoJ6ITcuxtGjrTuFoe6ACOQP6zDkt8ZMCFG3waHdJddI1QcdcUkTCC0PiKTNCFLJLJAH3Dgo2lwY2VFLxiJXmd2ndhFe9pzJPcIvx3/jbOms4QTzu3zb7em+Tr2a14Y9UKtFEdli425guoUx13AMNulWqWUfwsh/gGsBhqO4jhzBpYtA0DSHE1xaHerWLVKW0bKQ4gxQAjsP/kXUcDRzEMc/n1Z9RkLI/HhLnLyz/KdI+nL15uVh5lhHD112FrfWb97tYPpJ2Br1WXKDvpb4okM2FR5WslQDMVh+X0H1EJWp9FJD/Z8OhO22coxFBhB7mEzhvkhkmwUZ+v6/0bsbkxCu44lphJMJSYWTF5A/vZ8mtO8tGXSn8H6NqTbHoZlHds2lsnjJ1PUoYiiBUVIKZGnJJZUC+Hnwq3r7ziEjUI99c0pirOKaXNvG3ybu3a6ZHWKw7eS9b0z9PXCGw7nnw9L9IYgU8D9pTO2TR9/AuZgj4nm+/dMyE7l854Wpu2DNdEmnh9Zfb7o42beexv+biG57+6a13tlagnTl8LaKBOz9KEQ930niAPMffrAnJuqLuDNNDgE9L4QZo+qPN20UPhL+yrvvgdu9FykfvHBPjgAstsF8EqpYjBv9oXnIBtt8IA5yIKYrx/394crrvCEuPWaIF/NlWlMEO3wZulqgjK0bGgbWdIALDpdH4QGhtKnTR+4B20DTiefJvWKVMwWc40mzNpaHCeXneTkspO0vLGlxxVHYS2P1Tv+5jSJ+jpVwTKYW7mVYt1VJa67HgKaeky2qXsDET+/QrcjWidz2+C2DI0aWk0uaGVqBUCwf7BD6cvT/Xh3ANoEtbHmj2waqR2LuQJGxlRdwKKPtM+wiDJun/LI57cCWQCk/xFBjtCUdPMhzWk9xs1v8l99rH2Gh5WRucU1Fs5rfpjCE9pt33xoc7g6zF4JCgeJCI7g4xs/xvScydqoHht0jLxOeVz2n8uAUleVV0x+rSv6Odob3m9EFDZbzFVaV6fyTvH0uqc5na91rI88O5KmNGX/xfvJCdfiz17gc0HZkVsuoDrFESOEOGdnvwACXCCPx8jMzeSjVK2ha326NbdyKxZhIdg3mAAfz57qiPNHMOL8EZwQJ/jz3T8ZGjmUSXdX3wmWtTWLrQlbOT/8fL67+7sa15vun87Ot3dyecfLefBurcN63459HFp5iGaBzarJTWlsuur80zbHs3/NJvtXbcJi+qfptPpHK/eGfNFlkeayD6/J30THRxvdygIu566Yu9jgt4GSAq1VvWrGVbQY1qI0gclQHJ6QzrlYlZ+dwGaG4vAp8alywuzinYt59ZdXrb+vzLuSpjQloU8Ch1seBmBEkxHOE7oSqlQcUkqXxm4TQowA5qBdyveklM+XO+4PfAz0BTKB26WUaa6QJap5FB/coE088jnoA3MgLDSMjfdsxN/Hv5rcbsJOhNaqMG7UWkf3NdupT7+nHSrTuHuqcdkacnac1pHALoEA7L53N7JIIi3SrYrDGI7bcKe3eh+2/2/5kOyl4XYajquqKsVRnasqr0jrbB0aNZR/9P4Hrd7VvArPDX+O4g7aCLWI4AjnyVwJDocccTb6yoJvAMOAw8BmIUSSlNJ2DfN7gdNSyvOFEKOA/wK3Vyyt7rQMasnY2LEA5AblkkIKTQKbENs61hXV1QprY+3g25e1wa9lI2ivPqsZ7chzbNTroMURfls4oRdqE/D+Gv+XplDc/abpYCwuhROxaUhNfuUufANyVVlf5Oy8CBkK02wxV2lxGEqlR3gPxsaOZZPPJgoo4OZeNxMYGegCqe3jycejP7BXSvm3lLIQ+Ay4oVyaGwDdUc5iYKioNixr7Ti35RzrA9eT7J/Mj11+BCA7r/YxnlyC/oB9vfJra3gC2xAn5UM+bFy3EYDTZ047VHz5sCXGDZ6+LJ1k/2SS/ZM58JIWZsMRxWG4e86bfx4v3/gyveJ68cj0R8p8frb0M06f1uR7+Y3SNIXFWl+COxuM4/OP0+EzrYM245T9mcr2Qrso6oZtQ/r2u2+Xvb66xREx/yLm/t9cT4hXK2zvk78e/Itk/2TaL2sPwIn0ExXSrdugrVxx/onzmbJkSqXl+u/2Z9HsRVxz3TWsNq2m4IAW/PHFl150633pScXRDm3MjcFhjDGZdtJIKYuBs4DdHkkhxHghxBYhxJaMjFqEJ5BgybcgCgW+euT/n/J+qnk5LsS6gE5uHmlpaSQkJFhDnKSlpfHyyy9bw44AvPfuewAcOHzAofJtw5YAhMSGkGPOwYQJUSgQhQIzZgpMBTS5qPqI+tk9ShXvyf0n+eP6P3jJ76Uyn6N/H82hPO02+MjvI+sxi9n9b5qnVp6yfv/2zLd205S/Roq60/zK5gCkk84LC18oc32bh5fGC9u1bJdH5KsNtvdJxpcZ1mcn1y+XVemrKqSb+e5Mss3a83LJzksqLTd4WzAts1vib/HHT2pzy9JI44V3X3DrfdlgDHIp5TtSyjgpZVx4eM3jBoX2DeXS3Es598U5xnccz/0d7yfm/WpGDbkZ483sQtOFvOP/DrMLZjO7YDbv+L/DO/7vsLDlQuYFzWN2wWx+HfQr/yr6FwCdIivONLdH+bAlAZ0CKFlUwqO9HuXcF+c498U5Hu31KAWLCmh2SfWd43G3xDHn1jkA+Jf4Yyoy4Sf9ynwGmAIw611pPvhYjxlzaIqLi2t2keqA4dqbddMsWt9mfzSXvdAuirrRfUF3zn1xjud6P8cDDz9Q5vre3PoM+ztpI92iOkR5UswaUeY+0fs27r32XuL/E88Foy6okO7JZ56k6GNtfROzpfKuZeMeXRW9ivEdx/P9o98zp/ccJj882a33pfDUxBohxEDgKSnlVfrvxwGklM/ZpPlWT7NJCOEDHAfCZTVCx8XFyS1btrhOeA+R/Xs2W2Jqfl6t7m5Ft4+qiRflIjKWZrDjph2E3RBGr2W97KZJ6ZZC7q5c+u3sR3A3bSjuKv9VBBUGMeD0AAKbucd3+8fNf3ByyUlm3DqDIf8cwlOXP+WWehVVMHo0H20y0+nAfewftZ9xC8d5WqIas7HFRopPF7Py85XM/nM2Lw9/mSkDK7qjinKK+DHkRwp8Criq6Cq7ZX304Ed0erMT+2/az7gvnXsthBBbpZRxjqT1WOc4sBm4QAgRBRxBWyjqjnJpkoAxwCbgFmBtdUqjIRPSO4QBewdQeLwGU2jMENontPp0LsLkrxm1hccKOf29/b6Wkmx9vozNSC1jNE1JSQ1m0dYR26VgG2OYdK9ECBDGUoueFaUCFgts3w6FVT+PslCzmi0njwNgPnwENm+ukM5UoJ2gyWKyexyAU2e1z7zsytP06gUBrp1C4DHFIaUsFkL8C/gWrdv3fSnlDiFEIrBFSpkEzAM+EULsBU6hKZdGTWB0IIHR7hs9UVeM9aezUrJIvTK1yrS2QzE9suqhzVKwCm/CS0dWzZwJ5VxDfzZtx+Zmg5GYsJjzyYhYTd+8zzETyOZfvoTzwDT7JUh5qUJxAhPwvRa3q39/u68uMvIOoDfs3A79/21frj17tEgYLsSTFgdSylXAqnL7Emy+5wO3ulsuhfNoenFTWo1pRcGhqpf+DO4ZTEBU6VuSMezQUuK+Rty6FKywVL+musJtCGNeg/uMT8fYq68sERUFYdqYnU0nRnPegT7WJD90DCbGZMJsgZT22r0c2jYS4ipGlxZSwFZtxUMZ19eu1SsK9L7FkCCIq8Sr5O/6eWceVRyKho/J30S3D2vev2JYHG5VHMpV5X0IgTB8VN6mOAyv+dNPw51afDWfaK0j/0z7MzQ73IwrWlxhHaX5yCWP0KxpM255fCL4VYBCu5sAABiqSURBVIx9JwDEDwCUbNqEyadivCk57kPYDvSJgY9frXDcXSjFofBKrIrDnbEmbFxVyuLwJvQ+MG+bPW6vu1XfFXZRGCWLSxjYaiBHLUcBSLwyEZNv1QNZS0wl2iTAYov91tlQnh4eD9tghuMqGhbK4lAYGBaHo6F23IY1ioJNyBRduQl/7dNSYCkN0+NA6JwSfSBApedqPA4uDQZVPUpxKLwSq+Jw4wo+xsNqPLwKL0AIrK2lt41ZsKM4DItDBNgoDh1H4rtZ9KCOJcWV3INKcSjqSmXhL2zDkDgjBEFdw2yUz2/8Lh8ixRZDcQwbNqxMeJXy+WorW/l8eybv4ex6baijxaRcVd6ESW8tz/v2PNaKtawestrDEpXD1uKQ2vcV364AIH1BOlC6tk91GCP6von4huXvLmdty7WsFdqWbEomcmEkABmZtYiO4UyklA1u69u3r2wMxMTESEDGxMTY3W/vmDPrqW1+43dAQECl5S5uslgmkyxbBrS0prGXr7aylc+3KXKTTCZZJpMsQx8Llc+uf7ZW56pwMnfeKef1iJRfBXxl/X9WmVZ5WiqNW2+VEqT87DPrrvnt5stkkuXgpoPlMpZZZZ4bOtehIhN7JlrzPNTmIet3222F3wp52ZDLnH46aNMgHGpjlcVRj6ks/EViYiKRkZFERkY6JQRBXcNslM9v/J46dWql5RoWR7t27aznYS9fbWUrn88Yivtg/INkBWUpi8OLKA5I48bHbmTUzdo0rgA/L1kKyE7nuGFxmKJNpDyewj2d7uGeTvfQYX6HCmnt8d/R/+Vg2EEArrpSmz2+LXAb93S6hzXT1jDyppFcP+16Oo7y7NowHgs54koaasiRxsTi5otpeaYl0Tui6dDdsYeuLvzU/icKjxSSPD+ZxL2JPDf0OaZdMs3l9Sqq4a67eG/nfO6Ph6vaXsW08dOQAZKwtDB6t+rtWdluuQW+/BI+/xxuuw2AhW0W0uZ4G5qva07M4JrHugt9LpQ5r87hvPTzSLo6ifiv4/mt92+8dd9bAGTkZnAm/wz/vfK/PDboMaeeTn0JOaJQVIphcRQeLSS/SX616f1a+2HyqYMBbfS/6p2TalSV9+Cvx7lce2At05hGUVERfd/py9GpRwkPrnlAU6djxzqt7eJpvSJ6Wfs5zmVri6+eKzrHnlN7yqTrHt69VuU7C6U4FF6JoTgODTvEoTLR9+3T5KIm9NnUp9p0ldanu6qMTkzlqvIervsLJoQO4VRrbba1WZopthSTmZfpWcVRxXBck7l2LzHrxq4j5bUUik4UMaH3BHI25HBV56sY/a/R1jShfqG0CW1Te7mdgFIcCq9kff/1DP5pMG1C2mAWVYw9lJpVkrUlq24V6qMfDYWlLA4vQQia58PbLcciR93FujvXWfsRPO5mt6c4jD4OU+0Uh6/ZlwD/AIooopm5GTnk0CSoCZ3DOtdZXGeiFIfCK0kansQbF71B2uQ0OjWrfD0RaZGsM69DFtetEbGNU6XwQqS0rjppkiaQVLk2t9tkKodVcdTS4tAy68UX1m3pZ1eiFIfCKzEJ7WnZdnwb6TnpDuVJOZRSa99ycYnmSD+ep4W+Vq4q70MIoTWiFi30uFvD0VSFPYujDorDmGFuKbSU+e1NKMWh8Ep8TNqteePnN1abdo1pDT4WHwa9M4hin9qtGLgibwXBBLPoz0UQQNXuMYX7KKfAhVkgLVKLIOuNrioj5EgdGnsjr2FxKMWhUDjIIxc/wvu/ve+QO0KaJVggrnUcxX61Uxw+QnsUYtvGEtA0gPgu8bUqR+EiZGkjKoskJoupyntDSu2ecEWja5SNRWJBIEssUKTdd4bFYTbV/sXDanEUKItDoagRD8Q9wANxDwBaeJDJkycDMGfOHOLj48vs8zH7QBGceeEMmXmZBAcHW9MZ+RMSErj22mtZuXJlmc9PP/2UnJwc0BdxW3fvOsxBytrwWvS/5pPXP+GHLj/Q++6KczmKzxazvvN6TOkmCq8sZPia4U6rXpZI1nZbi3mPGZhCsWkSPrf6ABsBCENbl2P9xvWc1/O82lWin2PGIi2syIFDB+hClzpK7ly8sNtFoShLQkICaWlppKWlkZCQUGFffqE2z+PwwcNkZGSUSWekTU1N5eWXX67wmZaWRkZGhvVNUT0RXkY5V1XLG7QhueFZ4Sx+fbHdLLm7cjGla39k7g+5ThWn6FSRrjQ0fCzau3eJKLFuu1ruYs7bc2pdR9g1YRSLYkooIY88FuxaUGe5nY2yOBReT2JiotW6sA1bYuzzz/SHLHgq6CnyS/LxMfvQJ7TP/7d3/9FRlXcex9/fJDSUCAISESSaKNItVhMxh7riWu2BqqwN1d11lW2Vdj1uz9Eeuu6eri5dpDnHPae1aNtVW6lyxK1H665apmCtaH9ti4pRwy9F1AKrkR9Blh+hAsnku3/cO8MkmQkZJsnNzHxe58zJzL3P3HmeXJhv7vM89/uw8dqNANw18i7Wj17PxAkT+WD7B11+btu2jY54B2WHg/8Kxzu4LoNj6qNTaX6+mYm7JnLdNdelLZOaknzUCaP69fPTpTt/6qzv8vjeNVRUVDB37lxWrlyZU6qfqlureH3y612usoeaSFKOmNldwOcJOgjeBb7s7nvTlNsKHCCYZd/R19vhlXKkuLxy7iscXH8w5+OUnVTGjF0zFDyGknnzYNkyWLoUvvxlAB479TEmfDCBEatGMH3m9B5v2fs/e2m+uBmAYeOGMaN1Rr9V53DLYV6c9GKXbW03r+XKe+f322dEJR9SjqwCbnf3DjP7NnA78C8Zyl7q7rsHr2qSb85ZeQ77/rAv5+OMnDZSQSMPJNLCJO696S71qqC/F39Kd7zSXO7ZyFORBA53T02o/xLw11HUQwrD8KrhDL92iGRMlf6V5n6aRFqYjDd9pqyBNBiBo2QIznoaaEMhVH4F+EWGfQ48Z2avmtlNvR3EzG4ysyYza2ptjXiRExHpXyld6skrjgxBYbCvOMqOM71IPhuwFpvZ82a2Ic1jTkqZBUAHkGnawEXuPg24ArjZzC7O9HnuvsTd6929vrJyCGTMFJGBEf6Bn66ramfbThb/fnHy9eH2w3zrN9/ql4/9qP0j7njhjh7bi7GrasBa7O4z3f1TaR7LAcxsHnAl8HeeYYTe3VvCn7uAp4GeI2EiUrjSdFUlrzjSdFU99eZT/OrdXyVfe9xZ9NtF7GjbkXNVfrftdzyx/oke208q79+ZW/kgklBpZpcD3wAa3D3tRGszqzCzkYnnwOeADYNXSxEZMlL+tkyOcaS54jgcP0xJ59GvtVIP7rloj7fnXIXux0449ePjcj52vonqGuteYCSwysyazexHAGY20cyeCcuMB35vZmuBNcBKd382muqKyFCRDBxHegaOeGecYfFhydelnaVYp/VLJt1O7+xy7IRiTGsWSeBw98nuXuXudeHjq+H2D9x9dvj8j+5eGz7Odvc7o6ir5J9YLEZNTQ01NTUsWLCAurq65M9YLBZ19SQbvcyqin8xzor/WJHcHovF+Nk3f8ai/1rUpfzS+5cmM83mpAWWLFnSY/Mbb27M/dh5pvhGdaTgpaYj6Z5mJDUVieSRlK6qTXWbks9jdx39Q2DhwoWM3zq+x1urd1fTsfP4kl+mKtnU/evyMB/nf/nprx/K+dj5RoFDCk5jYyPV1dVUV1dz6623Ultbm/yZSyoIGRpenvUyv6gLZvBf9YWrktsbGxsZO3IsALE/i7HqX1exc9ROIPPNgtno7AiuWl4+7WX2L9/P2ed+g09zA9d95Zqcj51vlKtKCk5DQ0MyMy7AnXfe2eWn5JE0XVVmllypsfac2uT2hoYGPox9COvg3PPPZd6d83jigWAWVK4rRMLRezgqT6kM/n2FOaT+/MILcz52vtEVh4jkFcMy3wSYmDwV/kmcWEO+P24ETB6j+2B4Ea4WqSsOERn6UsY4Sqzk6NrwYXqRfav3sfvp3YxZMybYEE5+6u2ej6yrkAgciT+3o16BMEIKHCKSV8yMeEkQMRJf5pu/upmD6w8ymtEAxE8M9h8rIWI2Ep/lpeGx0iwdWyzUVSUiQ1e6MQ6OjnE8sOYBrnj0CrZ/sB2An8/6OYuvXMyey/cA/dxV1ZnhikOBQ0RkCErpFpo0alIyIGzetZln33mWjkPBdNuHz32YFfUrmHjyxOBtJQMwxtE9ThRh4FBXlYjklfv/8n5eXPkivAQ31t7IvLnzGP69IK3+T675CSdOOJELJl0AkLwy6YznfgOguqqOUuAQkaErzZfyiGEjqD6pmvd4j8kjJlM1vorV7avppJNZn5xF2cijX2uJMQ4OHd/HuzvxA3FKRpTQ3hZO2dLguAKHiOSB1auhvDz50jaOBk5kW+M2tjVuS25fd/s3eDr231x99dWcd955uAdf9h9+/kOarl9A/WenZPWx6++uZM+6EQBMYhIAh1p3BMvZ7ggz7uqKQ0RkCEkEi2XLgkdoLLXs4JvE+Xhy2xhe5ez77mEaJG/Oe23G33DGe0GwOO2RP8Aj/57Vx+/lmR7bztj5DMxLWXd8ePGtPqnAISJD19e+BkeOwKGufU2jgar37mfNmjV0dHRQVlZG9fTpvM+lNDc3U1dXR1VVFS9MWs64/5vKJW9cwodTP8XJ9adn9/mPDuuyFO2rkx/mmqrhMPP6YMPpp8P55+fWxjykwCEiQ9eUKfDAA2l3VYWPdNsT7L6pyXs+xi74N5jbMwlib/yx30LKjKzxs2ZSdf8XszpGIdJ0XBEpWKl5rY5nSm7391hp8Y1npKPAISIFq9e8Vsfg7tBtFq8CR0CBQ0QKVuoVR+pYRZ+kufWjpExfmaDAISIFzOiZ16qv0uW3KinVVyYocIhIgcs2X1XL/hYuXXYp5/+w52wpBY5AJL8FM1tkZi1m1hw+Zmcod7mZvWVm75jZbYNdTxHJb8czOP7cu8/xm62/YdPOTT32jR+V3aysQhXldNx73P27mXaaWSlwHzALeB94xcxi7v7GYFVQRPJbaldVfH+c9j3tDBs7rNf3dHR2UH6knGtO6bkk7OTKyQNSz3wzlO/jmA684+5/BDCzx4E5gAKHiPRJ6hXHlgVb2LJgC4e/cJjLnr4sbflYLMYjdz/C8j8sp7yjvMf+5nXNTGDCgNY5H0TZYXeLma0zs6VmNibN/lOB91Jevx9uS8vMbjKzJjNram1t7e+6ikgeMowXp7zInvI9tNEGQMtzLRnLL1y4kFHbRlHeUc6RkiPsYx/t1s6BsgNsYxvffS5jJ0lRGbDAYWbPm9mGNI85wA+BM4E6YDuwONfPc/cl7l7v7vWVlZW5Hk5ECoCZ8dqZr7Hl4S384JQfAHDaaadlLN/Y2MhJo08C4IWaF/h69df56Gcf4U8699Tew/xvzx+Ueg91A9ZV5e4z+1LOzH4MrEizq4Wu2QMmhdtERPrEwlWXPnPxZ7jxyRt5fcbrjB09NmP5hoYGDvz2ADTDlE9OYcvPt3TZJ4GoZlWldhJeBWxIU+wV4CwzqzGzjwHXArHBqJ+IFAYLU567e3LlPj/GOhreEe4vHcia5beoBse/Y2Z1gANbgX8AMLOJwIPuPtvdO8zsFuCXBKdwqbtvjKi+IpLHHMdKwshxjMUAE4HDy4p3oaZjiSRwuPuXMmz/AJid8voZSJMQX0SkDxJdVe6esnLfMd6USE0ylOecRky/GhEpWMmuKlK6qtKkEtlyxxb2/movACe/fXKwUd+OGelXIyIFK/WKI9lV1S1uxA/Fuyw/W05w/8ahU45zofIioMAhIgUrccWx+0+72f2n3QC0d7Sz/cD2ZJnOtmDQw8qNScsn8cTGJ3ho80Ncd8V1g1/hPKHAISIFq8SCgY2Gxxs4c8eZPMiDvLHzDS68+8JkmYpDFaxgBQf9IJNfClOKTICSEiU0zESBQ0QK1txPzWXr3q10eidjK4L7N0q8hDFlYygfHnRJVZRUANBpnYwpC5JYHNx7kBN2nBBNpfOAHWtOcz6qr6/3pqamqKshIkNI24Y2ms5pYitb+V7t92hubgbgyO4jrK5czX72s7B2IQBr166ltrY2WaYYmNmr7l7fl7K64hCRopAYHB9ePpzGxsajO8L7OkpKS5LbFy5c2LWMdKHAISLFIZxUVVNdw6cbPp3cnFinY8y4McxomAEovcixaPRHRIpCpum4iSuO5H45JgUOESkOiW+7bilHElccVqrA0VcKHCJSHDIkOUzeSa5vwz7Tr0pEikLGJIdhbipdcfSdBsdFpDiEcSHeFqf1qaOrhB7ZfiR4oj+j+0yBQ0SKQkl5EBnaW9vZ+Fc9V2hI7JdjU+AQkaJQPrGc6m9V09bc1nOnwSnXnzLodcpXChwiUjSqF1YDEIvFmD9/PgcPHgSgoqKC79/wfRrQ/Rt9oZQjIlJ06urqWLt2bZdtxZZipLtsUo6oU09Eik5jYyPV1dVUVlZSWVlJdXW1UoxkIZIrDjP7KfCJ8OVoYK+716UptxU4QDBhrqOv0VBXHCIi2RnySQ7d/W8Tz81sMbCvl+KXuvvuga+ViIj0RaSD4xYsz3UN8Nko6yEiIn0X9RjHXwA73f3tDPsdeM7MXjWzm3o7kJndZGZNZtbU2traW1EREcnBgF1xmNnzQLqJ0QvcfXn4/DrgsV4Oc5G7t5jZycAqM9vk7r9LV9DdlwBLIBjjyKHqIiLSiwELHO4+s7f9ZlYGXA2c38sxWsKfu8zsaWA6kDZwiIjI4Iiyq2omsMnd30+308wqzGxk4jnwOWDDINZPRETSiDJwXEu3biozm2hmz4QvxwO/N7O1wBpgpbs/O8h1FBGRbgryznEzawW2HefbxwHFNv1XbS58xdZeUJuzdbq7V/alYEEGjlyYWVNfb4IpFGpz4Su29oLaPJCino4rIiJ5RoFDRESyosDR05KoKxABtbnwFVt7QW0eMBrjEBGRrOiKQ0REsqLAISIiWVHgCJnZ5Wb2lpm9Y2a3RV2fgWJmW81svZk1m1lTuG2sma0ys7fDn2OirmcuzGypme0ysw0p29K20QI/CM/7OjObFl3Nj1+GNi8ys5bwXDeb2eyUfbeHbX7LzC6Lpta5MbMqM/u1mb1hZhvNbH64vSDPdS/tHfzz7O5F/wBKgXeBM4CPAWuBqVHXa4DauhUY123bd4Dbwue3Ad+Oup45tvFiYBqw4VhtBGYDvwAMuAB4Oer692ObFwH/nKbs1PDfeDlQE/7bL426DcfR5gnAtPD5SGBz2LaCPNe9tHfQz7OuOALTgXfc/Y/ufgR4HJgTcZ0G0xxgWfh8GfCFCOuSMw8yKO/ptjlTG+cAj3jgJWC0mU0YnJr2nwxtzmQO8Li7H3b3LcA7BP8H8oq7b3f318LnB4A3gVMp0HPdS3szGbDzrMAROBV4L+X1+/R+QvJZujVOxrv79vD5DoI8YYUmUxsL/dzfEnbLLE3pgiy4NptZNXAe8DJFcK67tRcG+TwrcBSfi9x9GnAFcLOZXZy604Nr3IKeo10MbQz9EDgTqAO2A4ujrc7AMLMTgCeBr7v7/tR9hXiu07R30M+zAkegBahKeT0p3FZwPGWNEyCxxsnOxCV7+HNXdDUcMJnaWLDn3t13unvc3TuBH3O0m6Jg2mxmwwi+RB9196fCzQV7rtO1N4rzrMAReAU4y8xqzOxjBCnfYxHXqd/1ssZJDLghLHYDsDz9EfJapjbGgOvDGTcXAPtSujnyWrf++6s4up5NDLjWzMrNrAY4i2DpgrxiZgY8BLzp7nen7CrIc52pvZGc56hnCgyVB8GMi80EMw8WRF2fAWrjGQSzLNYCGxPtBE4CXgDeBp4HxkZd1xzb+RjBJXs7Qb/u32dqI8EMm/vC874eqI+6/v3Y5v8M27Qu/BKZkFJ+Qdjmt4Aroq7/cbb5IoJuqHVAc/iYXajnupf2Dvp5VsoRERHJirqqREQkKwocIiKSFQUOERHJigKHiIhkRYFDRESyosAhkiMzi4dZSTea2Voz+ycz6/X/lplVm9ncwaqjSH9S4BDJ3UfuXufuZwOzCNK53HGM91QDChySl3Qfh0iOzKzN3U9IeX0GQTaCccDpBDdoVYS7b3H31Wb2EvBJYAtBBten05UbpCaIZEWBQyRH3QNHuG0v8AngANDp7ofM7CzgMXevN7NLCNZQuDIsPyJducFtiUjflEVdAZECNwy418zqgDgwJcdyIpFT4BDpZ2FXVZwgK+sdwE6glmBM8VCGt/1jH8uJRE6D4yL9yMwqgR8B93rQD3wisN2DlNdfIlimGIIurJEpb81UTmTI0RiHSI7MLE6QnXQY0EEwyH23u3eG4xVPEmQ1fRa42d1PCNdV+CVBJteHgRXpyg12W0T6QoFDRESyoq4qERHJigKHiIhkRYFDRESyosAhIiJZUeAQEZGsKHCIiEhWFDhERCQr/w8n1ZCPZ2JaPwAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "%matplotlib inline\n", "\n", @@ -545,469 +516,11 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " mean radius mean texture mean perimeter mean area mean smoothness \\\n", - "0 17.990 10.38 122.80 1001.0 0.11840 \n", - "1 20.570 17.77 132.90 1326.0 0.08474 \n", - "2 19.690 21.25 130.00 1203.0 0.10960 \n", - "3 11.420 20.38 77.58 386.1 0.14250 \n", - "4 20.290 14.34 135.10 1297.0 0.10030 \n", - "5 12.450 15.70 82.57 477.1 0.12780 \n", - "6 18.250 19.98 119.60 1040.0 0.09463 \n", - "7 13.710 20.83 90.20 577.9 0.11890 \n", - "8 13.000 21.82 87.50 519.8 0.12730 \n", - "9 12.460 24.04 83.97 475.9 0.11860 \n", - "10 16.020 23.24 102.70 797.8 0.08206 \n", - "11 15.780 17.89 103.60 781.0 0.09710 \n", - "12 19.170 24.80 132.40 1123.0 0.09740 \n", - "13 15.850 23.95 103.70 782.7 0.08401 \n", - "14 13.730 22.61 93.60 578.3 0.11310 \n", - "15 14.540 27.54 96.73 658.8 0.11390 \n", - "16 14.680 20.13 94.74 684.5 0.09867 \n", - "17 16.130 20.68 108.10 798.8 0.11700 \n", - "18 19.810 22.15 130.00 1260.0 0.09831 \n", - "19 13.540 14.36 87.46 566.3 0.09779 \n", - "20 13.080 15.71 85.63 520.0 0.10750 \n", - "21 9.504 12.44 60.34 273.9 0.10240 \n", - "22 15.340 14.26 102.50 704.4 0.10730 \n", - "23 21.160 23.04 137.20 1404.0 0.09428 \n", - "24 16.650 21.38 110.00 904.6 0.11210 \n", - "25 17.140 16.40 116.00 912.7 0.11860 \n", - "26 14.580 21.53 97.41 644.8 0.10540 \n", - "27 18.610 20.25 122.10 1094.0 0.09440 \n", - "28 15.300 25.27 102.40 732.4 0.10820 \n", - "29 17.570 15.05 115.00 955.1 0.09847 \n", - ".. ... ... ... ... ... \n", - "539 7.691 25.44 48.34 170.4 0.08668 \n", - "540 11.540 14.44 74.65 402.9 0.09984 \n", - "541 14.470 24.99 95.81 656.4 0.08837 \n", - "542 14.740 25.42 94.70 668.6 0.08275 \n", - "543 13.210 28.06 84.88 538.4 0.08671 \n", - "544 13.870 20.70 89.77 584.8 0.09578 \n", - "545 13.620 23.23 87.19 573.2 0.09246 \n", - "546 10.320 16.35 65.31 324.9 0.09434 \n", - "547 10.260 16.58 65.85 320.8 0.08877 \n", - "548 9.683 19.34 61.05 285.7 0.08491 \n", - "549 10.820 24.21 68.89 361.6 0.08192 \n", - "550 10.860 21.48 68.51 360.5 0.07431 \n", - "551 11.130 22.44 71.49 378.4 0.09566 \n", - "552 12.770 29.43 81.35 507.9 0.08276 \n", - "553 9.333 21.94 59.01 264.0 0.09240 \n", - "554 12.880 28.92 82.50 514.3 0.08123 \n", - "555 10.290 27.61 65.67 321.4 0.09030 \n", - "556 10.160 19.59 64.73 311.7 0.10030 \n", - "557 9.423 27.88 59.26 271.3 0.08123 \n", - "558 14.590 22.68 96.39 657.1 0.08473 \n", - "559 11.510 23.93 74.52 403.5 0.09261 \n", - "560 14.050 27.15 91.38 600.4 0.09929 \n", - "561 11.200 29.37 70.67 386.0 0.07449 \n", - "562 15.220 30.62 103.40 716.9 0.10480 \n", - "563 20.920 25.09 143.00 1347.0 0.10990 \n", - "564 21.560 22.39 142.00 1479.0 0.11100 \n", - "565 20.130 28.25 131.20 1261.0 0.09780 \n", - "566 16.600 28.08 108.30 858.1 0.08455 \n", - "567 20.600 29.33 140.10 1265.0 0.11780 \n", - "568 7.760 24.54 47.92 181.0 0.05263 \n", - "\n", - " mean compactness mean concavity mean concave points mean symmetry \\\n", - "0 0.27760 0.300100 0.147100 0.2419 \n", - "1 0.07864 0.086900 0.070170 0.1812 \n", - "2 0.15990 0.197400 0.127900 0.2069 \n", - "3 0.28390 0.241400 0.105200 0.2597 \n", - "4 0.13280 0.198000 0.104300 0.1809 \n", - "5 0.17000 0.157800 0.080890 0.2087 \n", - "6 0.10900 0.112700 0.074000 0.1794 \n", - "7 0.16450 0.093660 0.059850 0.2196 \n", - "8 0.19320 0.185900 0.093530 0.2350 \n", - "9 0.23960 0.227300 0.085430 0.2030 \n", - "10 0.06669 0.032990 0.033230 0.1528 \n", - "11 0.12920 0.099540 0.066060 0.1842 \n", - "12 0.24580 0.206500 0.111800 0.2397 \n", - "13 0.10020 0.099380 0.053640 0.1847 \n", - "14 0.22930 0.212800 0.080250 0.2069 \n", - "15 0.15950 0.163900 0.073640 0.2303 \n", - "16 0.07200 0.073950 0.052590 0.1586 \n", - "17 0.20220 0.172200 0.102800 0.2164 \n", - "18 0.10270 0.147900 0.094980 0.1582 \n", - "19 0.08129 0.066640 0.047810 0.1885 \n", - "20 0.12700 0.045680 0.031100 0.1967 \n", - "21 0.06492 0.029560 0.020760 0.1815 \n", - "22 0.21350 0.207700 0.097560 0.2521 \n", - "23 0.10220 0.109700 0.086320 0.1769 \n", - "24 0.14570 0.152500 0.091700 0.1995 \n", - "25 0.22760 0.222900 0.140100 0.3040 \n", - "26 0.18680 0.142500 0.087830 0.2252 \n", - "27 0.10660 0.149000 0.077310 0.1697 \n", - "28 0.16970 0.168300 0.087510 0.1926 \n", - "29 0.11570 0.098750 0.079530 0.1739 \n", - ".. ... ... ... ... \n", - "539 0.11990 0.092520 0.013640 0.2037 \n", - "540 0.11200 0.067370 0.025940 0.1818 \n", - "541 0.12300 0.100900 0.038900 0.1872 \n", - "542 0.07214 0.041050 0.030270 0.1840 \n", - "543 0.06877 0.029870 0.032750 0.1628 \n", - "544 0.10180 0.036880 0.023690 0.1620 \n", - "545 0.06747 0.029740 0.024430 0.1664 \n", - "546 0.04994 0.010120 0.005495 0.1885 \n", - "547 0.08066 0.043580 0.024380 0.1669 \n", - "548 0.05030 0.023370 0.009615 0.1580 \n", - "549 0.06602 0.015480 0.008160 0.1976 \n", - "550 0.04227 0.000000 0.000000 0.1661 \n", - "551 0.08194 0.048240 0.022570 0.2030 \n", - "552 0.04234 0.019970 0.014990 0.1539 \n", - "553 0.05605 0.039960 0.012820 0.1692 \n", - "554 0.05824 0.061950 0.023430 0.1566 \n", - "555 0.07658 0.059990 0.027380 0.1593 \n", - "556 0.07504 0.005025 0.011160 0.1791 \n", - "557 0.04971 0.000000 0.000000 0.1742 \n", - "558 0.13300 0.102900 0.037360 0.1454 \n", - "559 0.10210 0.111200 0.041050 0.1388 \n", - "560 0.11260 0.044620 0.043040 0.1537 \n", - "561 0.03558 0.000000 0.000000 0.1060 \n", - "562 0.20870 0.255000 0.094290 0.2128 \n", - "563 0.22360 0.317400 0.147400 0.2149 \n", - "564 0.11590 0.243900 0.138900 0.1726 \n", - "565 0.10340 0.144000 0.097910 0.1752 \n", - "566 0.10230 0.092510 0.053020 0.1590 \n", - "567 0.27700 0.351400 0.152000 0.2397 \n", - "568 0.04362 0.000000 0.000000 0.1587 \n", - "\n", - " mean fractal dimension ... worst radius \\\n", - "0 0.07871 ... 25.380 \n", - "1 0.05667 ... 24.990 \n", - "2 0.05999 ... 23.570 \n", - "3 0.09744 ... 14.910 \n", - "4 0.05883 ... 22.540 \n", - "5 0.07613 ... 15.470 \n", - "6 0.05742 ... 22.880 \n", - "7 0.07451 ... 17.060 \n", - "8 0.07389 ... 15.490 \n", - "9 0.08243 ... 15.090 \n", - "10 0.05697 ... 19.190 \n", - "11 0.06082 ... 20.420 \n", - "12 0.07800 ... 20.960 \n", - "13 0.05338 ... 16.840 \n", - "14 0.07682 ... 15.030 \n", - "15 0.07077 ... 17.460 \n", - "16 0.05922 ... 19.070 \n", - "17 0.07356 ... 20.960 \n", - "18 0.05395 ... 27.320 \n", - "19 0.05766 ... 15.110 \n", - "20 0.06811 ... 14.500 \n", - "21 0.06905 ... 10.230 \n", - "22 0.07032 ... 18.070 \n", - "23 0.05278 ... 29.170 \n", - "24 0.06330 ... 26.460 \n", - "25 0.07413 ... 22.250 \n", - "26 0.06924 ... 17.620 \n", - "27 0.05699 ... 21.310 \n", - "28 0.06540 ... 20.270 \n", - "29 0.06149 ... 20.010 \n", - ".. ... ... ... \n", - "539 0.07751 ... 8.678 \n", - "540 0.06782 ... 12.260 \n", - "541 0.06341 ... 16.220 \n", - "542 0.05680 ... 16.510 \n", - "543 0.05781 ... 14.370 \n", - "544 0.06688 ... 15.050 \n", - "545 0.05801 ... 15.350 \n", - "546 0.06201 ... 11.250 \n", - "547 0.06714 ... 10.830 \n", - "548 0.06235 ... 10.930 \n", - "549 0.06328 ... 13.030 \n", - "550 0.05948 ... 11.660 \n", - "551 0.06552 ... 12.020 \n", - "552 0.05637 ... 13.870 \n", - "553 0.06576 ... 9.845 \n", - "554 0.05708 ... 13.890 \n", - "555 0.06127 ... 10.840 \n", - "556 0.06331 ... 10.650 \n", - "557 0.06059 ... 10.490 \n", - "558 0.06147 ... 15.480 \n", - "559 0.06570 ... 12.480 \n", - "560 0.06171 ... 15.300 \n", - "561 0.05502 ... 11.920 \n", - "562 0.07152 ... 17.520 \n", - "563 0.06879 ... 24.290 \n", - "564 0.05623 ... 25.450 \n", - "565 0.05533 ... 23.690 \n", - "566 0.05648 ... 18.980 \n", - "567 0.07016 ... 25.740 \n", - "568 0.05884 ... 9.456 \n", - "\n", - " worst texture worst perimeter worst area worst smoothness \\\n", - "0 17.33 184.60 2019.0 0.16220 \n", - "1 23.41 158.80 1956.0 0.12380 \n", - "2 25.53 152.50 1709.0 0.14440 \n", - "3 26.50 98.87 567.7 0.20980 \n", - "4 16.67 152.20 1575.0 0.13740 \n", - "5 23.75 103.40 741.6 0.17910 \n", - "6 27.66 153.20 1606.0 0.14420 \n", - "7 28.14 110.60 897.0 0.16540 \n", - "8 30.73 106.20 739.3 0.17030 \n", - "9 40.68 97.65 711.4 0.18530 \n", - "10 33.88 123.80 1150.0 0.11810 \n", - "11 27.28 136.50 1299.0 0.13960 \n", - "12 29.94 151.70 1332.0 0.10370 \n", - "13 27.66 112.00 876.5 0.11310 \n", - "14 32.01 108.80 697.7 0.16510 \n", - "15 37.13 124.10 943.2 0.16780 \n", - "16 30.88 123.40 1138.0 0.14640 \n", - "17 31.48 136.80 1315.0 0.17890 \n", - "18 30.88 186.80 2398.0 0.15120 \n", - "19 19.26 99.70 711.2 0.14400 \n", - "20 20.49 96.09 630.5 0.13120 \n", - "21 15.66 65.13 314.9 0.13240 \n", - "22 19.08 125.10 980.9 0.13900 \n", - "23 35.59 188.00 2615.0 0.14010 \n", - "24 31.56 177.00 2215.0 0.18050 \n", - "25 21.40 152.40 1461.0 0.15450 \n", - "26 33.21 122.40 896.9 0.15250 \n", - "27 27.26 139.90 1403.0 0.13380 \n", - "28 36.71 149.30 1269.0 0.16410 \n", - "29 19.52 134.90 1227.0 0.12550 \n", - ".. ... ... ... ... \n", - "539 31.89 54.49 223.6 0.15960 \n", - "540 19.68 78.78 457.8 0.13450 \n", - "541 31.73 113.50 808.9 0.13400 \n", - "542 32.29 107.40 826.4 0.10600 \n", - "543 37.17 92.48 629.6 0.10720 \n", - "544 24.75 99.17 688.6 0.12640 \n", - "545 29.09 97.58 729.8 0.12160 \n", - "546 21.77 71.12 384.9 0.12850 \n", - "547 22.04 71.08 357.4 0.14610 \n", - "548 25.59 69.10 364.2 0.11990 \n", - "549 31.45 83.90 505.6 0.12040 \n", - "550 24.77 74.08 412.3 0.10010 \n", - "551 28.26 77.80 436.6 0.10870 \n", - "552 36.00 88.10 594.7 0.12340 \n", - "553 25.05 62.86 295.8 0.11030 \n", - "554 35.74 88.84 595.7 0.12270 \n", - "555 34.91 69.57 357.6 0.13840 \n", - "556 22.88 67.88 347.3 0.12650 \n", - "557 34.24 66.50 330.6 0.10730 \n", - "558 27.27 105.90 733.5 0.10260 \n", - "559 37.16 82.28 474.2 0.12980 \n", - "560 33.17 100.20 706.7 0.12410 \n", - "561 38.30 75.19 439.6 0.09267 \n", - "562 42.79 128.70 915.0 0.14170 \n", - "563 29.41 179.10 1819.0 0.14070 \n", - "564 26.40 166.10 2027.0 0.14100 \n", - "565 38.25 155.00 1731.0 0.11660 \n", - "566 34.12 126.70 1124.0 0.11390 \n", - "567 39.42 184.60 1821.0 0.16500 \n", - "568 30.37 59.16 268.6 0.08996 \n", - "\n", - " worst compactness worst concavity worst concave points worst symmetry \\\n", - "0 0.66560 0.71190 0.26540 0.4601 \n", - "1 0.18660 0.24160 0.18600 0.2750 \n", - "2 0.42450 0.45040 0.24300 0.3613 \n", - "3 0.86630 0.68690 0.25750 0.6638 \n", - "4 0.20500 0.40000 0.16250 0.2364 \n", - "5 0.52490 0.53550 0.17410 0.3985 \n", - "6 0.25760 0.37840 0.19320 0.3063 \n", - "7 0.36820 0.26780 0.15560 0.3196 \n", - "8 0.54010 0.53900 0.20600 0.4378 \n", - "9 1.05800 1.10500 0.22100 0.4366 \n", - "10 0.15510 0.14590 0.09975 0.2948 \n", - "11 0.56090 0.39650 0.18100 0.3792 \n", - "12 0.39030 0.36390 0.17670 0.3176 \n", - "13 0.19240 0.23220 0.11190 0.2809 \n", - "14 0.77250 0.69430 0.22080 0.3596 \n", - "15 0.65770 0.70260 0.17120 0.4218 \n", - "16 0.18710 0.29140 0.16090 0.3029 \n", - "17 0.42330 0.47840 0.20730 0.3706 \n", - "18 0.31500 0.53720 0.23880 0.2768 \n", - "19 0.17730 0.23900 0.12880 0.2977 \n", - "20 0.27760 0.18900 0.07283 0.3184 \n", - "21 0.11480 0.08867 0.06227 0.2450 \n", - "22 0.59540 0.63050 0.23930 0.4667 \n", - "23 0.26000 0.31550 0.20090 0.2822 \n", - "24 0.35780 0.46950 0.20950 0.3613 \n", - "25 0.39490 0.38530 0.25500 0.4066 \n", - "26 0.66430 0.55390 0.27010 0.4264 \n", - "27 0.21170 0.34460 0.14900 0.2341 \n", - "28 0.61100 0.63350 0.20240 0.4027 \n", - "29 0.28120 0.24890 0.14560 0.2756 \n", - ".. ... ... ... ... \n", - "539 0.30640 0.33930 0.05000 0.2790 \n", - "540 0.21180 0.17970 0.06918 0.2329 \n", - "541 0.42020 0.40400 0.12050 0.3187 \n", - "542 0.13760 0.16110 0.10950 0.2722 \n", - "543 0.13810 0.10620 0.07958 0.2473 \n", - "544 0.20370 0.13770 0.06845 0.2249 \n", - "545 0.15170 0.10490 0.07174 0.2642 \n", - "546 0.08842 0.04384 0.02381 0.2681 \n", - "547 0.22460 0.17830 0.08333 0.2691 \n", - "548 0.09546 0.09350 0.03846 0.2552 \n", - "549 0.16330 0.06194 0.03264 0.3059 \n", - "550 0.07348 0.00000 0.00000 0.2458 \n", - "551 0.17820 0.15640 0.06413 0.3169 \n", - "552 0.10640 0.08653 0.06498 0.2407 \n", - "553 0.08298 0.07993 0.02564 0.2435 \n", - "554 0.16200 0.24390 0.06493 0.2372 \n", - "555 0.17100 0.20000 0.09127 0.2226 \n", - "556 0.12000 0.01005 0.02232 0.2262 \n", - "557 0.07158 0.00000 0.00000 0.2475 \n", - "558 0.31710 0.36620 0.11050 0.2258 \n", - "559 0.25170 0.36300 0.09653 0.2112 \n", - "560 0.22640 0.13260 0.10480 0.2250 \n", - "561 0.05494 0.00000 0.00000 0.1566 \n", - "562 0.79170 1.17000 0.23560 0.4089 \n", - "563 0.41860 0.65990 0.25420 0.2929 \n", - "564 0.21130 0.41070 0.22160 0.2060 \n", - "565 0.19220 0.32150 0.16280 0.2572 \n", - "566 0.30940 0.34030 0.14180 0.2218 \n", - "567 0.86810 0.93870 0.26500 0.4087 \n", - "568 0.06444 0.00000 0.00000 0.2871 \n", - "\n", - " worst fractal dimension \n", - "0 0.11890 \n", - "1 0.08902 \n", - "2 0.08758 \n", - "3 0.17300 \n", - "4 0.07678 \n", - "5 0.12440 \n", - "6 0.08368 \n", - "7 0.11510 \n", - "8 0.10720 \n", - "9 0.20750 \n", - "10 0.08452 \n", - "11 0.10480 \n", - "12 0.10230 \n", - "13 0.06287 \n", - "14 0.14310 \n", - "15 0.13410 \n", - "16 0.08216 \n", - "17 0.11420 \n", - "18 0.07615 \n", - "19 0.07259 \n", - "20 0.08183 \n", - "21 0.07773 \n", - "22 0.09946 \n", - "23 0.07526 \n", - "24 0.09564 \n", - "25 0.10590 \n", - "26 0.12750 \n", - "27 0.07421 \n", - "28 0.09876 \n", - "29 0.07919 \n", - ".. ... \n", - "539 0.10660 \n", - "540 0.08134 \n", - "541 0.10230 \n", - "542 0.06956 \n", - "543 0.06443 \n", - "544 0.08492 \n", - "545 0.06953 \n", - "546 0.07399 \n", - "547 0.09479 \n", - "548 0.07920 \n", - "549 0.07626 \n", - "550 0.06592 \n", - "551 0.08032 \n", - "552 0.06484 \n", - "553 0.07393 \n", - "554 0.07242 \n", - "555 0.08283 \n", - "556 0.06742 \n", - "557 0.06969 \n", - "558 0.08004 \n", - "559 0.08732 \n", - "560 0.08321 \n", - "561 0.05905 \n", - "562 0.14090 \n", - "563 0.09873 \n", - "564 0.07115 \n", - "565 0.06637 \n", - "566 0.07820 \n", - "567 0.12400 \n", - "568 0.07039 \n", - "\n", - "[569 rows x 30 columns]\n", - " malignant benign\n", - "0 1 0\n", - "1 1 0\n", - "2 1 0\n", - "3 1 0\n", - "4 1 0\n", - "5 1 0\n", - "6 1 0\n", - "7 1 0\n", - "8 1 0\n", - "9 1 0\n", - "10 1 0\n", - "11 1 0\n", - "12 1 0\n", - "13 1 0\n", - "14 1 0\n", - "15 1 0\n", - "16 1 0\n", - "17 1 0\n", - "18 1 0\n", - "19 0 1\n", - "20 0 1\n", - "21 0 1\n", - "22 1 0\n", - "23 1 0\n", - "24 1 0\n", - "25 1 0\n", - "26 1 0\n", - "27 1 0\n", - "28 1 0\n", - "29 1 0\n", - ".. ... ...\n", - "539 0 1\n", - "540 0 1\n", - "541 0 1\n", - "542 0 1\n", - "543 0 1\n", - "544 0 1\n", - "545 0 1\n", - "546 0 1\n", - "547 0 1\n", - "548 0 1\n", - "549 0 1\n", - "550 0 1\n", - "551 0 1\n", - "552 0 1\n", - "553 0 1\n", - "554 0 1\n", - "555 0 1\n", - "556 0 1\n", - "557 0 1\n", - "558 0 1\n", - "559 0 1\n", - "560 0 1\n", - "561 0 1\n", - "562 1 0\n", - "563 1 0\n", - "564 1 0\n", - "565 1 0\n", - "566 1 0\n", - "567 1 0\n", - "568 0 1\n", - "\n", - "[569 rows x 2 columns]\n" - ] - }, - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "import os\n", "from sklearn.datasets import load_breast_cancer\n", @@ -1053,20 +566,11 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "# Common imports\n", "import numpy as np\n", @@ -1154,78 +658,11 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " (0, 0)\t1.0\n", - " (0, 7)\t1.0\n", - " (0, 9)\t1.0\n", - " (0, 13)\t1.0\n", - " (1, 3)\t1.0\n", - " (1, 5)\t1.0\n", - " (1, 8)\t1.0\n", - " (1, 12)\t1.0\n", - " (2, 3)\t1.0\n", - " (2, 5)\t1.0\n", - " (2, 8)\t1.0\n", - " (2, 11)\t1.0\n", - " (3, 1)\t1.0\n", - " (3, 5)\t1.0\n", - " (3, 8)\t1.0\n", - " (3, 12)\t1.0\n", - " (4, 2)\t1.0\n", - " (4, 6)\t1.0\n", - " (4, 8)\t1.0\n", - " (4, 12)\t1.0\n", - " (5, 2)\t1.0\n", - " (5, 4)\t1.0\n", - " (5, 10)\t1.0\n", - " (5, 12)\t1.0\n", - " (6, 2)\t1.0\n", - " :\t:\n", - " (8, 12)\t1.0\n", - " (9, 3)\t1.0\n", - " (9, 4)\t1.0\n", - " (9, 10)\t1.0\n", - " (9, 12)\t1.0\n", - " (10, 2)\t1.0\n", - " (10, 6)\t1.0\n", - " (10, 10)\t1.0\n", - " (10, 12)\t1.0\n", - " (11, 3)\t1.0\n", - " (11, 6)\t1.0\n", - " (11, 10)\t1.0\n", - " (11, 11)\t1.0\n", - " (12, 1)\t1.0\n", - " (12, 6)\t1.0\n", - " (12, 8)\t1.0\n", - " (12, 11)\t1.0\n", - " (13, 1)\t1.0\n", - " (13, 5)\t1.0\n", - " (13, 10)\t1.0\n", - " (13, 12)\t1.0\n", - " (14, 2)\t1.0\n", - " (14, 6)\t1.0\n", - " (14, 8)\t1.0\n", - " (14, 11)\t1.0\n", - "Train set accuracy with Decision Tree: 0.73\n" - ] - }, - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "# Common imports\n", "import numpy as np\n", @@ -1312,73 +749,11 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "X1 < 0.000 Gini=0.408\n", - "X1 < 0.000 Gini=0.408\n", - "X1 < 1.000 Gini=0.394\n", - "X1 < 2.000 Gini=0.394\n", - "X1 < 2.000 Gini=0.394\n", - "X1 < 2.000 Gini=0.394\n", - "X1 < 1.000 Gini=0.394\n", - "X1 < 0.000 Gini=0.408\n", - "X1 < 0.000 Gini=0.408\n", - "X1 < 2.000 Gini=0.394\n", - "X1 < 0.000 Gini=0.408\n", - "X1 < 1.000 Gini=0.394\n", - "X1 < 1.000 Gini=0.394\n", - "X1 < 2.000 Gini=0.394\n", - "X2 < 0.000 Gini=0.408\n", - "X2 < 0.000 Gini=0.408\n", - "X2 < 0.000 Gini=0.408\n", - "X2 < 1.000 Gini=0.407\n", - "X2 < 2.000 Gini=0.407\n", - "X2 < 2.000 Gini=0.407\n", - "X2 < 2.000 Gini=0.407\n", - "X2 < 1.000 Gini=0.407\n", - "X2 < 2.000 Gini=0.407\n", - "X2 < 1.000 Gini=0.407\n", - "X2 < 1.000 Gini=0.407\n", - "X2 < 1.000 Gini=0.407\n", - "X2 < 0.000 Gini=0.408\n", - "X2 < 1.000 Gini=0.407\n", - "X3 < 0.000 Gini=0.408\n", - "X3 < 0.000 Gini=0.408\n", - "X3 < 0.000 Gini=0.408\n", - "X3 < 0.000 Gini=0.408\n", - "X3 < 1.000 Gini=0.367\n", - "X3 < 1.000 Gini=0.367\n", - "X3 < 1.000 Gini=0.367\n", - "X3 < 0.000 Gini=0.408\n", - "X3 < 1.000 Gini=0.367\n", - "X3 < 1.000 Gini=0.367\n", - "X3 < 1.000 Gini=0.367\n", - "X3 < 0.000 Gini=0.408\n", - "X3 < 1.000 Gini=0.367\n", - "X3 < 0.000 Gini=0.408\n", - "X4 < 0.000 Gini=0.408\n", - "X4 < 1.000 Gini=0.405\n", - "X4 < 0.000 Gini=0.408\n", - "X4 < 0.000 Gini=0.408\n", - "X4 < 0.000 Gini=0.408\n", - "X4 < 1.000 Gini=0.405\n", - "X4 < 1.000 Gini=0.405\n", - "X4 < 0.000 Gini=0.408\n", - "X4 < 0.000 Gini=0.408\n", - "X4 < 0.000 Gini=0.408\n", - "X4 < 1.000 Gini=0.405\n", - "X4 < 1.000 Gini=0.405\n", - "X4 < 0.000 Gini=0.408\n", - "X4 < 1.000 Gini=0.405\n", - "Split: [X3 < 1.000]\n" - ] - } - ], + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "# Split a dataset based on an attribute and an attribute value\n", "def test_split(index, value, dataset):\n", @@ -1482,37 +857,11 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Outlook', 'Temperature', 'Humidity', 'Wind']\n", - "System entropy 0.863120568566631\n", - "Outlook\n", - "(Sunny)\n", - "(Overcast)\n", - "(Rain)\n", - "Humidity\n", - "(High)\n", - "(Normal)\n", - "1\n", - "Temperature\n", - "(Mild)\n", - "(Cool)\n", - "Wind\n", - "(Weak)\n", - "(Strong)\n", - "1\n", - "1\n", - "0\n", - "0\n", - "1\n" - ] - } - ], + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "import re\n", "import math\n", @@ -1712,32 +1061,11 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(426, 30)\n", - "(143, 30)\n", - "Test set accuracy with Logistic Regression: 0.95\n", - "Test set accuracy with SVM: 0.63\n", - "Test set accuracy with Decision Trees: 0.90\n", - "Test set accuracy Logistic Regression with scaled data: 0.96\n", - "Test set accuracy SVM with scaled data: 0.96\n", - "Test set accuracy with Decision Trees and scaled data: 0.90\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:757: ConvergenceWarning: lbfgs failed to converge. Increase the number of iterations.\n", - " \"of iterations.\", ConvergenceWarning)\n" - ] - } - ], + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", @@ -1791,20 +1119,11 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "from __future__ import division, print_function, unicode_literals\n", "\n", @@ -1881,20 +1200,11 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "np.random.seed(6)\n", "Xs = np.random.rand(100, 2) - 0.5\n", @@ -1927,8 +1237,10 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": {}, + "execution_count": 10, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "# Quadratic training set + noise\n", @@ -1941,24 +1253,11 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "DecisionTreeRegressor(criterion='mse', max_depth=2, max_features=None,\n", - " max_leaf_nodes=None, min_impurity_decrease=0.0,\n", - " min_impurity_split=None, min_samples_leaf=1,\n", - " min_samples_split=2, min_weight_fraction_leaf=0.0,\n", - " presort=False, random_state=42, splitter='best')" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "from sklearn.tree import DecisionTreeRegressor\n", "\n", @@ -1975,20 +1274,11 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "from sklearn.tree import DecisionTreeRegressor\n", "\n", @@ -2032,20 +1322,11 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "tree_reg1 = DecisionTreeRegressor(random_state=42)\n", "tree_reg2 = DecisionTreeRegressor(random_state=42, min_samples_leaf=10)\n", @@ -2135,6 +1416,20 @@ "\n", "We discuss these methods here.\n", "\n", + "\n", + "## An Overview of Ensemble Methods\n", + "\n", + "\n", + "\n", + "\n", + "

    \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "## Bagging\n", "\n", "The **plain** decision trees suffer from high\n", @@ -2179,20 +1474,11 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "heads_proba = 0.51\n", "coin_tosses = (np.random.rand(10000, 10) < heads_proba).astype(np.int32)\n", @@ -2217,24 +1503,11 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "LogisticRegression 0.864\n", - "RandomForestClassifier 0.872\n", - "SVC 0.888\n", - "VotingClassifier 0.896\n", - "LogisticRegression 0.864\n", - "RandomForestClassifier 0.872\n", - "SVC 0.888\n", - "VotingClassifier 0.912\n" - ] - } - ], + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "from sklearn.datasets import make_moons\n", @@ -2290,37 +1563,11 @@ }, { "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", - " FutureWarning)\n", - "/usr/local/lib/python3.7/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", - " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", - "/usr/local/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", - " \"avoid this warning.\", FutureWarning)\n" - ] - }, - { - "data": { - "text/plain": [ - "VotingClassifier(estimators=[('lr', LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", - " intercept_scaling=1, max_iter=100, multi_class='warn',\n", - " n_jobs=None, penalty='l2', random_state=42, solver='warn',\n", - " tol=0.0001, verbose=0, warm_start=False)), ('rf', RandomFore...rbf', max_iter=-1, probability=False, random_state=42,\n", - " shrinking=True, tol=0.001, verbose=False))],\n", - " flatten_transform=None, n_jobs=None, voting='hard', weights=None)" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "from sklearn.datasets import make_moons\n", @@ -2344,36 +1591,11 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "LogisticRegression 0.864\n", - "RandomForestClassifier 0.872\n", - "SVC 0.888\n", - "VotingClassifier 0.896\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", - " FutureWarning)\n", - "/usr/local/lib/python3.7/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", - " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", - "/usr/local/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", - " \"avoid this warning.\", FutureWarning)\n", - "/usr/local/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", - " FutureWarning)\n", - "/usr/local/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", - " \"avoid this warning.\", FutureWarning)\n" - ] - } - ], + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "from sklearn.metrics import accuracy_score\n", "\n", @@ -2385,37 +1607,11 @@ }, { "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", - " FutureWarning)\n", - "/usr/local/lib/python3.7/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", - " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", - "/usr/local/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", - " \"avoid this warning.\", FutureWarning)\n" - ] - }, - { - "data": { - "text/plain": [ - "VotingClassifier(estimators=[('lr', LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", - " intercept_scaling=1, max_iter=100, multi_class='warn',\n", - " n_jobs=None, penalty='l2', random_state=42, solver='warn',\n", - " tol=0.0001, verbose=0, warm_start=False)), ('rf', RandomFore...'rbf', max_iter=-1, probability=True, random_state=42,\n", - " shrinking=True, tol=0.001, verbose=False))],\n", - " flatten_transform=None, n_jobs=None, voting='soft', weights=None)" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "log_clf = LogisticRegression(random_state=42)\n", "rnd_clf = RandomForestClassifier(random_state=42)\n", @@ -2429,36 +1625,11 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", - " FutureWarning)\n", - "/usr/local/lib/python3.7/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", - " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", - "/usr/local/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", - " \"avoid this warning.\", FutureWarning)\n", - "/usr/local/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", - " FutureWarning)\n", - "/usr/local/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", - " \"avoid this warning.\", FutureWarning)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "LogisticRegression 0.864\n", - "RandomForestClassifier 0.872\n", - "SVC 0.888\n", - "VotingClassifier 0.912\n" - ] - } - ], + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "from sklearn.metrics import accuracy_score\n", "\n", @@ -2477,8 +1648,10 @@ }, { "cell_type": "code", - "execution_count": 24, - "metadata": {}, + "execution_count": 20, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "from sklearn.ensemble import BaggingClassifier\n", @@ -2493,17 +1666,11 @@ }, { "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.904\n" - ] - } - ], + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "from sklearn.metrics import accuracy_score\n", "print(accuracy_score(y_test, y_pred))" @@ -2511,17 +1678,11 @@ }, { "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.856\n" - ] - } - ], + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "tree_clf = DecisionTreeClassifier(random_state=42)\n", "tree_clf.fit(X_train, y_train)\n", @@ -2531,20 +1692,11 @@ }, { "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "from matplotlib.colors import ListedColormap\n", "\n", @@ -2650,80 +1802,11 @@ }, { "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(426, 30)\n", - "(143, 30)\n", - "Test set accuracy with Logistic Regression: 0.95\n", - "Test set accuracy with SVM: 0.63\n", - "Test set accuracy with Decision Trees: 0.87\n", - "Test set accuracy Logistic Regression with scaled data: 0.96\n", - "Test set accuracy SVM with scaled data: 0.96\n", - "Test set accuracy with Decision Trees and scaled data: 0.90\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:757: ConvergenceWarning: lbfgs failed to converge. Increase the number of iterations.\n", - " \"of iterations.\", ConvergenceWarning)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0.93333333 0.8 0.93333333 1. 1. 0.92857143\n", - " 1. 0.92857143 0.92857143 1. ]\n", - "Test set accuracy with Random Forests and scaled data: 0.98\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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I0dYu3ZthoKCQ4YMYfbs2YC1qvHIkSNp1KgR77//PqGhoRne38DAQIBsy42nt3r1atu3dci+FPn1peDj4uJ4+umnCQ0NpWHDhrby4Nn9fm9FzZo1CQoKwsUl+4/X06dPc/nyZZo1a4Yxht69e9vO7pYsWWJ73/v06WNbb4yhdevWLFu27JZjvGl5zTCOejjbGUViYqKMHz9ePDw8BJAyZcrIjBkzHPqN9mY4+owiPDxcXF1dZefOnZKamiqNGjWSfv36icVikcWLF0vnzp1FROSLL76QwYMHi4hIt27dZPLkySJi/QZ76dIlCQ8PF2OMbNy4UUREIiMjpVq1avLPP/9IcnKy3HfffbJo0aJM+4+Li5MrV66IiMjBgwelcePGIiKycOFC6d27t4hYf8dVq1aV+Ph4mTlzprz99tsiYi1j0bhxYzl69KisWbNGPD09bd/mRUTOnz8vItZv/vXr15eoqCiJjIyUGjVqyPnz5yUpKUnuuece23E98cQT8scff4iIyPHjx8XX1zdTvOnPKC5cuCCNGjWS06dPi4hIw4YNJSwsLEP7sLAwadiwoURHR0uZMmVy9TsJDQ2VhQsXioi1BElcXFyG/YqIDB48WL744gsREalRo4a89957tueCg4Nt78O7774rb7/9tiQlJUnz5s3ln3/+ERGRuXPnSr9+/TLt+4033pCpU6falqOiomw/jxkzxvZcnz59pGPHjrYzmNGjR8tXX30lIiIXL16UunXrSmxsbLa/3+vdc889EhwcnOmxYsWKbN+nrEq9XLVlyxZp27atbXndunW296906dK29RaLJcPy119/LUOGDMl2n1fl9xmFdmbb2cmTJxk7diyJiYn07NmTDz74gEqVKjk6LKfi7e1t+9ZZv3592rZtizGGwMBAjh07lql9VmW4L168SI0aNWzzDGzZsoXWrVtToUIFAHr27Mm6det45JFHMmwrOTmZIUOGEBYWhqurq61f6cEHH+SFF14gMTGR5cuXc++991KsWDF+++03du7cabs2HR0dzaFDhyhatCihoaG2b/OQdRnuM2fO0KpVK8qVKwdYy5lf3WduypYD/PHHHwQHB3Po0CGGDRvGXXfdlYd3PWsxMTFERkby6KOPAuS6Mu7V0utgvSlv3rx5jBo1innz5jFv3rwcy42nd/r06QylKXIqRZ6+FPxvv/3G0qVL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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:424: MatplotlibDeprecationWarning: \n", - "Passing one of 'on', 'true', 'off', 'false' as a boolean is deprecated; use an actual boolean (True/False) instead.\n", - " warn_deprecated(\"2.2\", \"Passing one of 'on', 'true', 'off', 'false' as a \"\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", @@ -2802,8 +1885,10 @@ }, { "cell_type": "code", - "execution_count": 29, - "metadata": {}, + "execution_count": 25, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "bag_clf = BaggingClassifier(\n", @@ -2813,20 +1898,11 @@ }, { "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.986013986013986" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "bag_clf.fit(X_train, y_train)\n", "y_pred = bag_clf.predict(X_test)\n", @@ -2940,28 +2016,11 @@ }, { "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "Number of features of the model must match the input. Model n_features is 30 and input n_features is 2 ", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mada_clf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mplot_decision_boundary\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mada_clf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0mm\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mplot_decision_boundary\u001b[0;34m(clf, X, y, axes, alpha, contour)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mx1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmeshgrid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx1s\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx2s\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mX_new\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mc_\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mx1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mravel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx2\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mravel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0my_pred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_new\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0mcustom_cmap\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mListedColormap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'#fafab0'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'#9898ff'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'#a0faa0'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcontourf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_pred\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0malpha\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcmap\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcustom_cmap\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/site-packages/sklearn/ensemble/weight_boosting.py\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(self, X)\u001b[0m\n\u001b[1;32m 599\u001b[0m \u001b[0mThe\u001b[0m \u001b[0mpredicted\u001b[0m \u001b[0mclasses\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 600\u001b[0m \"\"\"\n\u001b[0;32m--> 601\u001b[0;31m \u001b[0mpred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdecision_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 602\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 603\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mn_classes_\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/site-packages/sklearn/ensemble/weight_boosting.py\u001b[0m in \u001b[0;36mdecision_function\u001b[0;34m(self, X)\u001b[0m\n\u001b[1;32m 667\u001b[0m \u001b[0;31m# The weights are all 1. for SAMME.R\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 668\u001b[0m pred = sum(_samme_proba(estimator, n_classes, X)\n\u001b[0;32m--> 669\u001b[0;31m for estimator in self.estimators_)\n\u001b[0m\u001b[1;32m 670\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# self.algorithm == \"SAMME\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 671\u001b[0m pred = sum((estimator.predict(X) == classes).T * w\n", - "\u001b[0;32m/usr/local/lib/python3.7/site-packages/sklearn/ensemble/weight_boosting.py\u001b[0m in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 667\u001b[0m \u001b[0;31m# The weights are all 1. for SAMME.R\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 668\u001b[0m pred = sum(_samme_proba(estimator, n_classes, X)\n\u001b[0;32m--> 669\u001b[0;31m for estimator in self.estimators_)\n\u001b[0m\u001b[1;32m 670\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# self.algorithm == \"SAMME\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 671\u001b[0m pred = sum((estimator.predict(X) == classes).T * w\n", - "\u001b[0;32m/usr/local/lib/python3.7/site-packages/sklearn/ensemble/weight_boosting.py\u001b[0m in \u001b[0;36m_samme_proba\u001b[0;34m(estimator, n_classes, X)\u001b[0m\n\u001b[1;32m 281\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 282\u001b[0m \"\"\"\n\u001b[0;32m--> 283\u001b[0;31m \u001b[0mproba\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mestimator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict_proba\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 284\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 285\u001b[0m \u001b[0;31m# Displace zero probabilities so the log is defined.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/site-packages/sklearn/tree/tree.py\u001b[0m in \u001b[0;36mpredict_proba\u001b[0;34m(self, X, check_input)\u001b[0m\n\u001b[1;32m 828\u001b[0m \"\"\"\n\u001b[1;32m 829\u001b[0m \u001b[0mcheck_is_fitted\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'tree_'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 830\u001b[0;31m \u001b[0mX\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_validate_X_predict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcheck_input\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 831\u001b[0m \u001b[0mproba\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtree_\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 832\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/site-packages/sklearn/tree/tree.py\u001b[0m in \u001b[0;36m_validate_X_predict\u001b[0;34m(self, X, check_input)\u001b[0m\n\u001b[1;32m 385\u001b[0m \u001b[0;34m\"match the input. Model n_features is %s and \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 386\u001b[0m \u001b[0;34m\"input n_features is %s \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 387\u001b[0;31m % (self.n_features_, n_features))\n\u001b[0m\u001b[1;32m 388\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 389\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mValueError\u001b[0m: Number of features of the model must match the input. Model n_features is 30 and input n_features is 2 " - ] - } - ], + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "from sklearn.ensemble import AdaBoostClassifier\n", "\n", @@ -3047,8 +2106,10 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, + "execution_count": 28, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "np.random.seed(42)\n", @@ -3144,8 +2205,10 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, + "execution_count": 29, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "\n", @@ -3219,29 +2282,17 @@ "designed to be highly efficient, flexible and portable. It implements\n", "machine learning algorithms under the Gradient Boosting\n", "framework. XGBoost provides a parallel tree boosting that solve many\n", - "data science problems in a fast and accurate way" + "data science problems in a fast and accurate way. See the [article by Chen and Guestrin](https://arxiv.org/abs/1603.02754).\n", + "\n", + "The authors design and build a highly scalable end-to-end tree\n", + "boosting system. It has a theoretically justified weighted quantile\n", + "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.\n", + "\n", + "It is now the algorithm which wins essentially all ML competitions!!!" ] } ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.5" - } - }, + "metadata": {}, "nbformat": 4, "nbformat_minor": 2 } diff --git a/doc/pub/DecisionTrees/ipynb/ipynb-DecisionTrees-src.tar.gz b/doc/pub/DecisionTrees/ipynb/ipynb-DecisionTrees-src.tar.gz index c02d53612..1d7d28def 100644 Binary files a/doc/pub/DecisionTrees/ipynb/ipynb-DecisionTrees-src.tar.gz and b/doc/pub/DecisionTrees/ipynb/ipynb-DecisionTrees-src.tar.gz differ diff --git a/doc/pub/DecisionTrees/pdf/DecisionTrees-minted.pdf b/doc/pub/DecisionTrees/pdf/DecisionTrees-minted.pdf index 438eee9a9..85c249036 100644 Binary files a/doc/pub/DecisionTrees/pdf/DecisionTrees-minted.pdf and b/doc/pub/DecisionTrees/pdf/DecisionTrees-minted.pdf differ diff --git a/doc/src/DecisionTrees/DataFiles/ensembleoverview.png b/doc/src/DecisionTrees/DataFiles/ensembleoverview.png new file mode 100644 index 000000000..dce581ee6 Binary files /dev/null and b/doc/src/DecisionTrees/DataFiles/ensembleoverview.png differ diff --git a/doc/src/DecisionTrees/DecisionTrees.do.txt b/doc/src/DecisionTrees/DecisionTrees.do.txt index aea8ce0a6..5f8f1fc91 100644 --- a/doc/src/DecisionTrees/DecisionTrees.do.txt +++ b/doc/src/DecisionTrees/DecisionTrees.do.txt @@ -1164,6 +1164,14 @@ o Boosting methods We discuss these methods here. + +!split +===== An Overview of Ensemble Methods ===== + +FIGURE: [DataFiles/ensembleoverview.png, width=600 frac=0.8] + + + !split ===== Bagging ===== @@ -1832,4 +1840,10 @@ 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 +data science problems in a fast and accurate way. See the "article by Chen and Guestrin":"https://arxiv.org/abs/1603.02754". + +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. + +It is now the algorithm which wins essentially all ML competitions!!! diff --git a/doc/src/DecisionTrees/Programs/rfcancer.py b/doc/src/DecisionTrees/Programs/rfcancer.py index 3c82c5bd8..9f226f064 100644 --- a/doc/src/DecisionTrees/Programs/rfcancer.py +++ b/doc/src/DecisionTrees/Programs/rfcancer.py @@ -2,9 +2,11 @@ import matplotlib.pyplot as plt import numpy as np from sklearn.model_selection import train_test_split from sklearn.datasets import load_breast_cancer -from sklearn.svm import SVC -from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier +from sklearn.ensemble import RandomForestClassifier +from sklearn.preprocessing import LabelEncoder +from sklearn.model_selection import cross_validate +import scikitplot as skplt # Load the data cancer = load_breast_cancer() @@ -12,38 +14,12 @@ cancer = load_breast_cancer() X_train, X_test, y_train, y_test = train_test_split(cancer.data,cancer.target,random_state=0) print(X_train.shape) print(X_test.shape) -# Logistic Regression -logreg = LogisticRegression(solver='lbfgs') -logreg.fit(X_train, y_train) -print("Test set accuracy with Logistic Regression: {:.2f}".format(logreg.score(X_test,y_test))) -# Support vector machine -svm = SVC(gamma='auto', C=100) -svm.fit(X_train, y_train) -print("Test set accuracy with SVM: {:.2f}".format(svm.score(X_test,y_test))) -# Decision Trees -deep_tree_clf = DecisionTreeClassifier(max_depth=None) -deep_tree_clf.fit(X_train, y_train) -print("Test set accuracy with Decision Trees: {:.2f}".format(deep_tree_clf.score(X_test,y_test))) #now scale the data from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaler.fit(X_train) X_train_scaled = scaler.transform(X_train) X_test_scaled = scaler.transform(X_test) -# Logistic Regression -logreg.fit(X_train_scaled, y_train) -print("Test set accuracy Logistic Regression with scaled data: {:.2f}".format(logreg.score(X_test_scaled,y_test))) -# Support Vector Machine -svm.fit(X_train_scaled, y_train) -print("Test set accuracy SVM with scaled data: {:.2f}".format(logreg.score(X_test_scaled,y_test))) -# Decision Trees -deep_tree_clf.fit(X_train_scaled, y_train) -print("Test set accuracy with Decision Trees and scaled data: {:.2f}".format(deep_tree_clf.score(X_test_scaled,y_test))) - - -from sklearn.ensemble import RandomForestClassifier -from sklearn.preprocessing import LabelEncoder -from sklearn.model_selection import cross_validate # Data set not specificied #Instantiate the model with 100 trees and entropy as splitting criteria Random_Forest_model = RandomForestClassifier(n_estimators=500,criterion="entropy") @@ -54,10 +30,9 @@ print(accuracy) print("Test set accuracy with Random Forests and scaled data: {:.2f}".format(Random_Forest_model.score(X_test_scaled,y_test))) -import scikitplot as skplt + y_pred = Random_Forest_model.predict(X_test_scaled) skplt.metrics.plot_confusion_matrix(y_test, y_pred, normalize=True) -# plt.show() y_probas = Random_Forest_model.predict_proba(X_test_scaled) skplt.metrics.plot_roc(y_test, y_probas)