gov.sandia.cognition.learning.algorithm.regression
Class MultivariateLinearRegression

java.lang.Object
  extended by gov.sandia.cognition.util.AbstractCloneableSerializable
      extended by gov.sandia.cognition.learning.algorithm.regression.MultivariateLinearRegression
All Implemented Interfaces:
BatchLearner<Collection<? extends InputOutputPair<? extends Vector,Vector>>,MultivariateDiscriminantWithBias>, SupervisedBatchLearner<Vector,Vector,MultivariateDiscriminantWithBias>, CloneableSerializable, Serializable, Cloneable

@PublicationReferences(references={@PublicationReference(author="Wikipedia",title="Linear regression",type=WebPage,year=2008,url="http://en.wikipedia.org/wiki/Linear_regression"),@PublicationReference(author="Wikipedia",title="Tikhonov regularization",type=WebPage,year=2011,url="http://en.wikipedia.org/wiki/Tikhonov_regularization",notes="Despite what Wikipedia says, this is always called Ridge Regression")})
public class MultivariateLinearRegression
extends AbstractCloneableSerializable
implements SupervisedBatchLearner<Vector,Vector,MultivariateDiscriminantWithBias>

Performs multivariate regression with an explicit bias term, with optional L2 regularization.

Since:
3.2.1
Author:
Kevin R. Dixon
See Also:
Serialized Form

Field Summary
static double DEFAULT_PSEUDO_INVERSE_TOLERANCE
          Tolerance for the pseudo inverse in the learn method, 1.0E-10.
static double DEFAULT_REGULARIZATION
          Default regularization, 0.0.
 
Constructor Summary
MultivariateLinearRegression()
          Creates a new instance of MultivariateLinearRegression
 
Method Summary
 MultivariateLinearRegression clone()
          This makes public the clone method on the Object class and removes the exception that it throws.
 double getRegularization()
          Getter for regularization
 boolean getUsePseudoInverse()
          Getter for usePseudoInverse
 MultivariateDiscriminantWithBias learn(Collection<? extends InputOutputPair<? extends Vector,Vector>> data)
          The learn method creates an object of ResultType using data of type DataType, using some form of "learning" algorithm.
 void setRegularization(double regularization)
          Setter for regularization
 void setUsePseudoInverse(boolean usePseudoInverse)
          Setter for usePseudoInverse
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_REGULARIZATION

public static final double DEFAULT_REGULARIZATION
Default regularization, 0.0.

See Also:
Constant Field Values

DEFAULT_PSEUDO_INVERSE_TOLERANCE

public static final double DEFAULT_PSEUDO_INVERSE_TOLERANCE
Tolerance for the pseudo inverse in the learn method, 1.0E-10.

See Also:
Constant Field Values
Constructor Detail

MultivariateLinearRegression

public MultivariateLinearRegression()
Creates a new instance of MultivariateLinearRegression

Method Detail

clone

public MultivariateLinearRegression clone()
Description copied from class: AbstractCloneableSerializable
This makes public the clone method on the Object class and removes the exception that it throws. Its default behavior is to automatically create a clone of the exact type of object that the clone is called on and to copy all primitives but to keep all references, which means it is a shallow copy. Extensions of this class may want to override this method (but call super.clone() to implement a "smart copy". That is, to target the most common use case for creating a copy of the object. Because of the default behavior being a shallow copy, extending classes only need to handle fields that need to have a deeper copy (or those that need to be reset). Some of the methods in ObjectUtil may be helpful in implementing a custom clone method. Note: The contract of this method is that you must use super.clone() as the basis for your implementation.

Specified by:
clone in interface CloneableSerializable
Overrides:
clone in class AbstractCloneableSerializable
Returns:
A clone of this object.

learn

public MultivariateDiscriminantWithBias learn(Collection<? extends InputOutputPair<? extends Vector,Vector>> data)
Description copied from interface: BatchLearner
The learn method creates an object of ResultType using data of type DataType, using some form of "learning" algorithm.

Specified by:
learn in interface BatchLearner<Collection<? extends InputOutputPair<? extends Vector,Vector>>,MultivariateDiscriminantWithBias>
Parameters:
data - The data that the learning algorithm will use to create an object of ResultType.
Returns:
The object that is created based on the given data using the learning algorithm.

getUsePseudoInverse

public boolean getUsePseudoInverse()
Getter for usePseudoInverse

Returns:
Flag to use a pseudoinverse. True to use the expensive, but more accurate, pseudoinverse routine. False uses a very fast, but numerically less stable LU solver. Default value is "true".

setUsePseudoInverse

public void setUsePseudoInverse(boolean usePseudoInverse)
Setter for usePseudoInverse

Parameters:
usePseudoInverse - Flag to use a pseudoinverse. True to use the expensive, but more accurate, pseudoinverse routine. False uses a very fast, but numerically less stable LU solver. Default value is "true".

getRegularization

public double getRegularization()
Getter for regularization

Returns:
L2 ridge regularization term, must be nonnegative, a value of zero is equivalent to unregularized regression.

setRegularization

public void setRegularization(double regularization)
Setter for regularization

Parameters:
regularization - L2 ridge regularization term, must be nonnegative, a value of zero is equivalent to unregularized regression.