Question

J'ai un système de classification, que je dois malheureusement être vague sur pour des raisons de travail. Disons que nous avons 5 caractéristiques à prendre en compte, il est essentiellement un ensemble de règles:

A  B  C  D  E  Result
1  2  b  5  3  X
1  2  c  5  4  X
1  2  e  5  2  X

Nous prenons un sujet et ses valeurs par A-E, essayez les règles correspondant en séquence. Si l'on correspond à notre retour le premier résultat.

C est une valeur discrète, qui pourrait être l'un quelconque de a-e. Le reste ne sont que des entiers.

Le ruleset a été généré automatiquement à partir de notre ancien système et a un très grand nombre de règles (~ 25 millions). Les anciennes règles étaient si des déclarations, par exemple.

result("X") if $A >= 1 && $A <= 10 && $C eq 'A';

Comme vous pouvez le voir, les anciennes règles n'utilisent souvent même pas certaines fonctionnalités, ou acceptent des plages. Certains sont plus ennuyeux:

result("Y") if ($A == 1 && $B == 2) || ($A == 2 && $B == 4);

Le ruleset doit être beaucoup plus petite car il doit être maintenu humain, donc j'aimerais réduire les ensembles de règles de sorte que le premier exemple deviendrait:

A  B  C    D  E    Result
1  2  bce  5  2-4  X

Le résultat est que l'on peut diviser l'ensemble de règles de la colonne Résultat et rétrécir chacun indépendamment. Cependant, je ne peux pas penser à un moyen facile d'identifier et de rétrécir la base de règles. J'ai essayé algorithmes de regroupement mais parce que certains étouffer des données est discrète, et de le traiter comme continu est imparfait. Un autre exemple:

A  B  C   Result
1  2  a   X
1  2  b   X
(repeat a few hundred times)
2  4  a   X  
2  4  b   X
(ditto)

Dans un monde idéal, ce serait deux règles:

A  B  C  Result
1  2  *  X
2  4  *  X

C'est: l'algorithme serait non seulement d'identifier la relation entre A et B, mais serait également en déduire que C est le bruit (pas important pour la règle)

Est-ce que quelqu'un a une idée de la façon d'aller sur ce problème? Toute langue ou d'une bibliothèque est un jeu équitable, comme je l'attends que ce soit un processus essentiellement unique. Merci à l'avance.

Était-ce utile?

La solution

Consultez l'apprentissage automatique Weka

scroll top