# Sparseness

## Description

Generic function that computes the sparseness of an object, as defined by Hoyer (2004). The sparseness quantifies how much energy of a vector is packed into only few components.

## Usage

`sparseness(x, ...)`

## Arguments

x
an object whose sparseness is computed.
...
extra arguments to allow extension

## Value

usually a single numeric value -- in [0,1], or a numeric vector. See each method for more details.

## Details

In Hoyer (2004), the sparseness is defined for a real vector `x` as:

``` (srqt(n) - ||x||_1 / ||x||_2) /
(sqrt(n) - 1)

, where `n` is the length of `x`.

The sparseness is a real number in `[0,1]`. It is
equal to 1 if and only if `x` contains a single
nonzero component, and is equal to 0 if and only if all
components of `x` are equal. It interpolates
smoothly between these two extreme values. The closer to
1 is the sparseness the sparser is the vector.

The basic definition is for a `numeric` vector, and
is extended for matrices as the mean sparseness of its
column vectors.

```

## Methods

1. sparseness`signature(x = "numeric")`: Base method that computes the sparseness of a numeric vector.

It returns a single numeric value, computed following the definition given in section Description.

2. sparseness`signature(x = "matrix")`: Computes the sparseness of a matrix as the mean sparseness of its column vectors. It returns a single numeric value.

3. sparseness`signature(x = "NMF")`: Compute the sparseness of an object of class `NMF`, as the sparseness of the basis and coefficient matrices computed separately.

It returns the two values in a numeric vector with names ‘basis’ and ‘coef’.

## References

Hoyer P (2004). "Non-negative matrix factorization with sparseness constraints." _The Journal of Machine Learning Research_, *5*, pp. 1457-1469. .

Other assess: `entropy`, `purity`