`smile`

Split–Merge Incremental LEarning (SMILE) algorithm for estimation of mixture model structure and parameters, with generalized internal estimations.

**Syntax**

[theta, D] = smile(data, target_num) [theta, D] = smile(data, target_num, options) [theta, D, info] = smile(...) [theta, D, info, options] = smile(...)

**Description**

This function implements the SMILE algorithm proposed by Blekas and Lagaris (2007), though here we use generalized optimization methods.

`[theta, D] = smile(data, target_num)` returns the estimated parameters and the mixture distribution `D` with `target_num` components, fitted to `data`.

`[theta, D] = smile(data, target_num, options)` utilizes applicable options from the `options` structure in the estimation procedure.

`[theta, D, info] = smile(...)` also returns `info`, a structure array containing information about successive iterations performed by iterative estimation functions.

`[theta, D, info, options] = smile(...)` also returns the effective `options` used, so you can see what default values the function used on top of the options you possibly specified.

For information about the output `theta`, see Distribution Parameters Structure. The input argument `data` is described in Data Input Argument to Functions. You may also want to read about `options` or `info` arguments.

**Available Options**

This function supports all the options described in estimation options. This function accepts the following additional fields in `options.sm`:

(default`numInit``2`) : Initial number of mixture components.(default`tolCostDiff``0`) : Minimum decrease in cost to accept a SOMO operation.(default MVN distribution) : distribution structure defining the mixture component distribution type.`componentD`

`options.inner` can be used to set specific options for the inner estimations. To set options only for the partial or full inner estimations use `options.inner.partial` or `options.inner.full` respectively.

**Returned info fields**

The fields present in the returned `info` structure array, depend on the solver used (`options.solver`). When a Manopt solver is specified, the `info` returned by the Manopt solver is returned directly. For the 'default' solver see the documentation of the 'estimatedefault' function for the mixture distribution. You can read more at our documentation on estimation statistics structure.

**Example**

% generate 1000 random data points data = randn(1,1000) .* 2 + 1; % set some options options.solver = 'cg'; options.verbosity = 2; options.sm.numInit = 3; options.inner.partial.maxiter = 10; % fit mixture model to data [theta, D] = smile(data, 5, options)

**References**

- K. Blekas and I. E. Lagaris, “Split–Merge Incremental LEarning (SMILE) of Mixture Models,” in Artificial Neural Networks – ICANN 2007, J. M. de S?, L. A. Alexandre, W. Duch, and D. Mandic, Eds. Springer Berlin Heidelberg, 2007, pp. 291–300.