gov.sandia.cognition.learning.function.kernel
Class SigmoidKernel

java.lang.Object
  extended by gov.sandia.cognition.util.AbstractCloneableSerializable
      extended by gov.sandia.cognition.learning.function.kernel.SigmoidKernel
All Implemented Interfaces:
Kernel<Vectorizable>, CloneableSerializable, Serializable, Cloneable

@CodeReview(reviewer="Kevin R. Dixon",
            date="2009-07-08",
            changesNeeded=false,
            comments={"Made clone call super.clone.","Looks fine otherwise."})
public class SigmoidKernel
extends AbstractCloneableSerializable
implements Kernel<Vectorizable>

The SigmoidKernel class implements a sigmoid kernel based on the hyperbolic tangent. The kernel it computes is: tanh(kappa * (x dot y) + c)

Since:
2.0
Author:
Justin Basilico
See Also:
Serialized Form

Field Summary
protected  double constant
          The constant used in the sigmoid.
static double DEFAULT_CONSTANT
          The default value for the constant is 0.0.
static double DEFAULT_KAPPA
          The default value for kappa is 1.0.
protected  double kappa
          The kappa value to multiply times the dot product.
 
Constructor Summary
SigmoidKernel()
          Creates a new instance of SigmoidKernel with default values of 1.0 for kappa and 0.0 for the constant.
SigmoidKernel(double kappa, double constant)
          Creates a new instance of SigmoidKernel from its two needed parameters: kappa and a constant.
SigmoidKernel(SigmoidKernel other)
          Creates a new copy of a SigmoidKernel.
 
Method Summary
 SigmoidKernel clone()
          This makes public the clone method on the Object class and removes the exception that it throws.
 double evaluate(Vectorizable x, Vectorizable y)
          Evaluates the sigmoid kernel between the two given vectors, which is: tanh(kappa * (x dot y) + c)
 double getConstant()
          Gets the constant inside of the sigmoid kernel.
 double getKappa()
          Gets kappa, the value multiplied by the dot product of the two vectors before it is passed to the hyperbolic tangent function.
 void setConstant(double constant)
          Sets the constant inside of the sigmoid kernel.
 void setKappa(double kappa)
          Sets kappa, the value multiplied by the dot product of the two vectors before it is passed to the hyperbolic tangent function.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_KAPPA

public static final double DEFAULT_KAPPA
The default value for kappa is 1.0.

See Also:
Constant Field Values

DEFAULT_CONSTANT

public static final double DEFAULT_CONSTANT
The default value for the constant is 0.0.

See Also:
Constant Field Values

kappa

protected double kappa
The kappa value to multiply times the dot product.


constant

protected double constant
The constant used in the sigmoid.

Constructor Detail

SigmoidKernel

public SigmoidKernel()
Creates a new instance of SigmoidKernel with default values of 1.0 for kappa and 0.0 for the constant.


SigmoidKernel

public SigmoidKernel(double kappa,
                     double constant)
Creates a new instance of SigmoidKernel from its two needed parameters: kappa and a constant. The kernel it evaluates is: tanh(kappa * (x dot y) + c)

Parameters:
kappa - The value multiplied by the dot product of the two vectors before it is passed to the hyperbolic tangent function.
constant - The constant inside of the sigmoid kernel.

SigmoidKernel

public SigmoidKernel(SigmoidKernel other)
Creates a new copy of a SigmoidKernel.

Parameters:
other - The SigmoidKernel to copy.
Method Detail

clone

public SigmoidKernel clone()
Description copied from class: AbstractCloneableSerializable
This makes public the clone method on the Object class and removes the exception that it throws. Its default behavior is to automatically create a clone of the exact type of object that the clone is called on and to copy all primitives but to keep all references, which means it is a shallow copy. Extensions of this class may want to override this method (but call super.clone() to implement a "smart copy". That is, to target the most common use case for creating a copy of the object. Because of the default behavior being a shallow copy, extending classes only need to handle fields that need to have a deeper copy (or those that need to be reset). Some of the methods in ObjectUtil may be helpful in implementing a custom clone method. Note: The contract of this method is that you must use super.clone() as the basis for your implementation.

Specified by:
clone in interface CloneableSerializable
Overrides:
clone in class AbstractCloneableSerializable
Returns:
A clone of this object.

evaluate

public double evaluate(Vectorizable x,
                       Vectorizable y)
Evaluates the sigmoid kernel between the two given vectors, which is: tanh(kappa * (x dot y) + c)

Specified by:
evaluate in interface Kernel<Vectorizable>
Parameters:
x - The first vector.
y - The second vector.
Returns:
The result of the sigmoid kernel: tanh(kappa * (x dot y) + c)

getKappa

public double getKappa()
Gets kappa, the value multiplied by the dot product of the two vectors before it is passed to the hyperbolic tangent function.

Returns:
The kappa value for the sigmoid kernel.

setKappa

public void setKappa(double kappa)
Sets kappa, the value multiplied by the dot product of the two vectors before it is passed to the hyperbolic tangent function.

Parameters:
kappa - The kappa value for the sigmoid kernel.

getConstant

public double getConstant()
Gets the constant inside of the sigmoid kernel.

Returns:
The constant term used for the sigmoid kernel.

setConstant

public void setConstant(double constant)
Sets the constant inside of the sigmoid kernel.

Parameters:
constant - The constant term used for the sigmoid kernel.