@Shareable public class MeanVarianceNormalizer extends AbstractVectorNormalizer implements java.io.Serializable
Normalizes against the variance of the vector with optional smoothing as described in Hofmann ’04.
For user rating vectors, this normalization assumes that a user’s mean rating and variance are independent of actual preferences, and attempts to describe the preference of a rating by the distance of the rating from the mean, relative to the user’s normal rating variance.
Constructor and Description |
---|
MeanVarianceNormalizer()
Initializes basic normalizer with no damping.
|
MeanVarianceNormalizer(double damping,
double globalVariance)
Construct a new mean variance normalizer.
|
Modifier and Type | Method and Description |
---|---|
double |
getDamping()
Get the damping term.
|
double |
getGlobalVariance()
Get the global variance.
|
InvertibleFunction<Long2DoubleMap,Long2DoubleMap> |
makeTransformation(Long2DoubleMap reference)
Create a vector transformation that normalizes and denormalizes vectors with respect to a reference vector.
|
@Inject public MeanVarianceNormalizer()
Initializes basic normalizer with no damping.
public MeanVarianceNormalizer(double damping, double globalVariance)
Construct a new mean variance normalizer.
damping
- damping factor to use. 0 for no damping, 5 for Hofmann’s implementation.globalVariance
- global variance to use in the damping calculations.public double getDamping()
Get the damping term.
public double getGlobalVariance()
Get the global variance.
public InvertibleFunction<Long2DoubleMap,Long2DoubleMap> makeTransformation(Long2DoubleMap reference)
VectorNormalizer
Create a vector transformation that normalizes and denormalizes vectors with respect to a reference vector. The reference vector is used to compute any data needed for the normalization. For example, a mean-centering normalization will subtract the mean of the reference vector from any vector to which it is applied, and add back the reference mean when it is unapplied.
This allows transformations to be applied multiple times to different vectors and also unapplied.
If the reference vector is empty, the returned transformation should be the identity transform. Results are undefined if the reference vector is not complete or contains NaN values.
If the normalization needs to retain a copy of the sparse vector, it will take an immutable copy.
makeTransformation
in interface VectorNormalizer
reference
- The reference vector.