|
PLearn 0.1
|
The first sentence should be a BRIEF DESCRIPTION of what the class does. More...
#include <ToBagClassifier.h>


Public Member Functions | |
| ToBagClassifier () | |
| Default constructor. | |
| virtual void | setTrainingSet (VMat training_set, bool call_forget=true) |
| Set training set. | |
| virtual int | targetsize () const |
| Targetsize is one more than the inner learner's targetsize. | |
| virtual void | computeCostsFromOutputs (const Vec &input, const Vec &output, const Vec &target, Vec &costs) const |
| Compute costs. | |
| virtual void | computeOutputAndCosts (const Vec &input, const Vec &target, Vec &output, Vec &costs) const |
| Overridden to be able to use the sub-learner's corresponding method. | |
| virtual void | computeOutputsAndCosts (const Mat &input, const Mat &target, Mat &output, Mat &costs) const |
| Currently using PLearner's simple version for code simplicity. | |
| virtual TVec< string > | getTestCostNames () const |
| Currently only compute classification error. | |
| virtual string | classname () const |
| virtual OptionList & | getOptionList () const |
| virtual OptionMap & | getOptionMap () const |
| virtual RemoteMethodMap & | getRemoteMethodMap () const |
| virtual ToBagClassifier * | deepCopy (CopiesMap &copies) const |
| virtual void | build () |
| Finish building the object; just call inherited::build followed by build_() | |
| virtual void | makeDeepCopyFromShallowCopy (CopiesMap &copies) |
| Transforms a shallow copy into a deep copy. | |
Static Public Member Functions | |
| static string | _classname_ () |
| Declares name and deepCopy methods. | |
| static OptionList & | _getOptionList_ () |
| static RemoteMethodMap & | _getRemoteMethodMap_ () |
| static Object * | _new_instance_for_typemap_ () |
| static bool | _isa_ (const Object *o) |
| static void | _static_initialize_ () |
| static const PPath & | declaringFile () |
Public Attributes | |
| int | n_classes |
Static Public Attributes | |
| static StaticInitializer | _static_initializer_ |
Protected Member Functions | |
| void | updateCostAndBagOutput (const Vec &target, const Vec &output, Vec &costs) const |
| Given a target and the corresponding output, update the 'bag_output' data matrix and compute the costs (which will be missing except for the last sample in a bag). | |
| void | fillSubTarget (const Vec &target) const |
| Fill 'sub_target' with all elements of 'target' but the last one. | |
Static Protected Member Functions | |
| static void | declareOptions (OptionList &ol) |
| Declares the class options. | |
Protected Attributes | |
| Vec | sub_target |
| Used to store the target forwarded to the inner learner. | |
| Mat | bag_output |
| Used to store outputs on a bag. | |
| Vec | votes |
| Used to store votes. | |
Private Types | |
| typedef EmbeddedLearner | inherited |
Private Member Functions | |
| void | build_ () |
| This does the actual building. | |
The first sentence should be a BRIEF DESCRIPTION of what the class does.
Place the rest of the class programmer documentation here. Doxygen supports Javadoc-style comments. See http://www.doxygen.org/manual.html
Definition at line 57 of file ToBagClassifier.h.
typedef EmbeddedLearner PLearn::ToBagClassifier::inherited [private] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 59 of file ToBagClassifier.h.
| PLearn::ToBagClassifier::ToBagClassifier | ( | ) |
| string PLearn::ToBagClassifier::_classname_ | ( | ) | [static] |
Declares name and deepCopy methods.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 61 of file ToBagClassifier.cc.
| OptionList & PLearn::ToBagClassifier::_getOptionList_ | ( | ) | [static] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 61 of file ToBagClassifier.cc.
| RemoteMethodMap & PLearn::ToBagClassifier::_getRemoteMethodMap_ | ( | ) | [static] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 61 of file ToBagClassifier.cc.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 61 of file ToBagClassifier.cc.
| Object * PLearn::ToBagClassifier::_new_instance_for_typemap_ | ( | ) | [static] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 61 of file ToBagClassifier.cc.
| StaticInitializer ToBagClassifier::_static_initializer_ & PLearn::ToBagClassifier::_static_initialize_ | ( | ) | [static] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 61 of file ToBagClassifier.cc.
| void PLearn::ToBagClassifier::build | ( | ) | [virtual] |
Finish building the object; just call inherited::build followed by build_()
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 94 of file ToBagClassifier.cc.
References PLearn::EmbeddedLearner::build(), and build_().
{
inherited::build();
build_();
}

| void PLearn::ToBagClassifier::build_ | ( | ) | [private] |
This does the actual building.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 87 of file ToBagClassifier.cc.
Referenced by build().
{
}

| string PLearn::ToBagClassifier::classname | ( | ) | const [virtual] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 61 of file ToBagClassifier.cc.
| void PLearn::ToBagClassifier::computeCostsFromOutputs | ( | const Vec & | input, |
| const Vec & | output, | ||
| const Vec & | target, | ||
| Vec & | costs | ||
| ) | const [virtual] |
Compute costs.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 103 of file ToBagClassifier.cc.
References PLearn::EmbeddedLearner::computeCostsFromOutputs(), fillSubTarget(), sub_target, and updateCostAndBagOutput().
{
fillSubTarget(target);
inherited::computeCostsFromOutputs(input, output, sub_target, costs);
updateCostAndBagOutput(target, output, costs);
}

| void PLearn::ToBagClassifier::computeOutputAndCosts | ( | const Vec & | input, |
| const Vec & | target, | ||
| Vec & | output, | ||
| Vec & | costs | ||
| ) | const [virtual] |
Overridden to be able to use the sub-learner's corresponding method.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 116 of file ToBagClassifier.cc.
References PLearn::EmbeddedLearner::computeOutputAndCosts(), fillSubTarget(), sub_target, and updateCostAndBagOutput().
{
fillSubTarget(target);
inherited::computeOutputAndCosts(input, sub_target, output, costs);
updateCostAndBagOutput(target, output, costs);
}

| virtual void PLearn::ToBagClassifier::computeOutputsAndCosts | ( | const Mat & | input, |
| const Mat & | target, | ||
| Mat & | output, | ||
| Mat & | costs | ||
| ) | const [inline, virtual] |
Currently using PLearner's simple version for code simplicity.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 91 of file ToBagClassifier.h.
{
PLearner::computeOutputsAndCosts(input, target, output, costs);
}
| void PLearn::ToBagClassifier::declareOptions | ( | OptionList & | ol | ) | [static, protected] |
Declares the class options.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 73 of file ToBagClassifier.cc.
References PLearn::OptionBase::buildoption, PLearn::declareOption(), PLearn::EmbeddedLearner::declareOptions(), and n_classes.
{
declareOption(ol, "n_classes", &ToBagClassifier::n_classes,
OptionBase::buildoption,
"Number of classes in the dataset. This option is required to\n"
"compute the confusion matrix, but may be ignored otherwise.");
// Now call the parent class' declareOptions
inherited::declareOptions(ol);
}

| static const PPath& PLearn::ToBagClassifier::declaringFile | ( | ) | [inline, static] |
| ToBagClassifier * PLearn::ToBagClassifier::deepCopy | ( | CopiesMap & | copies | ) | const [virtual] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 61 of file ToBagClassifier.cc.
| void PLearn::ToBagClassifier::fillSubTarget | ( | const Vec & | target | ) | const [protected] |
Fill 'sub_target' with all elements of 'target' but the last one.
Definition at line 128 of file ToBagClassifier.cc.
References PLearn::TVec< T >::length(), PLearn::TVec< T >::resize(), sub_target, and PLearn::TVec< T >::subVec().
Referenced by computeCostsFromOutputs(), and computeOutputAndCosts().
{
sub_target.resize(target.length() - 1);
sub_target << target.subVec(0, sub_target.length());
}


| OptionList & PLearn::ToBagClassifier::getOptionList | ( | ) | const [virtual] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 61 of file ToBagClassifier.cc.
| OptionMap & PLearn::ToBagClassifier::getOptionMap | ( | ) | const [virtual] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 61 of file ToBagClassifier.cc.
| RemoteMethodMap & PLearn::ToBagClassifier::getRemoteMethodMap | ( | ) | const [virtual] |
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 61 of file ToBagClassifier.cc.
| TVec< string > PLearn::ToBagClassifier::getTestCostNames | ( | ) | const [virtual] |
Currently only compute classification error.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 138 of file ToBagClassifier.cc.
References PLearn::TVec< T >::append(), i, j, n_classes, and PLearn::tostring().
{
TVec<string> costs;
costs.append("class_error");
if (n_classes > 0)
for (int i = 0; i < n_classes; i++)
for (int j = 0; j < n_classes; j++)
costs.append("cm_" + tostring(i) + tostring(j));
return costs;
}

| void PLearn::ToBagClassifier::makeDeepCopyFromShallowCopy | ( | CopiesMap & | copies | ) | [virtual] |
Transforms a shallow copy into a deep copy.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 152 of file ToBagClassifier.cc.
References bag_output, PLearn::deepCopyField(), PLearn::EmbeddedLearner::makeDeepCopyFromShallowCopy(), sub_target, and votes.
{
inherited::makeDeepCopyFromShallowCopy(copies);
deepCopyField(sub_target, copies);
deepCopyField(bag_output, copies);
deepCopyField(votes, copies);
}

| void PLearn::ToBagClassifier::setTrainingSet | ( | VMat | training_set, |
| bool | call_forget = true |
||
| ) | [virtual] |
Set training set.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 163 of file ToBagClassifier.cc.
References PLearn::VMatrix::defineSizes(), PLearn::get_pointer(), PLearn::VMat::length(), PLCHECK, PLearn::EmbeddedLearner::setInnerLearnerTrainingSet(), and PLearn::VMat::width().
{
// Remove bag information (last target).
PLCHECK( training_set->weightsize() == 0 &&
training_set->extrasize() == 0 ); // Not compatible yet.
PP<SubVMatrix> sub_train_set = new SubVMatrix(training_set, 0, 0,
training_set->length(),
training_set->width() - 1);
sub_train_set->defineSizes(training_set->inputsize(),
training_set->targetsize() - 1,
training_set->weightsize(),
training_set->extrasize());
setInnerLearnerTrainingSet(get_pointer(sub_train_set), call_forget);
PLearner::setTrainingSet(training_set, call_forget);
}

| int PLearn::ToBagClassifier::targetsize | ( | ) | const [virtual] |
Targetsize is one more than the inner learner's targetsize.
Reimplemented from PLearn::EmbeddedLearner.
Definition at line 182 of file ToBagClassifier.cc.
References PLearn::EmbeddedLearner::learner_.
{
return learner_->targetsize() + 1;
}
| void PLearn::ToBagClassifier::updateCostAndBagOutput | ( | const Vec & | target, |
| const Vec & | output, | ||
| Vec & | costs | ||
| ) | const [protected] |
Given a target and the corresponding output, update the 'bag_output' data matrix and compute the costs (which will be missing except for the last sample in a bag).
Definition at line 190 of file ToBagClassifier.cc.
References PLearn::TMat< T >::appendRow(), PLearn::argmax(), bag_output, PLearn::columnSum(), PLearn::TVec< T >::fill(), i, PLearn::is_equal(), PLearn::is_missing(), PLearn::TVec< T >::lastElement(), PLearn::TVec< T >::length(), MISSING_VALUE, n_classes, PLearn::PLearner::nTestCosts(), PLASSERT, PLearn::TMat< T >::resize(), PLearn::TVec< T >::resize(), PLearn::TVec< T >::subVec(), PLearn::sum(), PLearn::SumOverBagsVariable::TARGET_COLUMN_FIRST, PLearn::SumOverBagsVariable::TARGET_COLUMN_LAST, votes, and PLearn::TMat< T >::width().
Referenced by computeCostsFromOutputs(), and computeOutputAndCosts().
{
costs.resize(nTestCosts());
costs.fill(MISSING_VALUE);
int bag_info = int(round(target.lastElement()));
if (bag_info & SumOverBagsVariable::TARGET_COLUMN_FIRST)
bag_output.resize(0, 0);
// Ignore missing outputs from learner.
if (is_missing(output[0])) {
#ifdef BOUNDCHECK
for (int i = 1; i < output.length(); i++) {
PLASSERT( is_missing(output[i]) );
}
#endif
return;
}
// Ensure the distribution probabilities sum to 1. We relax a
// bit the default tolerance as probabilities using
// exponentials could suffer numerical imprecisions.
PLASSERT( is_equal( sum(output), 1., 1., 1e-5, 1e-5 ) );
bag_output.appendRow(output);
if (bag_info & SumOverBagsVariable::TARGET_COLUMN_LAST) {
// Perform majority vote.
votes.resize(bag_output.width());
columnSum(bag_output, votes);
int target_class = int(round(target[0]));
int prediction = argmax(votes);
if (prediction == target_class)
costs[0] = 0;
else
costs[0] = 1;
if (n_classes > 0) {
int i_start = 1 + target_class * n_classes;
costs.subVec(i_start, n_classes).fill(0);
costs[i_start + prediction] = 1;
}
}
}


Reimplemented from PLearn::EmbeddedLearner.
Definition at line 105 of file ToBagClassifier.h.
Mat PLearn::ToBagClassifier::bag_output [mutable, protected] |
Used to store outputs on a bag.
Definition at line 120 of file ToBagClassifier.h.
Referenced by makeDeepCopyFromShallowCopy(), and updateCostAndBagOutput().
Definition at line 64 of file ToBagClassifier.h.
Referenced by declareOptions(), getTestCostNames(), and updateCostAndBagOutput().
Vec PLearn::ToBagClassifier::sub_target [mutable, protected] |
Used to store the target forwarded to the inner learner.
Definition at line 117 of file ToBagClassifier.h.
Referenced by computeCostsFromOutputs(), computeOutputAndCosts(), fillSubTarget(), and makeDeepCopyFromShallowCopy().
Vec PLearn::ToBagClassifier::votes [mutable, protected] |
Used to store votes.
Definition at line 123 of file ToBagClassifier.h.
Referenced by makeDeepCopyFromShallowCopy(), and updateCostAndBagOutput().
1.7.4