|
Bayesian Fisher's discriminantThis page describes how to use the so-called Bayesian Fisher Discriminant (BFD) software, which is available for download here. Please note that in the subsequent discussion we will be using these references:
Release InformationCurrent release is 0.12 Release 0.12 was used for the experiments presented in [1]. The code was written with flexibility in mind so probably there is room to make improvements in terms of efficiency of computation. Release 0.11 corresponds to the results presented in [2]. The BFD software requires some functions, written by Neil D. Lawrence, that have been put together in form of the NDLUTIL toolbox. You may access this toolbox with the username and password you are given when you register for the BFD toolbox. There are many versions of this toolbox but we recommend only a few of them in order to obatin the results of [1].
To obtain the classification results for benchmark data it will be necessary to download Gunnar Rätsch's data, available at [5]. You will also need the function normal, written by Ian T. Nabney. Note: this function does not belong to the Netlab toolbox, but is rather a worked example. Please give a read to the readme.txt file that comes in this distribution to have more details about the installation procedure. ExamplesSynthetic datasetsThe experiments with synthetic data, presented in [1], can be recreated by using the function Given the inputs ,where the parameter vector The ARD-composed kernel is defined as with a vector of parameters given by RBF experimentsJust run the following commands from Matlab's command prompt For each dataset ( ![]() ![]() Classification of synthetic datasets using an RBF kernel. Two classes are shown as pluses and circles. The separating line, in blue, was obtained by projecting test data over a grid. The dotted line indicates points at 1/4 of the distance, as measured in projected space, from the decision boundary to the class mean. The blue line was obtained after training a BFD model by maximising the marginal log-likelihood, L.   Left: Spiral data, with bound after training L=658.6107.   Right: Overlap data with final bound L=638.5258. In both problems the parameters were initialised to ![]() ![]() Left: Bumpy data with final bound L=609.0547.   Right: Relevance data, with bound L=895.7308. For both problems the initial parameters were set to ARD experimentsIn order to run experiments with the ARD-composed kernel, it is necessary to use a different value for the variable The script should produce the plots shown below. ![]() ![]() Left: Spiral data, with final L=674.2042. In this experiment we initialised Right: Overlap data, with final L=650.0908. This experiment used as initial parameters ![]() ![]() Left: Bumpy data, with final L=636.8442.   Right: Relevance data, with final L=998.9992. In both problems we used an initial Generating ROC curves and computing AUC'sThere are several demos included in this distribution and two of them were specifically written to obtain some of the results presented in Table 1 of reference [1]. More specifically, these demos generate ROC curves for either banana or breast-cancer data and then obtain statistics related to the AUC's (area under ROC curves). The first demo can be run from the command-line as shown below After execution, a file <bfd-path>/bananaROC/ will be stored, for example a copy of the ROC curve for every test instance of banana.
The second demo does the analogue process for breast-cancer. Hence it is required to run
Note on ROC curvesDuring execution of either of the scripts ( ![]() ![]() Some ROC curves of the test instances of banana. Left: First instance. Right: Second instance. ![]() ![]() Some ROC curves of the test instances of breast-cancer. Left: First instance. Right: Second instance. Additional ROC-AUC demoAn extra script obtains ROC curves (and additional statistics) for the heart dataset; this time according to the results of Table 2 of reference [1]. Again, it is only a matter of running a script.
Generating histograms of projected dataThe histograms presented in Figure 10 of reference [1] can be created by running two scripts. The first script
<bfd-path>/twonorm_avgHistogram. Among other things, a couple of .eps files will contain the average histograms of training and test data. Such histograms should be like the ones below.
![]() ![]() Left: Histogram of projected data for training instances of twonorm Right: Histogram of projected data for test instances of twonorm. The batch of histograms of waveform are obtained by running the script
![]() ![]() Left: Histogram of projected data for training instances of waveform Right: Histogram of projected data for test instances of waveform Other experimentsFurther experiments can be carried out by modifying the scripts previously mentioned of by using the functionsbfdClassifyData and bfdClassifyToyData. Please note that in order to recreate the results of [1], it will also be necessary to read the file experimentResults.txt included in this distribution.
Tonatiuh Pena Centeno 2006-02-11 |