Reinforcement Learning Toolbox 2.0
last updated:
General
Documentation
Manual
Tutorial
Class Reference
Master Thesis
Examples
Related Papers
Downloads
Links
News
mailto:webmaster
Main Page     Class Hierarchy   Compound List   File List   Compound Members   File Members

clocalregression.h

Go to the documentation of this file.
00001 #ifndef C_LOCALREGRESSION__H
00002 #define C_LOCALREGRESSION__H
00003 
00004 #include "cinputdata.h"
00005 
00006 
00007 #include "newmat/newmatio.h"
00008 
00009 #include <iostream>
00010 #include <limits> 
00011 
00012 class CDataSet;
00013 class CDataSet1D;
00014 class CDataSubSet;
00015 
00016 class CKDTree;
00017 class CKNearestNeighbors;
00018 
00019 class CLocalRegression : public CMapping<double>
00020 {
00021         protected:
00022                 CKDTree *kdTree;
00023                 CKNearestNeighbors *nearestNeighbors;
00024 
00025                 CDataSet *input;
00026                 CDataSet1D *output;
00027 
00028                 std::list<int> *subsetList;
00029                 DataSubset *subset;
00030 
00031                 int K;
00032 
00033                 virtual double doGetOutputValue(ColumnVector *vector);
00034         
00035         public:
00036                 CLocalRegression(CDataSet *input, CDataSet1D *output, int K);
00037                 virtual ~CLocalRegression();
00038 
00039                 
00040                 virtual double doRegression(ColumnVector *vector, DataSubset *subset) = 0;
00041 
00042                 DataSubset *getLastNearestNeighbors();
00043 
00044                 int getNumNearestNeighbors();
00045 };
00046 
00047 class CLocalRBFRegression : public CLocalRegression
00048 {
00049         protected:
00050                 ColumnVector *rbfFactors;
00051                 ColumnVector *sigma;
00052         public:
00053                 CLocalRBFRegression(CDataSet *input, CDataSet1D *output, int K, ColumnVector *sigma);
00054                 virtual ~CLocalRBFRegression();
00055 
00056                 virtual double doRegression(ColumnVector *vector, DataSubset *subset);
00057 
00058                 ColumnVector *getRBFFactors(ColumnVector *vector,DataSubset *subset);
00059 
00060                 ColumnVector *getLastRBFFactors();
00061 };
00062 
00063 class CLinearRegression : public CMapping<double>
00064 {
00065 protected:
00066         Matrix *X;
00067         ColumnVector *xVector;
00068         ColumnVector *yVector;
00069         
00070         ColumnVector *w;
00071         
00072         Matrix *X_pinv;
00073 
00074         int degree;
00075         
00076         int numDimensions;
00077         int xDim;
00078 
00079         void init(int l_degree, int numDataPoints, int numDimensions);
00080 
00081         virtual double doGetOutputValue(ColumnVector *input);
00082 public:
00083         double lambda;
00084 
00085         CLinearRegression(int degree, int numDataPoints, int numDimensions);
00086         CLinearRegression(int degree, CDataSet *dataSet, CDataSet1D *outputValues, DataSubset *subset);
00087         virtual ~CLinearRegression();
00088 
00089         virtual void getXVector(ColumnVector *input, ColumnVector *xVector);
00090         virtual void calculateRegressionMatrix(CDataSet *dataSet, CDataSet1D *outputValues, DataSubset *subset);
00091 
00092         
00093 };
00094 
00095 
00096 class CLocalLinearRegression :  public CLocalRegression
00097 {
00098 protected:
00099         CLinearRegression *regression;
00100 
00101 public:
00102         CLocalLinearRegression(CDataSet *input, CDataSet1D *output, int K, int degree, double lambda);
00103         ~CLocalLinearRegression();
00104 
00105         virtual double doRegression(ColumnVector *vector, DataSubset *subset);
00106 };
00107 
00108 
00109 
00110 
00111 #endif