|
|
# AdaBoost
|
|
|
|
|
|
An implementation of the AdaBoost MH (Adaptive Boosting) algorithm for classification.
|
|
|
|
|
|
```prolog
|
|
|
%% kleines Nutzung Beispiel
|
|
|
```
|
|
|
|
|
|
# Available Predicates
|
|
|
|
|
|
* [initModelWithTraining/9](https://gitlab.cs.uni-duesseldorf.de/stups/abschlussarbeiten/prolog-mlpack-libary/-/wikis/PrologMethods/Classification/adaboost#initmodelwithtraining9)
|
|
|
* [initModelNoTraining/2](https://gitlab.cs.uni-duesseldorf.de/stups/abschlussarbeiten/prolog-mlpack-libary/-/wikis/PrologMethods/Classification/adaboost#initmodelnotraining2)
|
|
|
* [classify/8](https://gitlab.cs.uni-duesseldorf.de/stups/abschlussarbeiten/prolog-mlpack-libary/-/wikis/PrologMethods/Classification/adaboost#classify8)
|
|
|
* [numClasses/1](https://gitlab.cs.uni-duesseldorf.de/stups/abschlussarbeiten/prolog-mlpack-libary/-/wikis/PrologMethods/Classification/adaboost#numclasses1)
|
|
|
* [getTolerance/1](https://gitlab.cs.uni-duesseldorf.de/stups/abschlussarbeiten/prolog-mlpack-libary/-/wikis/PrologMethods/Classification/adaboost#gettolerance1)
|
|
|
* [modifyTolerance/1](https://gitlab.cs.uni-duesseldorf.de/stups/abschlussarbeiten/prolog-mlpack-libary/-/wikis/PrologMethods/Classification/adaboost#modifytolerance1)
|
|
|
* [train10](https://gitlab.cs.uni-duesseldorf.de/stups/abschlussarbeiten/prolog-mlpack-libary/-/wikis/PrologMethods/Classification/adaboost#train10)
|
|
|
|
|
|
---
|
|
|
|
|
|
[links/resources](https://gitlab.cs.uni-duesseldorf.de/stups/abschlussarbeiten/prolog-mlpack-libary/-/wikis/PrologMethods/Classification/adaboost#connected-linksresources)
|
|
|
|
|
|
## initModelWithTraining/9
|
|
|
|
|
|
Needs to be called first before all other predicates exept initModelNoTraining!
|
|
|
|
|
|
Initiates the Adaboostmodel and trains it, so classify can be used immediately.
|
|
|
|
|
|
```prolog
|
|
|
initModelWithTraining( +pointer(float_array), +integer, +integer,
|
|
|
+pointer(float_array), +integer,
|
|
|
+integer,
|
|
|
+string,
|
|
|
+integer , +float32).
|
|
|
```
|
|
|
|
|
|
### **Parameters**
|
|
|
|
|
|
<figure>
|
|
|
|
|
|
| **<span dir="">Name</span>** | **<span dir="">Type</span>** | **<span dir="">Description</span>** | **<span dir="">Default</span>** |
|
|
|
|------------------------------|------------------------------|-------------------------------------|---------------------------------|
|
|
|
| <span dir="">data</span> | <span dir="">+matrix</span> | <span dir="">Dataset for training AdaBoost</span> | <span dir="">-</span> |
|
|
|
| <span dir="">labels</span> | <span dir="">+vector</span> | <span dir="">Labels for the training set</span> | <span dir="">-</span> |
|
|
|
| <span dir="">numClasses</span> | <span dir="">+integer</span> | <span dir="">The number of classes to classify data into</span> | <span dir="">-</span> |
|
|
|
| <span dir="">learner</span> | <span dir="">+string</span> | <span dir="">The type of weak learner to use: “decision_stump”, or “perceptron”</span> | <span dir="">“decision_stump”</span> |
|
|
|
| <span dir="">iterations</span> | <span dir="">+integer</span> | <span dir="">The maximum number of boosting iterations to be run (0 will run until convergence.)</span> | <span dir="">100</span> |
|
|
|
| <span dir="">tolerance</span> | <span dir="">+float</span> | <span dir="">The tolerance for change in values of the weighted error during training</span> | <span dir="">1e-6</span> |
|
|
|
|
|
|
---
|
|
|
|
|
|
## <span dir="">initModelNoTraining/2</span>
|
|
|
|
|
|
<span dir="">Needs to be called first before all other predicates exept initModelWithTraining!</span>
|
|
|
|
|
|
</figure><span dir="">Initiates the Adaboostmodel but doesn’t train it, so train has to be used first before classify can be used.</span>
|
|
|
|
|
|
```prolog
|
|
|
%% part of the predicate definition
|
|
|
initModelNoTraining(+string, +float32).
|
|
|
```
|
|
|
|
|
|
### **<span dir="">Parameters</span>**
|
|
|
|
|
|
<figure>
|
|
|
|
|
|
| **<span dir="">Name</span>** | **<span dir="">Type</span>** | **<span dir="">Description</span>** | **<span dir="">Default</span>** |
|
|
|
|------------------------------|------------------------------|-------------------------------------|---------------------------------|
|
|
|
| <span dir="">learner</span> | <span dir="">+string</span> | <span dir="">The type of weak learner to use: “decision_stump”, or “perceptron”</span> | <span dir="">“decision_stump”</span> |
|
|
|
| <span dir="">tolerance</span> | <span dir="">+float</span> | <span dir="">The tolerance for change in values of the weighted error during training</span> | <span dir="">1e-6</span> |
|
|
|
|
|
|
</figure>
|
|
|
<div>
|
|
|
|
|
|
---
|
|
|
|
|
|
## <span dir="">classify/</span>8
|
|
|
|
|
|
<span dir="">Classifies the given data into the number of classes the model was trained for</span>.
|
|
|
|
|
|
```prolog
|
|
|
%% part of the predicate definition
|
|
|
classify( +pointer(float_array), +integer, +integer,
|
|
|
-pointer(float_array), -integer,
|
|
|
-pointer(float_array), -integer, -integer).
|
|
|
```
|
|
|
|
|
|
### **<span dir="">Parameters</span>**
|
|
|
| **<span dir="">Name</span>** | **<span dir="">Type</span>** | **<span dir="">Description</span>** | **<span dir="">Default</span>** |
|
|
|
|------------------------------|------------------------------|-------------------------------------|---------------------------------|
|
|
|
| <span dir="">test</span> | <span dir="">+matrix</span> | <span dir="">Test dataset</span> | <span dir="">-</span> |
|
|
|
| <span dir="">predictions</span> | <span dir="">-vector</span> | <span dir="">Predicted labels for the test set</span> | <span dir="">-</span> |
|
|
|
| <span dir="">probabilities</span> | <span dir="">-matrix</span> | <span dir="">Predicted class probabilities for each point in the test set</span> | <span dir="">-</span> |
|
|
|
|
|
|
</div>
|
|
|
<div>
|
|
|
|
|
|
---
|
|
|
|
|
|
## <span dir="">numClasses/1</span>
|
|
|
|
|
|
<span dir="">Returns the amount of classes defined in the model for classification.</span>
|
|
|
|
|
|
```prolog
|
|
|
%% part of the predicate definition
|
|
|
numClasses([-integer]).
|
|
|
```
|
|
|
|
|
|
### **<span dir="">Parameters</span>**
|
|
|
|
|
|
</div>
|
|
|
<figure>
|
|
|
|
|
|
| **<span dir="">Name</span>** | **<span dir="">Type</span>** | **<span dir="">Description</span>** | **<span dir="">Default</span>** |
|
|
|
|------------------------------|------------------------------|-------------------------------------|---------------------------------|
|
|
|
| <span dir="">classesNum</span> | <span dir="">-integer</span> | <span dir="">Number of classes</span> | <span dir="">-</span> |
|
|
|
|
|
|
</figure>
|
|
|
<div>
|
|
|
|
|
|
---
|
|
|
|
|
|
## <span dir="">getTolerance/1</span>
|
|
|
|
|
|
</div><span dir="">Returns the tolerance of the model.</span>
|
|
|
|
|
|
```prolog
|
|
|
%% part of the predicate definition
|
|
|
getTolerance([-float32]).
|
|
|
```
|
|
|
|
|
|
### **<span dir="">Parameters</span>**
|
|
|
|
|
|
<figure>
|
|
|
|
|
|
| **<span dir="">Name</span>** | **<span dir="">Type</span>** | **<span dir="">Description</span>** | **<span dir="">Default</span>** |
|
|
|
|------------------------------|------------------------------|-------------------------------------|---------------------------------|
|
|
|
| <span dir="">tolerance</span> | <span dir="">-float32</span> | <span dir="">returns the current tolerance</span> | <span dir="">-</span> |
|
|
|
|
|
|
</figure>
|
|
|
<div>
|
|
|
|
|
|
---
|
|
|
|
|
|
## <span dir="">modifyTolerance/1</span>
|
|
|
|
|
|
<span dir="">Modifies the tolerance of the model.</span>
|
|
|
|
|
|
```prolog
|
|
|
%% part of the predicate definition
|
|
|
modifyTolerance(+float32).
|
|
|
```
|
|
|
|
|
|
### **<span dir="">Parameters</span>**
|
|
|
|
|
|
</div>
|
|
|
<figure>
|
|
|
|
|
|
| **<span dir="">Name</span>** | **<span dir="">Type</span>** | **<span dir="">Description</span>** | **<span dir="">Default</span>** |
|
|
|
|------------------------------|------------------------------|-------------------------------------|---------------------------------|
|
|
|
| <span dir="">tolerance</span> | <span dir="">+float32</span> | <span dir="">changes the tolerance</span> | <span dir="">1e-6</span> |
|
|
|
|
|
|
</figure>
|
|
|
<div>
|
|
|
|
|
|
---
|
|
|
|
|
|
## <span dir="">train/10</span>
|
|
|
|
|
|
<span dir="">Kurze beschreibung mit evt. hinweisen</span>
|
|
|
|
|
|
```prolog
|
|
|
%% part of the predicate definition
|
|
|
train( +pointer(float_array), +integer, +integer,
|
|
|
+pointer(float_array), +integer,
|
|
|
+integer,
|
|
|
+string,
|
|
|
+integer , +float32,
|
|
|
[-float32]).
|
|
|
```
|
|
|
|
|
|
### **<span dir="">Parameters</span>**
|
|
|
| **<span dir="">Name</span>** | **<span dir="">Type</span>** | **<span dir="">Description</span>** | **<span dir="">Default</span>** |
|
|
|
|------------------------------|------------------------------|-------------------------------------|---------------------------------|
|
|
|
| <span dir="">data</span> | <span dir="">+matrix</span> | <span dir="">Dataset for training AdaBoost</span> | <span dir="">-</span> |
|
|
|
| <span dir="">labels</span> | <span dir="">+vector</span> | <span dir="">Labels for the training set</span> | <span dir="">-</span> |
|
|
|
| <span dir="">numClasses</span> | <span dir="">+integer</span> | <span dir="">The number of classes to classify data into</span> | <span dir="">-</span> |
|
|
|
| <span dir="">learner</span> | <span dir="">+string</span> | <span dir="">The type of weak learner to use: “decision_stump”, or “perceptron”</span> | <span dir="">“decision_stump”</span> |
|
|
|
| <span dir="">iterations</span> | <span dir="">+integer</span> | <span dir="">The maximum number of boosting iterations to be run (0 will run until convergence.)</span> | <span dir="">100</span> |
|
|
|
| <span dir="">tolerance</span> | <span dir="">+float</span> | <span dir="">The tolerance for change in values of the weighted error during training</span> | <span dir="">1e-6</span> |
|
|
|
| <span dir="">error</span> | <span dir="">-float</span> | <span dir="">double upper bound training error</span> | <span dir="">-</span> |
|
|
|
|
|
|
</div>
|
|
|
<div>
|
|
|
|
|
|
---
|
|
|
|
|
|
# <span dir="">Connected Links/Resources</span>
|
|
|
|
|
|
<span dir="">If you want a more detailed explanation, then go to the python documentation. There is most of the time a good explanation on how the methods work and about what the parameters do.</span>
|
|
|
|
|
|
* [**MLpack::Adaboost_C++\_documentation**](https://www.mlpack.org/doc/stable/doxygen/classmlpack_1_1adaboost_1_1AdaBoost.html)
|
|
|
* [**MLpack::Adaboost_Python_documentation**](https://www.mlpack.org/doc/stable/python_documentation.html#adaboost)
|
|
|
|
|
|
<span dir="">added some of the links from the python documentation</span>
|
|
|
|
|
|
* [**AdaBoost on Wikipedia**](https://en.wikipedia.org/wiki/AdaBoost)
|
|
|
* [**Improved boosting algorithms using confidence-rated predictions (pdf)**](http://rob.schapire.net/papers/SchapireSi98.pdf)
|
|
|
* Perceptron
|
|
|
* Decision Stump
|
|
|
|
|
|
</div> |
|
|
\ No newline at end of file |