@CodeReview(reviewer="Kevin R. Dixon", date="2008-09-02", changesNeeded=false, comments={"Made minor changes to javadoc","Looks fine."}) @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 LinearRegression extends AbstractCloneableSerializable implements SupervisedBatchLearner<Vectorizable,java.lang.Double,LinearDiscriminantWithBias>
Modifier and Type | Class and Description |
---|---|
static class |
LinearRegression.Statistic
Computes regression statistics using a chi-square measure of the
statistical significance of the learned approximator
|
Modifier and Type | Field and Description |
---|---|
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 and Description |
---|
LinearRegression()
Creates a new instance of LinearRegression
|
LinearRegression(double regularization,
boolean usePseudoInverse)
Creates a new instance of LinearRegression
|
Modifier and Type | Method and Description |
---|---|
LinearRegression |
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
|
LinearDiscriminantWithBias |
learn(java.util.Collection<? extends InputOutputPair<? extends Vectorizable,java.lang.Double>> data)
Computes the linear regression for the given Collection of
InputOutputPairs.
|
void |
setRegularization(double regularization)
Setter for regularization
|
void |
setUsePseudoInverse(boolean usePseudoInverse)
Setter for usePseudoInverse
|
public static final double DEFAULT_PSEUDO_INVERSE_TOLERANCE
public static final double DEFAULT_REGULARIZATION
public LinearRegression()
public LinearRegression(double regularization, boolean usePseudoInverse)
regularization
- L2 ridge regularization term, must be nonnegative, a value of zero is
equivalent to unregularized regression.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".public LinearRegression clone()
AbstractCloneableSerializable
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.clone
in interface CloneableSerializable
clone
in class AbstractCloneableSerializable
public LinearDiscriminantWithBias learn(java.util.Collection<? extends InputOutputPair<? extends Vectorizable,java.lang.Double>> data)
learn
in interface BatchLearner<java.util.Collection<? extends InputOutputPair<? extends Vectorizable,java.lang.Double>>,LinearDiscriminantWithBias>
data
- Collection of InputOutputPairs for the variables. Can be
WeightedInputOutputPairs.public boolean getUsePseudoInverse()
public void setUsePseudoInverse(boolean usePseudoInverse)
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".public double getRegularization()
public void setRegularization(double regularization)
regularization
- L2 ridge regularization term, must be nonnegative, a value of zero is
equivalent to unregularized regression.