All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gov.sandia.cognition.learning.algorithm.BatchLearner Maven / Gradle / Ivy

There is a newer version: 4.0.1
Show newest version
/*
 * File:                BatchLearner.java
 * Authors:             Justin Basilico and Kevin R. Dixon
 * Company:             Sandia National Laboratories
 * Project:             Cognitive Foundry
 *
 * Copyright June 21, 2007, Sandia Corporation.  Under the terms of Contract
 * DE-AC04-94AL85000, there is a non-exclusive license for use of this work by
 * or on behalf of the U.S. Government. Export of this program may require a
 * license from the United States Government. See CopyrightHistory.txt for
 * complete details.
 *
 */

package gov.sandia.cognition.learning.algorithm;

import gov.sandia.cognition.annotation.CodeReview;
import gov.sandia.cognition.util.CloneableSerializable;

/**
 * The {@code BatchLearner} interface defines the general functionality
 * of an object that is the implementation of a data-driven, batch  machine 
 * learning algorithm. It unifies the interfaces for both supervised and 
 * unsupervised learning, but as such is extremely general. The interface 
 * defines that a learning algorithm takes in some type of data and produces 
 * some type of object as output from the data.
 * 

* Typically the input to the learning algorithm will be some collection of * data (training data) and the output will be some form of pattern recognizer * (classifier/categorizer). *

* The design pattern for machine learning algorithms is to have all the * parameters and configuration of the algorithm set on the {@code BatchLearner} * object (usually as a Java Bean) and then the data is passed in using the * learn method to create the result object of the learning algorithm. *

* The interface is for a "batch" machine learning algorithm because the call * to the learn method is expected to create a usable object from scratch using * the provided data. *

* If you implement this without really using a learning algorithm you will * make the authors very sad (especially Justin). * * @param The type of the data that the algorithm uses to perform * the learning. For example, a * {@code Collection>} or * {@code String}. * @param The type of object created by the learning algorithm. * For example, a {@code FeedforwardNeuralNetwork}. * @author Justin Basilico * @author Kevin R. Dixon * @since 2.0 * @see IncrementalLearner */ @CodeReview( reviewer="Kevin R. Dixon", date="2008-07-22", changesNeeded=false, comments="Interface looks fine." ) public interface BatchLearner extends CloneableSerializable { /** * The {@code learn} method creates an object of {@code ResultType} using * data of type {@code DataType}, using some form of "learning" algorithm. * * @param data The data that the learning algorithm will use to create an * object of {@code ResultType}. * @return The object that is created based on the given data using the * learning algorithm. */ ResultType learn( DataType data); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy