Main Content

# rica

Feature extraction by using reconstruction ICA

## Syntax

``Mdl = rica(X,q)``
``Mdl = rica(X,q,Name,Value)``

## Description

````Mdl = rica(X,q)` returns a reconstruction independent component analysis (RICA) model object that contains the results from applying RICA to the table or matrix of predictor data `X` containing p variables. `q` is the number of features to extract from `X`, therefore `rica` learns a p-by-`q` matrix of transformation weights. For undercomplete or overcomplete feature representations, `q` can be less than or greater than the number of predictor variables, respectively. To access the learned transformation weights, use `Mdl.TransformWeights`.To transform `X` to the new set of features by using the learned transformation, pass `Mdl` and `X` to `transform`. ```

example

````Mdl = rica(X,q,Name,Value)` uses additional options specified by one or more `Name,Value` pair arguments. For example, you can standardize the predictor data or specify the value of the penalty coefficient in the reconstruction term of the objective function.```

## Examples

collapse all

Create a `ReconstructionICA` object by using the `rica` function.

Load the `SampleImagePatches` image patches.

```data = load('SampleImagePatches'); size(data.X)```
```ans = 1×2 5000 363 ```

There are 5,000 image patches, each containing 363 features.

Extract 100 features from the data.

```rng default % For reproducibility q = 100; Mdl = rica(data.X,q,'IterationLimit',100)```
```Warning: Solver LBFGS was not able to converge to a solution. ```
```Mdl = ReconstructionICA ModelParameters: [1x1 struct] NumPredictors: 363 NumLearnedFeatures: 100 Mu: [] Sigma: [] FitInfo: [1x1 struct] TransformWeights: [363x100 double] InitialTransformWeights: [] NonGaussianityIndicator: [100x1 double] Properties, Methods ```

`rica` issues a warning because it stopped due to reaching the iteration limit, instead of reaching a step-size limit or a gradient-size limit. You can still use the learned features in the returned object by calling the `transform` function.

## Input Arguments

collapse all

Predictor data, specified as an n-by-p numeric matrix or table. Rows correspond to individual observations and columns correspond to individual predictor variables. If `X` is a table, then all of its variables must be numeric vectors.

Data Types: `single` | `double` | `table`

Number of features to extract from the predictor data, specified as a positive integer.

`rica` stores a p-by-`q` transform weight matrix in `Mdl.TransformWeights`. Therefore, setting very large values for `q` can result in greater memory consumption and increased computation time.

Data Types: `single` | `double`

### Name-Value Arguments

Specify optional comma-separated pairs of `Name,Value` arguments. `Name` is the argument name and `Value` is the corresponding value. `Name` must appear inside quotes. You can specify several name and value pair arguments in any order as `Name1,Value1,...,NameN,ValueN`.

Example: `Mdl = rica(X,q,'IterationLimit',200,'Standardize',true)` runs `rica` with optimization iterations limited to 200 and standardized predictor data.

Maximum number of iterations, specified as the comma-separated pair consisting of `'IterationLimit'` and a positive integer.

Example: `'IterationLimit',1e6`

Data Types: `single` | `double`

Verbosity level for monitoring algorithm convergence, specified as the comma-separated pair consisting of `'VerbosityLevel'` and a value in this table.

ValueDescription
`0``rica` does not display convergence information at the command line.
Positive integer`rica` displays convergence information at the command line.

Convergence Information

HeadingMeaning
`FUN VALUE`Objective function value.
`NORM GRAD`Norm of the gradient of the objective function.
`NORM STEP`Norm of the iterative step, meaning the distance between the previous point and the current point.
`CURV``OK` means the weak Wolfe condition is satisfied. This condition is a combination of sufficient decrease of the objective function and a curvature condition.
`GAMMA`Inner product of the step times the gradient difference, divided by the inner product of the gradient difference with itself. The gradient difference is the gradient at the current point minus the gradient at the previous point. Gives diagnostic information on the objective function curvature.
`ALPHA`Step direction multiplier, which differs from `1` when the algorithm performed a line search.
`ACCEPT``YES` means the algorithm found an acceptable step to take.

Example: `'VerbosityLevel',1`

Data Types: `single` | `double`

Regularization coefficient value for the transform weight matrix, specified as the comma-separated pair consisting of `'Lambda'` and a positive numeric scalar. If you specify `0`, then there is no regularization term in the objective function.

Example: `'Lambda',0.1`

Data Types: `single` | `double`

Flag to standardize the predictor data, specified as the comma-separated pair consisting of `'Standardize'` and `true` (`1`) or `false` (`0`).

If `Standardize` is `true`, then:

• `rica` centers and scales each column of the predictor data (`X`) by the column mean and standard deviation, respectively.

• `rica` extracts new features by using the standardized predictor matrix, and stores the predictor variable means and standard deviations in properties `Mu` and `Sigma` of `Mdl`.

Example: `'Standardize',true`

Data Types: `logical`

Contrast function, specified as `'logcosh'`, `'exp'`, or `'sqrt'`. The contrast function is a smooth function that is similar to an absolute value function. The `rica` objective function contains a term

`$\sum _{j=1}^{q}\frac{1}{n}\sum _{i=1}^{n}g\left({w}_{j}^{T}{\stackrel{˜}{x}}_{i}\right),$`

where g represents the contrast function, the wj are the variables over which the optimization takes place, and the ${\stackrel{˜}{x}}_{i}$ are data.

The three available contrast functions are:

• `'logcosh'`$g=\frac{1}{2}\mathrm{log}\left(\mathrm{cosh}\left(2x\right)\right)$

• `'exp'`$g=-\mathrm{exp}\left(-\frac{{x}^{2}}{2}\right)$

• `'sqrt'`$g=\sqrt{{x}^{2}+{10}^{-8}}$

Example: `'ContrastFcn','exp'`

Transformation weights that initialize optimization, specified as the comma-separated pair consisting of `'InitialTransformWeights'` and a p-by-`q` numeric matrix. p must be the number of columns or variables in `X` and `q` is the value of `q`.

Tip

You can continue optimizing a previously returned transform weight matrix by passing it as an initial value in another call to `rica`. The output model object `Mdl` stores a learned transform weight matrix in the `TransformWeights` property.

Example: `'InitialTransformWeights',Mdl.TransformWeights`

Data Types: `single` | `double`

Non-Gaussianity of sources, specified as a length-`q` vector of ±1.

• `NonGaussianityIndicator(k) = 1` means `rica` models the `k`th source as super-Gaussian, with a sharp peak at 0.

• `NonGaussianityIndicator(k) = -1` means `rica` models the `k`th source as sub-Gaussian.

Data Types: `single` | `double`

Relative convergence tolerance on gradient norm, specified as the comma-separated pair consisting of `'GradientTolerance'` and a positive numeric scalar. This gradient is the gradient of the objective function.

Example: `'GradientTolerance',1e-4`

Data Types: `single` | `double`

Absolute convergence tolerance on the step size, specified as the comma-separated pair consisting of `'StepTolerance'` and a positive numeric scalar.

Example: `'StepTolerance',1e-4`

Data Types: `single` | `double`

## Output Arguments

collapse all

Learned reconstruction ICA model, returned as a `ReconstructionICA` model object.

To access properties of `Mdl`, use dot notation. For example:

• To access the learned transform weights, use `Mdl.TransformWeights`.

• To access the structure of fitting information, use `Mdl.FitInfo`.

## Algorithms

The `rica` function creates a linear transformation of input features to output features. The transformation is based on optimizing a nonlinear objective function that roughly balances statistical independence of the output features versus the ability to reconstruct the input data using the output features.

For details, see Reconstruction ICA Algorithm.

## See Also

### Topics

Introduced in R2017a

Download ebook