SoftwareFrom: Kamran Karimi karimi@cs.uregina.ca (via ML-List)Date: Tue 6/20/00 9:14 PM Subject: C4.5 can now speak PROLOG This is to announce the availability of a patch to enable C4.5 to speak Prolog. The patch file changes the c4.5rules program so that if the option '-p' is given on the command line, a file stem.pl Prolog file is created in addition to the normal output. It can generate code to handle rules involving equality (=), inequality (>, =<) and set member ship (in). Some of the benefits of having C4.5's rules in Prolog are: *) The rules extracted by C4.5 can become part of a larger system, thus integrating neatly with other Prolog code. This could be of great help in expert systems for example. *) The rules can be executed by a Prolog interpreter in any order: from the condition attributes to the decisision attribute, from the decision attribute to the condition attributes, or from the decision attribute and certain condition attributes to other condition attributes. I've used operators and functions capable of "unification" to achieve this. For example, if the rule is: If {(A = 1) AND (B = 3)} then (class = 2) would become: class(A, B, 2) :- A = 1, B = 3. Since '=' is a unifying operator, a query like class(A, B, 2), which goes from the decision attribute back to condition attributes, works. The same holds for a "normal" query like class(1, 3, C), which determines the decision attribute. C4.5's rules can be turned into recursive rules by the introduction of the decision attribute as a condition attribute. A very simple example is: a(B, 1) :- a(_, 2), B = 1. (read: to get to class 1, get to class 2 and set B to 1, or if B is already unified, check that B is 1). Prolog can readily tackle such rules. We are working on interesting areas where this kind of usage makes sense. You can download the patch file freely by anonymous FTP from ftp://orion.cs.uregina.ca/pub/c4.5p/r8p.patch, or by contacting me. It is a text file and should be applied to standard C4.5 Release 8 files with the 'patch' command. The new functionality is then available after a compile. You can get C4.5's sources from http://www.cse.unsw.edu.au/~quinlan/ I'd be happy to receive your comments/bug reports on the ideas and the implementation. Kamran Karimi karimi@cs.uregina.ca http://www.cs.uregina.ca/~karimi |
Copyright © 2000 KDnuggets. Subscribe to KDnuggets News!