Preparatory Stage

Recently, I am studying the interesting model of evaluation model, but I saw a lot of information about PCA or entropy weight method. Of course, these methods is really excellent, but they are so old, and as I know, the entropy is depended on the amount of the variable information. To some extend, it’s not so fit for our requirements, so I has found a rare method of this problem, which called Projection Pursuit

What is Projection Pursuit

Actually, the core of this method is such a easy problem. We just need to project the data from high dimensions onto the single dimension, then we could complete the evaluation process. But this method turn the evaluation to an optimization problem.

First of all, we need to normalize the data and make the value of variable become the range of [0,1].

$$ X^{\prime} = \frac{X - X_{min}}{X_{max}-X_{min}} $$

Then we could construct the projection function, and the original data could times direction vector then project them onto the low dimension and the projection funcion could be there. $$ z_i = \sum_{j=1}^m a_j x_{ij} $$ The $a$ is the direction vector, and the $x_{ij}$ is the index value.

After that, we could get the target function and the subject conditions, if the X has $m$ dimensions the whole equation would be this.

$$ \begin{cases} \operatorname{max} Q(a) = \sigma \times D_z \\ \operatorname{s.t.} \sum_{j=1}^m a_j^2 = 1, a_j \in [0,1] \end{cases} $$

In this equation, the $\sigma$ and $D_z$ is this.

$$ \sigma = \sqrt{\frac{\sum_{i=1}^n (z_i - z_{mean})^2}{n-1} }\\ D_z = \sum_{i=1}^n \sum_{j=1}^n (R-r_{ij}) o (R - r_{ij}) $$

The $\sigma$ is the standard deviation of $z_i$ and the $D_z$ is the local density, $R$ is the window radius for local density, $r_{ij}$ is the distance between sample, the $o{\tau}$ is the unit step function, when $\tau \ge 0$, the value of it is 1, if $\tau < 0$, the value is 0.

Then we could use a lot of optimization to solve this problem, and we could get the result by MATLAB easily.

Here I provide a function which is made by MATLAB.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
function y=Energy(x,S)
    x=x/norm(x);
    %disp(x);
    Z=S*x;
    %disp(Z);
    Sz=std(Z);
    [Z1,Z2] = meshgrid(Z,Z);
    rik = abs(Z2-Z1);
    %R=max(max(rik))/3;
    R=max(max(rik))+9;
    Y=R-rik;
    Dz = sum(Y(Y>0));
    y=Sz*Dz;
end

Finally, we could get the value of goal function, and I have used Multi-Agent Genetic Algorithm to solve this problem.

Then we could know the weight of each variable.

At last, even though it seems that some people don’t pay attention to this method of evaluation, but I think it’s a great way to combine the optimazation with the evaluation.