nz.ac.waikato.mcennis.rat.graph.algorithm.machinelearning
Class MultiInstanceSVM

java.lang.Object
  extended by nz.ac.waikato.mcennis.rat.graph.model.ModelShell
      extended by nz.ac.waikato.mcennis.rat.graph.algorithm.machinelearning.MultiInstanceSVM
All Implemented Interfaces:
java.io.Serializable, Component, Algorithm, Model

public class MultiInstanceSVM
extends ModelShell
implements Algorithm

Derive globally using the same data as the AddMusicRecommendation algorithm. Takes the weka classifier as a parameter. See execute for how the propositionalization is performed.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class nz.ac.waikato.mcennis.rat.graph.model.ModelShell
listener
 
Constructor Summary
MultiInstanceSVM()
          Creates a new instance of OutputARFF
 
Method Summary
protected  void addInstances(Graph g, weka.core.Instances dataSet, Actor artist, int skipCount, int positiveSkipCount)
           
protected  int countTotal(Graph g)
           
protected  weka.core.Instances createDataSet(Actor[] artists)
           
protected  void evaluateClassifier(weka.classifiers.Classifier classifier, weka.core.Instances dataSet, Graph g, Actor toBePredicted)
           
protected  boolean evaluateResult(int count, int total)
           
 void execute(Graph g)
          Generate music predictions for a user as follows: Calculate all artists A present in the data set.
protected  weka.classifiers.Classifier getClassifier()
           
 InputDescriptor[] getInputType()
          The input type describes all the different kinds of graph objects that are utilized (and hence required) by this object.
 OutputDescriptor[] getOutputType()
          The output type describes all the different kinds of graph objects that are created during the execution of this algorithm.
 Parameter[] getParameter()
          List of all parameters this component accepts.
 Parameter getParameter(java.lang.String param)
          Returns the specific parameter identified by its key-name.
 SettableParameter[] getSettableParameter()
          Returns settable (i.e.
 SettableParameter getSettableParameter(java.lang.String param)
          Return the settable parameter namede by this key-name.
 void init(java.util.Properties map)
          Paramters are defined as follows: 'name' - name for this instance of this algorithm.
 int totalYes(Graph g, Actor a)
           
 
Methods inherited from class nz.ac.waikato.mcennis.rat.graph.model.ModelShell
addListener, fireChange
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface nz.ac.waikato.mcennis.rat.graph.model.Model
addListener
 

Constructor Detail

MultiInstanceSVM

public MultiInstanceSVM()
Creates a new instance of OutputARFF

Method Detail

execute

public void execute(Graph g)
Generate music predictions for a user as follows: Calculate all artists A present in the data set. Create a data set containing two numeric attributes (typically generated by the AddBasicInterestLink and AddMusicLinks algorithms), a boolean for every artist and a boolean class variable. These fields are populated as follows
For each artist, generate a 2-class classifier.
For every user, for every friend of the user: First two fields are the interest and music link (0 if absent). The artist fields are the music listened to by the friend The final field is whether or not the user listens to the music specified. For memory reasons, not all training data is used. FIXME: hard coded to a maximum 160 positive instances - should be a parameter

Specified by:
execute in interface Algorithm
Parameters:
g - graph to be modified

evaluateClassifier

protected void evaluateClassifier(weka.classifiers.Classifier classifier,
                                  weka.core.Instances dataSet,
                                  Graph g,
                                  Actor toBePredicted)
                           throws java.lang.Exception
Throws:
java.lang.Exception

evaluateResult

protected boolean evaluateResult(int count,
                                 int total)

totalYes

public int totalYes(Graph g,
                    Actor a)

countTotal

protected int countTotal(Graph g)

createDataSet

protected weka.core.Instances createDataSet(Actor[] artists)

addInstances

protected void addInstances(Graph g,
                            weka.core.Instances dataSet,
                            Actor artist,
                            int skipCount,
                            int positiveSkipCount)

getClassifier

protected weka.classifiers.Classifier getClassifier()

getInputType

public InputDescriptor[] getInputType()
Description copied from interface: Component
The input type describes all the different kinds of graph objects that are utilized (and hence required) by this object. This result is only guaranteed to be fixed if structural parameters are not modified. This is an empty array if there is no input.

Specified by:
getInputType in interface Component
Returns:
InputDescriptor array for this component
See Also:
InputDescriptor

getOutputType

public OutputDescriptor[] getOutputType()
Description copied from interface: Component
The output type describes all the different kinds of graph objects that are created during the execution of this algorithm. The result is only guaranteed to be fixed if structural parameters are not modified. This is an empty array if there is no output.

Specified by:
getOutputType in interface Component
Returns:
OutputDescriptor array for this component
See Also:
OutputDescriptor

getParameter

public Parameter[] getParameter()
Description copied from interface: Component
List of all parameters this component accepts. Each parameter also has a distinct key-name used when initializing the object using the init method. If there are no parameters, null is returned.

Specified by:
getParameter in interface Component
Returns:
read-only array of Parameters

getParameter

public Parameter getParameter(java.lang.String param)
Description copied from interface: Component
Returns the specific parameter identified by its key-name. If no parameter is found with this key-name, null is returned.

Specified by:
getParameter in interface Component
Parameters:
param - key-name of the parameter
Returns:
named parameter

getSettableParameter

public SettableParameter[] getSettableParameter()
Description copied from interface: Component
Returns settable (i.e. editable while running) parameters. If none exist, null is returned.

Specified by:
getSettableParameter in interface Component
Returns:
array of settable parameters

getSettableParameter

public SettableParameter getSettableParameter(java.lang.String param)
Description copied from interface: Component
Return the settable parameter namede by this key-name. If this parameter is not found or is not settable, null is returned.

Specified by:
getSettableParameter in interface Component
Parameters:
param - key-name of the parameter
Returns:
named settable parameter

init

public void init(java.util.Properties map)
Paramters are defined as follows:
  1. 'name' - name for this instance of this algorithm. Default 'Weka Classifier'.
  2. 'output' - directory where output is stored/ Default '/tmp/output'.
  3. 'artistType' - type (mode) of actor representing total artists. Default 'Artist'.
  4. 'groundTruthType'- type (relation) of link representing given musical tastes
  5. 'sourceType1' - type (relation) of link describing interest links. Default 'Interest'.
  6. 'sourceType2' - type (relation) of link describing music links. Default 'Music'.
  7. 'equalizeInstanceCounts' - Boolean describing whether to balance number of positive and negative instances. Deafult 'true'.
  8. 'userType' - type (mode) of actor representing the users consuming music. Default 'User'.
  9. 'classifierType' - type of Weka classifier. Default is 'J48'.


Input 0 - Link
Input 1 - Link
Input 2 - Link
Input 3 - Actor

Specified by:
init in interface Component
Parameters:
map - map of the given properties naming parameters and their values in a string