edu.udo.cs.myRVM
Class ConstructiveRegression

java.lang.Object
  extended by edu.udo.cs.myRVM.RVMBase
      extended by edu.udo.cs.myRVM.ConstructiveRegression

public class ConstructiveRegression
extends RVMBase

Constructive RVM for regression problems (see bla).

Version:
$Id: ConstructiveRegression.java,v 1.7 2006/09/30 00:05:31 ingomierswa Exp $
Author:
Piotr Kasprzak

Field Summary
protected  Jama.Matrix A
           
protected  double[] alpha
           
protected  java.util.LinkedList<java.lang.Integer> basisSet
           
protected  double beta
           
protected  Jama.Matrix mu
           
protected  double[][] phi
           
protected  Jama.Matrix PHI_t
           
protected  double q
           
protected  double s
           
protected  Jama.Matrix SIGMA
           
protected  Jama.Matrix SIGMA_chol
           
protected  double[][] t
           
protected  double[] tVector
           
protected  double[][] x
          Data shared accross various methods
 
Fields inherited from class edu.udo.cs.myRVM.RVMBase
model, parameter, problem
 
Constructor Summary
ConstructiveRegression(RegressionProblem problem, Parameter parameter)
          Constructor
 
Method Summary
protected  double[] convertListToDoubleArray(java.util.List list)
          Take a list holding "Double"-objects and return an "double[]"
protected  void deleteBasis(int selectedBasis)
          Delete a basis function from the model.
protected  void includeBasis(int selectedBasis)
          Include a basis function into the model.
protected  double innerProduct(double[] x, double[] y)
          Return the inner product of x and y (x.length == y.length assumed)
 Model learn()
          The hard work is done here
protected  void prune(java.util.LinkedList<java.lang.Integer> basisSet)
          Create pruned versions of all important matrices / vectors so that only rows / columns matching the indices in basisSet are kept.
protected  void reestimateAlpha(int selectedBasis)
          Reestimate alpha by setting it to the value which maximizes the marginal likelihood: alpha_i = s^2_i / (q^2_i - s_i)
 java.lang.String toString()
          Identify the RVM
protected  void updateBeta()
          Update beta (same as for the "normal" regression rvm)
protected  void updateCriteriumScalars(int selectedBasis)
          Compute the scalars s_m, q_m which are part of the criterium for inclusion / deletion of the given basis m: S_m = beta * phi^t_m * phi_m - beta^2 * phi^t_m * PHI * SIGMA * PHI^t * phi_m Q_m = beta * phi^t_m * t - beta^2 * phi^t_m * PHI * SIGMA * PHI^t * t s_m = alpha_m * S_m / (alpha_m - S_m) q_m = alpha_m * Q_m / (alpha_m - S_m)
protected  void updateMu()
          Update the mean of the weight posterior distribution (mu): mu = beta * SIGMA * PHI^t * t
protected  void updateSIGMA()
          Update the covariance Matrix of the weight posterior distribution (SIGMA) along with its cholesky factor: SIGMA = (A + beta * PHI^t * PHI)^{-1} SIGMA_chol with SIGMA_chol * SIGMA_chol^t = SIGMA
 
Methods inherited from class edu.udo.cs.myRVM.RVMBase
getModel
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

x

protected double[][] x
Data shared accross various methods


t

protected double[][] t

tVector

protected double[] tVector

phi

protected double[][] phi

PHI_t

protected Jama.Matrix PHI_t

alpha

protected double[] alpha

beta

protected double beta

A

protected Jama.Matrix A

SIGMA

protected Jama.Matrix SIGMA

SIGMA_chol

protected Jama.Matrix SIGMA_chol

mu

protected Jama.Matrix mu

s

protected double s

q

protected double q

basisSet

protected java.util.LinkedList<java.lang.Integer> basisSet
Constructor Detail

ConstructiveRegression

public ConstructiveRegression(RegressionProblem problem,
                              Parameter parameter)
Constructor

Method Detail

convertListToDoubleArray

protected double[] convertListToDoubleArray(java.util.List list)
Take a list holding "Double"-objects and return an "double[]"


innerProduct

protected double innerProduct(double[] x,
                              double[] y)
Return the inner product of x and y (x.length == y.length assumed)


prune

protected void prune(java.util.LinkedList<java.lang.Integer> basisSet)
Create pruned versions of all important matrices / vectors so that only rows / columns matching the indices in basisSet are kept.


updateSIGMA

protected void updateSIGMA()
Update the covariance Matrix of the weight posterior distribution (SIGMA) along with its cholesky factor: SIGMA = (A + beta * PHI^t * PHI)^{-1} SIGMA_chol with SIGMA_chol * SIGMA_chol^t = SIGMA


updateMu

protected void updateMu()
Update the mean of the weight posterior distribution (mu): mu = beta * SIGMA * PHI^t * t


updateCriteriumScalars

protected void updateCriteriumScalars(int selectedBasis)
Compute the scalars s_m, q_m which are part of the criterium for inclusion / deletion of the given basis m: S_m = beta * phi^t_m * phi_m - beta^2 * phi^t_m * PHI * SIGMA * PHI^t * phi_m Q_m = beta * phi^t_m * t - beta^2 * phi^t_m * PHI * SIGMA * PHI^t * t s_m = alpha_m * S_m / (alpha_m - S_m) q_m = alpha_m * Q_m / (alpha_m - S_m)


reestimateAlpha

protected void reestimateAlpha(int selectedBasis)
Reestimate alpha by setting it to the value which maximizes the marginal likelihood: alpha_i = s^2_i / (q^2_i - s_i)


includeBasis

protected void includeBasis(int selectedBasis)
Include a basis function into the model.


deleteBasis

protected void deleteBasis(int selectedBasis)
Delete a basis function from the model.


updateBeta

protected void updateBeta()
Update beta (same as for the "normal" regression rvm)


learn

public Model learn()
The hard work is done here

Specified by:
learn in class RVMBase


toString

public java.lang.String toString()
Identify the RVM

Overrides:
toString in class java.lang.Object



Copyright © 2001-2006