NAME
Algorithm::AdaGrad - AdaGrad learning algorithm.
SYNOPSIS
use Algorithm::AdaGrad;
my $ag = Algorithm::AdaGrad->new(0.1);
$ag->update([
{ "label" => 1, "features" => { "R" => 1.0, "G" => 0.0, "B" => 0.0 } },
]);
$ag->update([
{ "label" => -1, "features" => { "R" => 0.0, "G" => 1.0, "B" => 0.0 } },
{ "label" => -1, "features" => { "R" => 0, "G" => 0, "B" => 1 } },
{ "label" => -1, "features" => { "R" => 0.0, "G" => 1.0, "B" => 1.0 } },
{ "label" => 1, "features" => { "R" => 1.0, "G" => 0.0, "B" => 1.0 } },
{ "label" => 1, "features" => { "R" => 1.0, "G" => 1.0, "B" => 0.0 } }
]);
my $result = $ag->classify({ "R" => 1.0, "G" => 1.0, "B" => 0.0 });
DESCRIPTION
Algorithm::AdaGrad is implementation of AdaGrad(Adaptive Gradient) online learning algorithm. This module can be use for binary classification.
METHODS
new($eta)
Constructor. $eta
is learning ratio.
update($learning_data)
Executes learning.
$learning_data
is ArrayRef like bellow.
$ag->update([
{ "label" => -1, "features" => { "R" => 0.0, "G" => 1.0, "B" => 0.0 } },
{ "label" => -1, "features" => { "R" => 0, "G" => 0, "B" => 1 } },
{ "label" => -1, "features" => { "R" => 0.0, "G" => 1.0, "B" => 1.0 } },
{ "label" => 1, "features" => { "R" => 1.0, "G" => 0.0, "B" => 1.0 } },
{ "label" => 1, "features" => { "R" => 1.0, "G" => 1.0, "B" => 0.0 } }
]);
features
is set of feature-string and value(real number) pair. label
is a expected output label (+1 or -1).
classify($features)
Executes binary classification. Returns 1 or -1.
$features
is HashRef like bellow.
my $result = $ag->classify({ "R" => 1.0, "G" => 1.0, "B" => 0.0 });
save($filename)
This method dumps the internal data of an object to a file.
load($filename)
This method restores the internal data of object from dumped file.
SEE ALSO
John Duchi, Elad Hazan, Yoram Singer. Adaptive Subgradient Methods for Online Learning and Stochastic Optimization http://www.magicbroom.info/Papers/DuchiHaSi10.pdf
LICENSE
Copyright (C) Hideaki Ohno.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
Hideaki Ohno <hide.o.j55@gmail.com>