AdaBoost
An implementation of the AdaBoost MH (Adaptive Boosting) algorithm for classification.
:- use_module('path/to/.../src/methods/adaboost/adaboost.pl').
%% usage example
TrainData = [5.1,3.5,1.4, 4.9,3.0,1.4, 4.7,3.2,1.3, 4.6,3.1,1.5],
TestData = [3,2,0, 5,1,4, 0,0,4, 3,3,5, 0,5,5, 2,5,5],
adaboost_initModelWithTraining(TrainData, 3, [0,1,0,1], 2, perceptron, 50, 0.0001),
adaboost_classify(TestData, 3, PredictionList, ProbabilitiesList, _).
Available Predicates
- adaboost_initModelWithTraining/7
- adaboost_initModelNoTraining/2
- adaboost_classify/5
- adaboost_numClasses/1
- adaboost_getTolerance/1
- adaboost_modifyTolerance/1
- adaboost_train8
adaboost_initModelWithTraining/7
Needs to be called first before all other predicates exept initModelNoTraining!
Initiates the Adaboostmodel and trains it, so classify can be used immediately.
%% predicate definition
adaboost_initModelWithTraining(MatList, MatRows, VecList, NumClasses, Learner, Iterations, Tolerance) :-
NumClasses >= 0,
Iterations >= 0,
Tolerance > 0,
convert_list_to_float_array(MatList, MatRows, array(Xsize, Xrownum, X)),
convert_list_to_float_array(VecList, array(Ysize, Y)),
initModelWithTrainingI(X, Xsize, Xrownum, Y, Ysize, NumClasses, Learner, Iterations, Tolerance).
%% foreign c++ predicate definition
foreign(initModelWithTraining, c, initModelWithTrainingI( +pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
+integer,
+string,
+integer , +float32)).
Parameters
Name | Type | Description | Default |
---|---|---|---|
data | +matrix | Dataset for training AdaBoost | - |
labels | +vector | Labels for the training set | - |
numClasses | +integer | The number of classes to classify data into | - |
learner | +string | The type of weak learner to use: “decision_stump”, or “perceptron” | “decision_stump” |
iterations | +integer | The maximum number of boosting iterations to be run (0 will run until convergence.) | 100 |
tolerance | +float | The tolerance for change in values of the weighted error during training | 1e-6 |
adaboost_initModelNoTraining/2
Needs to be called first before all other predicates exept initModelWithTraining!
%% predicate definition
adaboost_initModelNoTraining(Tolerance, Learner) :-
Tolerance > 0,
initModelNoTrainingI(Tolerance, Learner).
%% foreign c++ predicate definition
foreign(initModelNoTraining, c, initModelNoTrainingI(+float32, +string)).
Parameters
Name | Type | Description | Default |
---|---|---|---|
tolerance | +float | The tolerance for change in values of the weighted error during training | 1e-6 |
learner | +string | The type of weak learner to use: “decision_stump”, or “perceptron” | “decision_stump” |
adaboost_classify/5
Classifies the given data into the number of classes the model was trained for.
%% predicate definition
adaboost_classify(TestList, TestRows, PredicList, ProbsList, ZRows) :-
convert_list_to_float_array(TestList, TestRows, array(Xsize, Xrownum, X)),
classifyI(X, Xsize, Xrownum, Y, Ysize, Z, ZCols, ZRows),
convert_float_array_to_list(Y, Ysize, PredicList),
convert_float_array_to_2d_list(Z, ZCols, ZRows, ProbsList).
%% foreign c++ predicate definition
foreign(classify, c, classifyI( +pointer(float_array), +integer, +integer,
-pointer(float_array), -integer,
-pointer(float_array), -integer, -integer)).
Parameters
Name | Type | Description | Default |
---|---|---|---|
test | +matrix | Test dataset | - |
predictions | -vector | Predicted labels for the test set | - |
probabilities | -matrix | Predicted class probabilities for each point in the test set | - |
adaboost_numClasses/1
Returns the amount of classes defined in the model for classification.
%% predicate definition
adaboost_numClasses(ClassesNum) :-
numClassesI(ClassesNum).
%% foreign c++ predicate definition
foreign(numClasses, c, numClassesI([-integer])).
Parameters
Name | Type | Description | Default |
---|---|---|---|
classesNum | -integer | Number of classes | - |
adaboost_getTolerance/1
%% predicate definition
adaboost_getTolerance(Tolerance) :-
getToleranceI(Tolerance).
%% foreign c++ predicate definition
foreign(getTolerance, c, getToleranceI([-float32])).
Parameters
Name | Type | Description | Default |
---|---|---|---|
tolerance | -float32 | returns the current tolerance | - |
adaboost_modifyTolerance/1
Modifies the tolerance of the model.
%% predicate definition
adaboost_modifyTolerance(NewTolerance) :-
NewTolerance > 0,
modifyToleranceI(NewTolerance).
%% foreign c++ predicate definition
foreign(modifyTolerance, c, modifyToleranceI(+float32)).
Parameters
Name | Type | Description | Default |
---|---|---|---|
tolerance | +float32 | changes the tolerance | 1e-6 |
adaboost_train/8
Kurze beschreibung mit evt. hinweisen
%% predicate definition
adaboost_train(MatList, MatRows, VecList, NumClasses, Learner, Iterations, Tolerance, Error) :-
NumClasses >= 0,
Iterations >= 0,
Tolerance >= 0,
convert_list_to_float_array(MatList, MatRows, array(Xsize, Xrownum, X)),
convert_list_to_float_array(VecList, array(Ysize, Y)),
trainI(X, Xsize, Xrownum, Y, Ysize, NumClasses, Learner, Iterations, Tolerance, Error).
%% foreign c++ predicate definition
foreign(train, c, trainI( +pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
+integer,
+string,
+integer , +float32,
[-float32])).
Parameters
Name | Type | Description | Default |
---|---|---|---|
data | +matrix | Dataset for training AdaBoost | - |
labels | +vector | Labels for the training set | - |
numClasses | +integer | The number of classes to classify data into | - |
learner | +string | The type of weak learner to use: “decision_stump”, or “perceptron” | “decision_stump” |
iterations | +integer | The maximum number of boosting iterations to be run (0 will run until convergence.) | 100 |
tolerance | +float | The tolerance for change in values of the weighted error during training | 1e-6 |
error | -float | double upper bound training error | - |
Connected Links/Resources
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.
added some of the links from the python documentation