T
- public abstract class Metric<T extends InformationLoss<?>>
extends java.lang.Object
implements java.io.Serializable
Modifier and Type | Class and Description |
---|---|
static class |
Metric.AggregateFunction
Pluggable aggregate functions.
|
Modifier and Type | Method and Description |
---|---|
static Metric<ILSingleDimensional> |
createAECSMetric()
Creates a new instance of the AECS metric.
|
static Metric<ILSingleDimensional> |
createDiscernabilityMetric()
Creates an instance of the discernability metric.
|
static Metric<ILSingleDimensional> |
createDiscernabilityMetric(boolean monotonic)
Creates an instance of the discernability metric.
|
static Metric<AbstractILMultiDimensional> |
createEntropyMetric()
Creates an instance of the non-monotonic non-uniform entropy metric.
|
static Metric<AbstractILMultiDimensional> |
createEntropyMetric(boolean monotonic)
Creates an instance of the non-uniform entropy metric.
|
static Metric<AbstractILMultiDimensional> |
createEntropyMetric(boolean monotonic,
Metric.AggregateFunction function)
Creates an instance of the non-uniform entropy metric.
|
static Metric<AbstractILMultiDimensional> |
createHeightMetric()
Creates an instance of the height metric.
|
static Metric<AbstractILMultiDimensional> |
createHeightMetric(Metric.AggregateFunction function)
Creates an instance of the height metric.
|
static Metric<AbstractILMultiDimensional> |
createLossMetric()
Creates an instance of the loss metric which treats generalization and suppression equally.
|
static Metric<AbstractILMultiDimensional> |
createLossMetric(double gsFactor)
Creates an instance of the loss metric with factors for weighting generalization and suppression.
|
static Metric<AbstractILMultiDimensional> |
createLossMetric(double gsFactor,
Metric.AggregateFunction function)
Creates an instance of the loss metric with factors for weighting generalization and suppression.
|
static Metric<AbstractILMultiDimensional> |
createLossMetric(Metric.AggregateFunction function)
Creates an instance of the loss metric which treats generalization and suppression equally.
|
abstract InformationLoss<?> |
createMaxInformationLoss()
Returns an instance of the maximal value.
|
static Metric<?> |
createMetric(Metric<?> metric,
int minLevel,
int maxLevel)
This method supports backwards compatibility.
|
abstract InformationLoss<?> |
createMinInformationLoss()
Returns an instance of the minimal value.
|
static Metric<AbstractILMultiDimensional> |
createPrecisionMetric()
Creates an instance of the non-monotonic precision metric.
|
static Metric<AbstractILMultiDimensional> |
createPrecisionMetric(boolean monotonic)
Creates an instance of the precision metric.
|
static Metric<AbstractILMultiDimensional> |
createPrecisionMetric(boolean monotonic,
Metric.AggregateFunction function)
Creates an instance of the precision metric.
|
static Metric<AbstractILMultiDimensional> |
createPrecisionMetric(Metric.AggregateFunction function)
Creates an instance of the non-monotonic precision metric.
|
static Metric<AbstractILMultiDimensional> |
createPrecomputedEntropyMetric(double threshold)
Creates a potentially precomputed instance of the non-monotonic non-uniform entropy metric.
|
static Metric<AbstractILMultiDimensional> |
createPrecomputedEntropyMetric(double threshold,
boolean monotonic)
Creates a potentially precomputed instance of the non-uniform entropy metric.
|
static Metric<AbstractILMultiDimensional> |
createPrecomputedEntropyMetric(double threshold,
boolean monotonic,
Metric.AggregateFunction function)
Creates a potentially precomputed instance of the non-uniform entropy metric.
|
static Metric<AbstractILMultiDimensional> |
createPrecomputedLossMetric(double threshold)
Creates a potentially precomputed instance of the loss metric which treats generalization
and suppression equally.
|
static Metric<AbstractILMultiDimensional> |
createPrecomputedLossMetric(double threshold,
double gsFactor)
Creates a potentially precomputed instance of the loss metric with factors for weighting generalization and suppression.
|
static Metric<AbstractILMultiDimensional> |
createPrecomputedLossMetric(double threshold,
double gsFactor,
Metric.AggregateFunction function)
Creates a potentially precomputed instance of the loss metric with factors for weighting generalization and suppression.
|
static Metric<AbstractILMultiDimensional> |
createPrecomputedLossMetric(double threshold,
Metric.AggregateFunction function)
Creates a potentially precomputed instance of the loss metric which treats generalization and suppression equally.
|
static Metric<AbstractILMultiDimensional> |
createStaticMetric(java.util.Map<java.lang.String,java.util.List<java.lang.Double>> loss)
Creates an instance of a metric with statically defined information loss.
|
static Metric<AbstractILMultiDimensional> |
createStaticMetric(java.util.Map<java.lang.String,java.util.List<java.lang.Double>> loss,
Metric.AggregateFunction function)
Creates an instance of a metric with statically defined information loss.
|
Metric.AggregateFunction |
getAggregateFunction()
Returns the aggregate function of a multi-dimensional metric, null otherwise.
|
MetricConfiguration |
getConfiguration()
Returns the configuration of this metric.
|
MetricDescription |
getDescription()
Returns a description of this metric.
|
InformationLossWithBound<T> |
getInformationLoss(org.deidentifier.arx.framework.lattice.Node node,
org.deidentifier.arx.framework.check.groupify.HashGroupify groupify)
Evaluates the metric for the given node.
|
InformationLossWithBound<T> |
getInformationLoss(org.deidentifier.arx.framework.lattice.Node node,
org.deidentifier.arx.framework.check.groupify.HashGroupifyEntry entry)
Returns the information loss that would be induced by suppressing the given entry.
|
T |
getLowerBound(org.deidentifier.arx.framework.lattice.Node node)
Returns a lower bound for the information loss for the given node.
|
T |
getLowerBound(org.deidentifier.arx.framework.lattice.Node node,
org.deidentifier.arx.framework.check.groupify.HashGroupify groupify)
Returns a lower bound for the information loss for the given node.
|
java.lang.String |
getName()
Returns the name of metric.
|
void |
initialize(DataDefinition definition,
org.deidentifier.arx.framework.data.Data input,
org.deidentifier.arx.framework.data.GeneralizationHierarchy[] hierarchies,
ARXConfiguration config)
Initializes the metric.
|
boolean |
isIndependent()
Returns whether this metric requires the transformed data or groups to
determine information loss.
|
boolean |
isMonotonic()
Returns false if the metric is non-monotone using suppression.
|
boolean |
isMultiDimensional()
Returns true if the metric is multi-dimensional.
|
boolean |
isWeighted()
Returns true if the metric is weighted.
|
static java.util.List<MetricDescription> |
list()
Returns a list of all available metrics for information loss.
|
java.lang.String |
toString()
Returns the name of metric.
|
public static Metric<ILSingleDimensional> createAECSMetric()
public static Metric<ILSingleDimensional> createDiscernabilityMetric()
public static Metric<ILSingleDimensional> createDiscernabilityMetric(boolean monotonic)
monotonic
- If set to true, the monotonic variant (DM*) will be createdpublic static Metric<AbstractILMultiDimensional> createEntropyMetric()
public static Metric<AbstractILMultiDimensional> createEntropyMetric(boolean monotonic)
monotonic
- If set to true, the monotonic variant of the metric will be createdpublic static Metric<AbstractILMultiDimensional> createEntropyMetric(boolean monotonic, Metric.AggregateFunction function)
monotonic
- If set to true, the monotonic variant of the metric will be createdfunction
- The aggregate function to be used for comparing resultspublic static Metric<AbstractILMultiDimensional> createHeightMetric()
public static Metric<AbstractILMultiDimensional> createHeightMetric(Metric.AggregateFunction function)
function
- The aggregate function to use for comparing resultspublic static Metric<AbstractILMultiDimensional> createLossMetric()
public static Metric<AbstractILMultiDimensional> createLossMetric(Metric.AggregateFunction function)
function
- The aggregate function to use for comparing resultspublic static Metric<AbstractILMultiDimensional> createLossMetric(double gsFactor)
gsFactor
- A factor [0,1] weighting generalization and suppression.
The default value is 0.5, which means that generalization
and suppression will be treated equally. A factor of 0
will favor suppression, and a factor of 1 will favor
generalization. The values in between can be used for
balancing both methods.public static Metric<AbstractILMultiDimensional> createLossMetric(double gsFactor, Metric.AggregateFunction function)
gsFactor
- A factor [0,1] weighting generalization and suppression.
The default value is 0.5, which means that generalization
and suppression will be treated equally. A factor of 0
will favor suppression, and a factor of 1 will favor
generalization. The values in between can be used for
balancing both methods.function
- The aggregate function to use for comparing resultspublic static Metric<?> createMetric(Metric<?> metric, int minLevel, int maxLevel)
metric
- minLevel
- maxLevel
- public static Metric<AbstractILMultiDimensional> createPrecisionMetric()
public static Metric<AbstractILMultiDimensional> createPrecisionMetric(Metric.AggregateFunction function)
function
- The aggregate function to use for comparing resultspublic static Metric<AbstractILMultiDimensional> createPrecisionMetric(boolean monotonic)
monotonic
- If set to true, the monotonic variant of the metric will be createdpublic static Metric<AbstractILMultiDimensional> createPrecisionMetric(boolean monotonic, Metric.AggregateFunction function)
monotonic
- If set to true, the monotonic variant of the metric will be createdfunction
- public static Metric<AbstractILMultiDimensional> createPrecomputedEntropyMetric(double threshold)
threshold
- The precomputed variant of the metric will be used if
#distinctValues / #rows <= threshold for all quasi-identifiers.public static Metric<AbstractILMultiDimensional> createPrecomputedEntropyMetric(double threshold, boolean monotonic)
threshold
- The precomputed variant of the metric will be used if
#distinctValues / #rows <= threshold for all quasi-identifiers.monotonic
- If set to true, the monotonic variant of the metric will be createdpublic static Metric<AbstractILMultiDimensional> createPrecomputedEntropyMetric(double threshold, boolean monotonic, Metric.AggregateFunction function)
threshold
- The precomputed variant of the metric will be used if
#distinctValues / #rows <= threshold for all quasi-identifiers.monotonic
- If set to true, the monotonic variant of the metric will be createdfunction
- The aggregate function to be used for comparing resultspublic static Metric<AbstractILMultiDimensional> createPrecomputedLossMetric(double threshold)
threshold
- The precomputed variant of the metric will be used if
#distinctValues / #rows <= threshold for all quasi-identifiers.public static Metric<AbstractILMultiDimensional> createPrecomputedLossMetric(double threshold, Metric.AggregateFunction function)
threshold
- The precomputed variant of the metric will be used if
#distinctValues / #rows <= threshold for all quasi-identifiers.function
- The aggregate function to use for comparing resultspublic static Metric<AbstractILMultiDimensional> createPrecomputedLossMetric(double threshold, double gsFactor)
threshold
- The precomputed variant of the metric will be used if
#distinctValues / #rows <= threshold for all quasi-identifiers.gsFactor
- A factor [0,1] weighting generalization and suppression.
The default value is 0.5, which means that generalization
and suppression will be treated equally. A factor of 0
will favor suppression, and a factor of 1 will favor
generalization. The values in between can be used for
balancing both methods.public static Metric<AbstractILMultiDimensional> createPrecomputedLossMetric(double threshold, double gsFactor, Metric.AggregateFunction function)
threshold
- The precomputed variant of the metric will be used if
#distinctValues / #rows <= threshold for all quasi-identifiers.gsFactor
- A factor [0,1] weighting generalization and suppression.
The default value is 0.5, which means that generalization
and suppression will be treated equally. A factor of 0
will favor suppression, and a factor of 1 will favor
generalization. The values in between can be used for
balancing both methods.function
- The aggregate function to use for comparing resultspublic static Metric<AbstractILMultiDimensional> createStaticMetric(java.util.Map<java.lang.String,java.util.List<java.lang.Double>> loss)
loss
- User defined information loss per attributepublic static Metric<AbstractILMultiDimensional> createStaticMetric(java.util.Map<java.lang.String,java.util.List<java.lang.Double>> loss, Metric.AggregateFunction function)
loss
- User defined information loss per attributefunction
- The aggregate function to use for comparing resultspublic static java.util.List<MetricDescription> list()
public abstract InformationLoss<?> createMaxInformationLoss()
public abstract InformationLoss<?> createMinInformationLoss()
public Metric.AggregateFunction getAggregateFunction()
public MetricConfiguration getConfiguration()
public MetricDescription getDescription()
public final InformationLossWithBound<T> getInformationLoss(org.deidentifier.arx.framework.lattice.Node node, org.deidentifier.arx.framework.check.groupify.HashGroupifyEntry entry)
getInformationLoss(node, groupify)
but is guaranteed to be comparable for
different entries from the same groupify operator.entry
- public final InformationLossWithBound<T> getInformationLoss(org.deidentifier.arx.framework.lattice.Node node, org.deidentifier.arx.framework.check.groupify.HashGroupify groupify)
node
- The node for which to compute the information lossgroupify
- The groupify operator of the previous checkpublic T getLowerBound(org.deidentifier.arx.framework.lattice.Node node)
null
.node
- public T getLowerBound(org.deidentifier.arx.framework.lattice.Node node, org.deidentifier.arx.framework.check.groupify.HashGroupify groupify)
null
.node
- groupify
- public java.lang.String getName()
public final void initialize(DataDefinition definition, org.deidentifier.arx.framework.data.Data input, org.deidentifier.arx.framework.data.GeneralizationHierarchy[] hierarchies, ARXConfiguration config)
definition
- input
- hierarchies
- config
- public boolean isIndependent()
public final boolean isMonotonic()
public final boolean isMultiDimensional()
public final boolean isWeighted()
public java.lang.String toString()
toString
in class java.lang.Object