Learn R Programming

kappalab (version 0.4-12)

heuristic.ls.capa.ident: Heuristic least squares capacity identification

Description

Creates an object of class capacity or game by means of the heuristic algorithm proposed by Grabisch (1995). More precisely, given a set of data under the form: datum=(score on criterion 1, ..., score on criterion n, overall score), this function heuristically determines a capacity that should be close to minimizing the sum of squared errors between overall scores as given by the data and the output of the Choquet integral for those data. See reference hereafter for more details.

Usage

heuristic.ls.capa.ident(n, mu, C, g, Integral="Choquet", maxiter = 500,
                        alpha = 0.01, epsilon = 1e-6)

Value

The function returns a list structured as follows:

solution

Object of class capacity if the solution is montone or of class game otherwise.

n.iter

Number of iterations taken by the algorithm.

residuals

Differences between the provided global evaluations and those returned by the obtained model.

mse

Mean square error between the provided global evaluations and those returned by the obtained model.

Arguments

n

Object of class numeric containing the number of elements of the set on which the object of class Mobius.capacity is to be defined.

mu

Object of class capacity containing the initial capacity. It should be initialized to the equidistributed capacity.

C

Object of class matrix containing the n-column criteria matrix. Each line of this matrix corresponds to a vector of the form: (score on criterion 1, ..., score on criterion n).

g

Object of class numeric containg the global scores associated with the vectors given in the criteria matrix.

Integral

Object of class character indicating whether the model is based on the asymmetric Choquet integral (Integral = "Choquet") or the symmetric Choquet integral (Integral = "Sipos").

maxiter

Maximum number of iterations.

alpha

Object of class numeric containing the coefficient of the gradient (multiplicative coefficient of the partial derivative). Its value lies in [0,1]. The higher the value, the larger the move of the capacity at each iteration.

epsilon

Object of class numeric used for defining a stopping criterion. Iterations are stopped if one of the following cases happen: 1) itmax iterations have been performed 2) the error criterion is growing up 3) normax < epsilon, where normax is the maximum absolute normalized model error, i.e., the maximum over all data of the quantity |e|/outmax, where e=desired output - model output, and outmax is the highest value of the absolute value of the model output

Details

The algorithm is explained in details in the reference hereafter.

References

M. Grabisch (1995), A new algorithm for identifying fuzzy measures and its application to pattern recognition, Int. Joint Conf. of the 4th IEEE Int. Conf. on Fuzzy Systems and the 2nd Int. Fuzzy Engineering Symposium, Yokohama, Japan, 145-150.

See Also

capacity-class,
least.squares.capa.ident,
lin.prog.capa.ident,
mini.var.capa.ident,
mini.dist.capa.ident,
ls.sorting.capa.ident,
ls.ranking.capa.ident,
entropy.capa.ident.

Examples

Run this code

## number of criteria
n <- 4

## the number of alternatives
n.a <- 1000

## a randomly generated 5-criteria matrix
C <- matrix(rnorm(n*n.a,10,2),n.a,n)

## the corresponding global scores
g <- numeric(n.a)

## generate a random capacity
x <- runif(2^n-1)
for (i in 2:(2^n-1))
    x[i] <- x[i] + x[i-1]
mu <- normalize(capacity(c(0,x)))
for (i in 1:n.a)
  g[i] <- Choquet.integral(mu,C[i,])

## the initial capacity
## here the uniform capacity
mu.in <- as.capacity(uniform.capacity(n))

## the solution 
hlsc <- heuristic.ls.capa.ident(n,mu.in,C,g)
mu.sol <- hlsc$solution

## the difference between mu and mu.sol
mu@data - mu.sol@data

hlsc

Run the code above in your browser using DataLab