PLearn 0.1
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Static Protected Member Functions | Protected Attributes | Private Types | Private Member Functions
PLearn::MultiTaskSeparationSplitter Class Reference

Splitter that removes a task for test and keeps the others for training. More...

#include <MultiTaskSeparationSplitter.h>

Inheritance diagram for PLearn::MultiTaskSeparationSplitter:
Inheritance graph
[legend]
Collaboration diagram for PLearn::MultiTaskSeparationSplitter:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 MultiTaskSeparationSplitter ()
 Default constructor.
virtual int nsplits () const
 Returns the number of available different "splits".
virtual int nSetsPerSplit () const
 Returns the number of sets per split.
virtual TVec< VMatgetSplit (int i=0)
 Returns split number i.
virtual void setDataSet (VMat the_dataset)
 Sets the dataset on which the splits are to be based.
virtual string classname () const
virtual OptionListgetOptionList () const
virtual OptionMapgetOptionMap () const
virtual RemoteMethodMapgetRemoteMethodMap () const
virtual
MultiTaskSeparationSplitter
deepCopy (CopiesMap &copies) const
virtual void build ()
 Post-constructor.
virtual void makeDeepCopyFromShallowCopy (CopiesMap &copies)
 Transforms a shallow copy into a deep copy.

Static Public Member Functions

static string _classname_ ()
static OptionList_getOptionList_ ()
static RemoteMethodMap_getRemoteMethodMap_ ()
static Object_new_instance_for_typemap_ ()
static bool _isa_ (const Object *o)
static void _static_initialize_ ()
static const PPathdeclaringFile ()

Public Attributes

int numsplits
 Number of splits. If <= 0, then it is set to nclasses.
TVec< inttasks
 Tasks to isolate from the others. Determines number of splits.
bool select_tasks_randomly
 Indication that the tasks should be chose at random.
bool append_train
 Indication that the training set should be appended to the split sets lists.
real seed
 Seed for random generator.

Static Public Attributes

static StaticInitializer _static_initializer_

Static Protected Member Functions

static void declareOptions (OptionList &ol)
 Declares the class options.

Protected Attributes

PP< PRandomrandom_gen

Private Types

typedef Splitter inherited

Private Member Functions

void build_ ()
 This does the actual building.

Detailed Description

Splitter that removes a task for test and keeps the others for training.

This splitter is intended to measure inductive transfer performance from some tasks to other tasks.

Definition at line 56 of file MultiTaskSeparationSplitter.h.


Member Typedef Documentation

Reimplemented from PLearn::Splitter.

Definition at line 58 of file MultiTaskSeparationSplitter.h.


Constructor & Destructor Documentation

PLearn::MultiTaskSeparationSplitter::MultiTaskSeparationSplitter ( )

Default constructor.

Definition at line 58 of file MultiTaskSeparationSplitter.cc.

References random_gen.

    :Splitter(), numsplits(-1), select_tasks_randomly(1), append_train(0), seed(-1)
{
    random_gen = new PRandom();
}

Member Function Documentation

string PLearn::MultiTaskSeparationSplitter::_classname_ ( ) [static]

Reimplemented from PLearn::Splitter.

Definition at line 56 of file MultiTaskSeparationSplitter.cc.

OptionList & PLearn::MultiTaskSeparationSplitter::_getOptionList_ ( ) [static]

Reimplemented from PLearn::Splitter.

Definition at line 56 of file MultiTaskSeparationSplitter.cc.

RemoteMethodMap & PLearn::MultiTaskSeparationSplitter::_getRemoteMethodMap_ ( ) [static]

Reimplemented from PLearn::Splitter.

Definition at line 56 of file MultiTaskSeparationSplitter.cc.

bool PLearn::MultiTaskSeparationSplitter::_isa_ ( const Object o) [static]

Reimplemented from PLearn::Splitter.

Definition at line 56 of file MultiTaskSeparationSplitter.cc.

Object * PLearn::MultiTaskSeparationSplitter::_new_instance_for_typemap_ ( ) [static]

Reimplemented from PLearn::Object.

Definition at line 56 of file MultiTaskSeparationSplitter.cc.

StaticInitializer MultiTaskSeparationSplitter::_static_initializer_ & PLearn::MultiTaskSeparationSplitter::_static_initialize_ ( ) [static]

Reimplemented from PLearn::Splitter.

Definition at line 56 of file MultiTaskSeparationSplitter.cc.

void PLearn::MultiTaskSeparationSplitter::build ( ) [virtual]

Post-constructor.

The normal implementation should call simply inherited::build(), then this class's build_(). This method should be callable again at later times, after modifying some option fields to change the "architecture" of the object.

Reimplemented from PLearn::Object.

Definition at line 108 of file MultiTaskSeparationSplitter.cc.

References PLearn::Object::build(), and build_().

Referenced by setDataSet().

Here is the call graph for this function:

Here is the caller graph for this function:

void PLearn::MultiTaskSeparationSplitter::build_ ( ) [private]

This does the actual building.

Reimplemented from PLearn::Object.

Definition at line 83 of file MultiTaskSeparationSplitter.cc.

References PLearn::Splitter::dataset, i, PLearn::TVec< T >::length(), numsplits, PLERROR, random_gen, PLearn::TVec< T >::resize(), seed, select_tasks_randomly, and tasks.

Referenced by build().

{
    if (seed != 0)
        random_gen->manual_seed(long(seed));

    if(tasks.length() == 0 && dataset)
    {
        if(numsplits <= 0) PLERROR("MultiTaskSeparationSplitter::build_(): numsplits must be > 0");

        tasks.resize(numsplits);
        int it = 0;
        for(int i=0; i<numsplits; i++)
        {
            if(select_tasks_randomly)
                random_gen->uniform_multinomial_sample(dataset->targetsize());
            else
            {
                tasks[i] = it;
                it = (it+1)%dataset->targetsize();
            }
        }
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

string PLearn::MultiTaskSeparationSplitter::classname ( ) const [virtual]

Reimplemented from PLearn::Object.

Definition at line 56 of file MultiTaskSeparationSplitter.cc.

void PLearn::MultiTaskSeparationSplitter::declareOptions ( OptionList ol) [static, protected]

Declares the class options.

Reimplemented from PLearn::Splitter.

Definition at line 64 of file MultiTaskSeparationSplitter.cc.

References append_train, PLearn::OptionBase::buildoption, PLearn::declareOption(), PLearn::Splitter::declareOptions(), numsplits, seed, select_tasks_randomly, and tasks.

{
    declareOption(ol, "tasks", &MultiTaskSeparationSplitter::tasks, OptionBase::buildoption,
                  "Tasks to isolate from the others. Determines number of splits.");
    declareOption(ol, "numsplits", &MultiTaskSeparationSplitter::numsplits, OptionBase::buildoption,
                  "Number of splits. Ignored if tasks is not empty.");
    declareOption(ol, "select_tasks_randomly", &MultiTaskSeparationSplitter::select_tasks_randomly, OptionBase::buildoption,
                  "If tasks is not specified, indication that the tasks to isolate from the others should be chosen at random.\n"
                  "Otherwise, the tasks are selected by order of their index.");
    declareOption(ol, "append_train", &MultiTaskSeparationSplitter::append_train, OptionBase::buildoption,
                  "Indication that the training set should be appended to the split sets lists.");

    declareOption(ol, "seed", &MultiTaskSeparationSplitter::seed, OptionBase::buildoption,
        "Seed of random generator");

    // Now call the parent class' declareOptions
    inherited::declareOptions(ol);
}

Here is the call graph for this function:

static const PPath& PLearn::MultiTaskSeparationSplitter::declaringFile ( ) [inline, static]

Reimplemented from PLearn::Splitter.

Definition at line 108 of file MultiTaskSeparationSplitter.h.

:
    //#####  Protected Options  ###############################################
MultiTaskSeparationSplitter * PLearn::MultiTaskSeparationSplitter::deepCopy ( CopiesMap copies) const [virtual]

Reimplemented from PLearn::Splitter.

Definition at line 56 of file MultiTaskSeparationSplitter.cc.

OptionList & PLearn::MultiTaskSeparationSplitter::getOptionList ( ) const [virtual]

Reimplemented from PLearn::Object.

Definition at line 56 of file MultiTaskSeparationSplitter.cc.

OptionMap & PLearn::MultiTaskSeparationSplitter::getOptionMap ( ) const [virtual]

Reimplemented from PLearn::Object.

Definition at line 56 of file MultiTaskSeparationSplitter.cc.

RemoteMethodMap & PLearn::MultiTaskSeparationSplitter::getRemoteMethodMap ( ) const [virtual]

Reimplemented from PLearn::Object.

Definition at line 56 of file MultiTaskSeparationSplitter.cc.

TVec< VMat > PLearn::MultiTaskSeparationSplitter::getSplit ( int  i = 0) [virtual]

Returns split number i.

Implements PLearn::Splitter.

Definition at line 134 of file MultiTaskSeparationSplitter.cc.

References PLearn::add_missing(), append_train, PLearn::Splitter::dataset, PLearn::get_input(), i, MISSING_VALUE, PLearn::multi_target_one_hot(), nsplits(), PLERROR, PLearn::TVec< T >::push_back(), PLearn::split(), tasks, and PLearn::VMat::width().

{

    if (k >= nsplits())
        PLERROR("MultiTaskSeparationSplitter::getSplit() - k (%d) cannot be greater than "
                " the number of splits (%d)", k, nsplits());

    int task_k = tasks[k];
    Vec row(dataset->width());
    TVec<int> miss_cols_train(0);
    miss_cols_train.push_back(dataset->inputsize()+task_k);
    TVec<int> miss_cols_test(0);
    for(int i=0; i<dataset->targetsize(); i++)
    {
        if(task_k != i)
            miss_cols_test.push_back(dataset->inputsize()+i);
    }

    TVec<VMat> split(2);
    split[0] = get_input(multi_target_one_hot(add_missing(dataset,miss_cols_train),MISSING_VALUE,MISSING_VALUE),dataset->inputsize(),dataset->targetsize());
    split[1] = get_input(multi_target_one_hot(add_missing(dataset,miss_cols_test),MISSING_VALUE,MISSING_VALUE),dataset->inputsize(),dataset->targetsize());
    if(append_train)
    {
        split.resize(3);
        split[2] = split[0];
    }
    //split.append(split[0]);
    //if(append_train) split.append(get_input(multi_target_one_hot(add_missing(dataset,miss_cols_train),MISSING_VALUE,MISSING_VALUE),dataset->inputsize(),dataset->targetsize()));
    return split;
}

Here is the call graph for this function:

void PLearn::MultiTaskSeparationSplitter::makeDeepCopyFromShallowCopy ( CopiesMap copies) [virtual]

Transforms a shallow copy into a deep copy.

Reimplemented from PLearn::Splitter.

Definition at line 114 of file MultiTaskSeparationSplitter.cc.

References PLearn::deepCopyField(), PLearn::Splitter::makeDeepCopyFromShallowCopy(), random_gen, and tasks.

{
    inherited::makeDeepCopyFromShallowCopy(copies);

    deepCopyField(tasks, copies);
    deepCopyField(random_gen, copies);

    //PLERROR("MultiTaskSeparationSplitter::makeDeepCopyFromShallowCopy not fully (correctly) implemented yet!");
}

Here is the call graph for this function:

int PLearn::MultiTaskSeparationSplitter::nSetsPerSplit ( ) const [virtual]

Returns the number of sets per split.

Implements PLearn::Splitter.

Definition at line 129 of file MultiTaskSeparationSplitter.cc.

References append_train.

{
    return append_train ? 3 : 2;
}
int PLearn::MultiTaskSeparationSplitter::nsplits ( ) const [virtual]

Returns the number of available different "splits".

Implements PLearn::Splitter.

Definition at line 124 of file MultiTaskSeparationSplitter.cc.

References PLearn::TVec< T >::length(), and tasks.

Referenced by getSplit().

{
    return tasks.length();
}

Here is the call graph for this function:

Here is the caller graph for this function:

void PLearn::MultiTaskSeparationSplitter::setDataSet ( VMat  the_dataset) [virtual]

Sets the dataset on which the splits are to be based.

Reimplemented from PLearn::Splitter.

Definition at line 166 of file MultiTaskSeparationSplitter.cc.

References build(), and PLearn::Splitter::dataset.

{
    dataset = the_dataset;
    build();
}

Here is the call graph for this function:


Member Data Documentation

Reimplemented from PLearn::Splitter.

Definition at line 108 of file MultiTaskSeparationSplitter.h.

Indication that the training set should be appended to the split sets lists.

Definition at line 75 of file MultiTaskSeparationSplitter.h.

Referenced by declareOptions(), getSplit(), and nSetsPerSplit().

Number of splits. If <= 0, then it is set to nclasses.

Definition at line 64 of file MultiTaskSeparationSplitter.h.

Referenced by build_(), and declareOptions().

Seed for random generator.

Definition at line 78 of file MultiTaskSeparationSplitter.h.

Referenced by build_(), and declareOptions().

Indication that the tasks should be chose at random.

Otherwise, the tasks are selected by order of their index.

Definition at line 71 of file MultiTaskSeparationSplitter.h.

Referenced by build_(), and declareOptions().

Tasks to isolate from the others. Determines number of splits.

Definition at line 67 of file MultiTaskSeparationSplitter.h.

Referenced by build_(), declareOptions(), getSplit(), makeDeepCopyFromShallowCopy(), and nsplits().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines