********************************
PreJu - The Prediction Justifier
********************************

Overview

This package contains a framework for generating justifications for machine learning predictions and some simple implementations. 


Usage

PreJu can be used as an API that plugs in to machine learning packages. A sample implementation exists for Weka's Logistic classifier, 
with a corresponding sample usage class (edu.columbia.preju.app.WekaSample). Running the sample class' main method will train a Weka 
Logistic classifier with 9/10 of the UCI Congressional Voting Records dataset and use it to classify a single test instance, output an 
XML representation of the prediction into the working directory, and output the justification in html format into the working directory. 

It can also be used as a command line tool using the edu.columbia.preju.app.GenerateJustification class. The main method expects two 
arguments - an XML file containing the prediction (this can be output from a machine learning package, as shown in the Weka sample, 
using the Prediction interface's exportToXml() method, or it can be imported from any other source that can create such a file) and 
an XML file containing the configuration of the justification. Two sample configurations and one sample prediction XML can be found 
in the samples/ directory. 


Paper

The paper describing this tool and the framework, which is the one to cite if you use this package, is:

Or Biran and Kathleen McKeown
Justification Narratives for Individual classifications
In proceedings of the AutoML workshop at ICML 2014, Beijing, China


Dependencies

The following free (under various licenses) libraries are included and required to use this package:

- Apache Commons Lang 3.4 (Apache)
- JDOM 2.0.5  (Apache-style)
- JFreeChart 1.0.14 and JCommon 1.0.17  (LGPL)
- JGraphT 0.8.3 (LGPL)
- Weka 3.6 (GPL) - required only to use as an API with the Weka adapter


License  (GPL)

    PreJu - The Prediction Justifier
    Copyright (C) 2014  Or Biran

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.


Contact

For any questions or feedback, please contact Or Biran at orb@cs.columbia.edu
    