IndependentComponentAnalysis Class |
Namespace: Accord.Statistics.Analysis
[SerializableAttribute] public class IndependentComponentAnalysis : MultipleTransformBase<double[], double>, IMultivariateAnalysis, IAnalysis, IParallel, ISupportsCancellation, IUnsupervisedLearning<MultivariateLinearRegression, double[], double[]>
The IndependentComponentAnalysis type exposes the following members.
Name | Description | |
---|---|---|
IndependentComponentAnalysis(Double) | Obsolete.
Constructs a new Independent Component Analysis.
| |
IndependentComponentAnalysis(Double, AnalysisMethod) | Obsolete.
Constructs a new Independent Component Analysis.
| |
IndependentComponentAnalysis(Double, IndependentComponentAlgorithm) | Obsolete.
Constructs a new Independent Component Analysis.
| |
IndependentComponentAnalysis(AnalysisMethod, IndependentComponentAlgorithm) |
Constructs a new Independent Component Analysis.
| |
IndependentComponentAnalysis(Double, AnalysisMethod, IndependentComponentAlgorithm) | Obsolete.
Constructs a new Independent Component Analysis.
| |
IndependentComponentAnalysis(Double, AnalysisMethod, IndependentComponentAlgorithm) | Obsolete.
Constructs a new Independent Component Analysis.
|
Name | Description | |
---|---|---|
Algorithm |
Gets or sets the
FastICA algorithm used by the analysis.
| |
Components |
Gets the Independent Components in a object-oriented structure.
| |
Contrast |
Gets or sets the
Contrast function to be used by the analysis.
| |
DemixingMatrix |
Gets a matrix containing the demixing coefficients for
the original source data being analyzed. Each column
corresponds to an independent component.
| |
Iterations |
Gets or sets the maximum number of iterations
to perform. If zero, the method will run until
convergence.
| |
Means |
Gets the column means of the original data.
| |
Method |
Gets or sets the normalization method used for this analysis.
| |
MixingMatrix |
Gets a matrix containing the mixing coefficients for
the original source data being analyzed. Each column
corresponds to an independent component.
| |
NumberOfInputs |
Gets the number of inputs accepted by the model.
(Inherited from TransformBaseTInput, TOutput.) | |
NumberOfOutputs |
Gets the number of outputs generated by the model.
(Inherited from TransformBaseTInput, TOutput.) | |
Overwrite |
Gets or sets whether calculations will be performed overwriting
data in the original source matrix, using less memory.
| |
ParallelOptions |
Gets or sets the parallelization options for this algorithm.
| |
Result | Obsolete.
Gets the resulting projection of the source
data given on the creation of the analysis
into the space spawned by independent components.
| |
Source | Obsolete.
Source data used in the analysis.
| |
StandardDeviation |
Gets the column standard deviations of the original data.
| |
Token |
Gets or sets a cancellation token that can be used
to cancel the algorithm while it is running.
| |
Tolerance |
Gets or sets the maximum absolute change in
parameters between iterations that determine
convergence.
| |
WhiteningMatrix |
Gets the whitening matrix used to transform
the original data to have unit variance.
|
Name | Description | |
---|---|---|
Adjust(Double, Boolean) |
Obsolete
| |
Adjust(Single, Boolean) |
Obsolete
| |
Combine(Double) | Obsolete.
Combines components into a single mixture (mixing).
| |
Combine(Single) | Obsolete.
Combines components into a single mixture (mixing).
| |
Compute | Obsolete.
Computes the Independent Component Analysis algorithm.
| |
Compute(Int32) | Obsolete.
Computes the Independent Component Analysis algorithm.
| |
Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
Learn |
Learns a model that can map the given inputs to the desired outputs.
| |
MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
Separate(Double) | Obsolete.
Separates a mixture into its components (demixing).
| |
Separate(Single) | Obsolete.
Separates a mixture into its components (demixing).
| |
ToString | Returns a string that represents the current object. (Inherited from Object.) | |
Transform(TInput) |
Applies the transformation to an input, producing an associated output.
(Inherited from MultipleTransformBaseTInput, TOutput.) | |
Transform(TInput) |
Applies the transformation to a set of input vectors,
producing an associated set of output vectors.
(Inherited from MultipleTransformBaseTInput, TOutput.) | |
Transform(TInput, TOutput) |
Applies the transformation to an input, producing an associated output.
(Inherited from MultipleTransformBaseTInput, TOutput.) | |
Transform(Double, Double) |
Applies the transformation to an input, producing an associated output.
(Overrides MultipleTransformBaseTInput, TOutputTransform(TInput, TOutput).) |
Name | Description | |
---|---|---|
HasMethod |
Checks whether an object implements a method with the given name.
(Defined by ExtensionMethods.) | |
IsEqual |
Compares two objects for equality, performing an elementwise
comparison if the elements are vectors or matrices.
(Defined by Matrix.) | |
To(Type) | Overloaded.
Converts an object into another type, irrespective of whether
the conversion can be done at compile time or not. This can be
used to convert generic types to numeric types during runtime.
(Defined by ExtensionMethods.) | |
ToT | Overloaded.
Converts an object into another type, irrespective of whether
the conversion can be done at compile time or not. This can be
used to convert generic types to numeric types during runtime.
(Defined by ExtensionMethods.) |
Independent Component Analysis is a computational method for separating a multivariate signal (or mixture) into its additive subcomponents, supposing the mutual statistical independence of the non-Gaussian source signals.
When the independence assumption is correct, blind ICA separation of a mixed signal gives very good results. It is also used for signals that are not supposed to be generated by a mixing for analysis purposes.
A simple application of ICA is the "cocktail party problem", where the underlying speech signals are separated from a sample data consisting of people talking simultaneously in a room. Usually the problem is simplified by assuming no time delays or echoes.
An important note to consider is that if N sources are present, at least N observations (e.g. microphones) are needed to get the original signals.
References:
// Let's create a random dataset containing // 5000 samples of two dimensional samples. // double[][] source = Jagged.Random(5000, 2); // Now, we will mix the samples the dimensions of the samples. // A small amount of the second column will be applied to the // first, and vice-versa. // double[][] mix = { new double[] { 0.25, 0.25 }, new double[] { -0.25, 0.75 }, }; // mix the source data double[][] input = source.Dot(mix); // Now, we can use ICA to identify any linear mixing between the variables, such // as the matrix multiplication we did above. After it has identified it, we will // be able to revert the process, retrieving our original samples again // Create a new Independent Component Analysis var ica = new IndependentComponentAnalysis() { Algorithm = IndependentComponentAlgorithm.Parallel, Contrast = new Logcosh() }; // Learn the demixing transformation from the data MultivariateLinearRegression demix = ica.Learn(input); // Now, we can retrieve the mixing and demixing matrices that were // used to alter the data. Note that the analysis was able to detect // this information automatically: double[][] mixingMatrix = ica.MixingMatrix; // same as the 'mix' matrix double[][] revertMatrix = ica.DemixingMatrix; // inverse of the 'mix' matrix // We can use the regression to recover the separate sources double[][] result = demix.Transform(input);