Class NonlinearAdditiveNoiseModel
The form of the recursive model is Xi = fi(Pa(Xi)) + Ni
Hoyer, P., Janzing, D., Mooij, J. M., Peters, J., & Schölkopf, B. (2008). Nonlinear causal discovery with additive noise models. Advances in neural information processing systems, 21.
Zhang, K., & Hyvärinen, A. (2009). Causality discovery with additive disturbances: An information-theoretical perspective. In Machine Learning and Knowledge Discovery in Databases: European Conference, ECML PKDD 2009, Bled, Slovenia, September 7-11, 2009, Proceedings, Part II 20 (pp. 570-585). Springer Berlin Heidelberg.
Zhang, K., & Hyvarinen, A. (2012). On the identifiability of the post-nonlinear causal model. arXiv preprint arXiv:1205.2599.
Chu, T., Glymour, C., & Ridgeway, G. (2008). Search for Additive Nonlinear Time Series Causal Models. Journal of Machine Learning Research, 9(5).
Bühlmann, P., Peters, J., & Ernest, J. (2014). "CAM: Causal Additive Models, high-dimensional order search and penalized regression". The Annals of Statistics.
Peters, J., Mooij, J. M., Janzing, D., & Schölkopf, B. (2014). "Causal Discovery with Continuous Additive Noise Models". Journal of Machine Learning Research.
Hastie, T., & Tibshirani, R. (1986). "Generalized Additive Models".
Hyvarinen, A., & Pajunen, P. (1999). "Nonlinear Independent Component Analysis: Existence and Uniqueness Results"
-
Constructor Summary
ConstructorsConstructorDescriptionNonlinearAdditiveNoiseModel(Graph graph, int numSamples, org.apache.commons.math3.distribution.RealDistribution noiseDistribution, double rescaleMin, double rescaleMax, int hiddenDimension, double inputScale) Constructs a nonlinear additive noise model based on a directed acyclic graph (DAG). -
Method Summary
Modifier and TypeMethodDescriptionGenerates synthetic data based on a directed acyclic graph (DAG) with causal relationships and post-nonlinear causal mechanisms.voidsetActivationFunction(Function<Double, Double> activationFunction) Sets the activation function for the model.
-
Constructor Details
-
NonlinearAdditiveNoiseModel
public NonlinearAdditiveNoiseModel(Graph graph, int numSamples, org.apache.commons.math3.distribution.RealDistribution noiseDistribution, double rescaleMin, double rescaleMax, int hiddenDimension, double inputScale) Constructs a nonlinear additive noise model based on a directed acyclic graph (DAG). This model is used to generate synthetic data where the relationships in the graph are affected by additive noise and potentially undergo nonlinear transformations.- Parameters:
graph- The directed acyclic graph (DAG) representing the underlying causal structure.numSamples- The number of data samples to generate. Must be positive.noiseDistribution- The distribution used to sample additive noise for each variable.rescaleMin- The minimum value of the range for rescaling the generated data. Must be less than or equal to rescaleMax.rescaleMax- The maximum value of the range for rescaling the generated data. Must be greater than or equal to rescaleMin.hiddenDimension- The dimensionality of hidden layers or transformations used in data generation.inputScale- A scaling factor applied to input data before applying transformations or noise.- Throws:
IllegalArgumentException- If the input graph contains cycles or if the provided parameters are invalid.
-
-
Method Details
-
generateData
Generates synthetic data based on a directed acyclic graph (DAG) with causal relationships and post-nonlinear causal mechanisms. The data generation process involves simulating parent-child relationships in the graph, applying noise, rescaling, and applying random piecewise linear transformations.- Returns:
- A DataSet object containing the generated synthetic data, with samples and variables defined by the structure of the provided graph and simulation parameters.
-
setActivationFunction
Sets the activation function for the model. The activation function defines a non-linear transformation applied to the data during the simulation.- Parameters:
activationFunction- A function that takes a Double as input and returns a Double as output, representing the non-linear activation function to be applied.
-