public class GHA extends java.lang.Object implements LinearProjection, java.io.Serializable
It guarantees that GHA finds the first k eigenvectors of the covariance matrix, assuming that the associated eigenvalues are distinct. The convergence theorem is formulated in terms of a time-varying learning rate η. In practice, the learning rate η is chosen to be a small constant, in which case convergence is guaranteed with mean-squared error in synaptic weights of order η.
It also has a simple and predictable trade-off between learning speed and accuracy of convergence as set by the learning rate parameter η. It was shown that a larger learning rate η leads to faster convergence and larger asymptotic mean-square error, which is intuitively satisfying.
Compared to regular batch PCA algorithm based on eigen decomposition, GHA is an adaptive method and works with an arbitrarily large sample size. The storage requirement is modest. Another attractive feature is that, in a nonstationary environment, it has an inherent ability to track gradual changes in the optimal solution in an inexpensive way.
PCA
,
Serialized FormConstructor and Description |
---|
GHA(double[][] w,
double r)
Constructor.
|
GHA(int n,
int p,
double r)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
double |
getLearningRate()
Returns the learning rate.
|
smile.math.matrix.Matrix |
getProjection()
Returns the projection matrix.
|
GHA |
setLearningRate(double r)
Set the learning rate.
|
double |
update(double[] x)
Update the model with a new sample.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
project, project
public GHA(int n, int p, double r)
n
- the dimension of input space.p
- the dimension of feature space.r
- the learning rate.public GHA(double[][] w, double r)
w
- the initial projection matrix.r
- the learning rate.public smile.math.matrix.Matrix getProjection()
getProjection
in interface LinearProjection
public double getLearningRate()
public GHA setLearningRate(double r)
public double update(double[] x)
x
- the centered learning sample whose E(x) = 0.