The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

NAME

Algorithm::SlopeOne - Slope One collaborative filtering for rated resources

VERSION

version 0.004

SYNOPSIS

#!/usr/bin/env perl
my $s = Algorithm::SlopeOne->new;
$s->add([
{
squid => 1.0,
cuttlefish => 0.5,
octopus => 0.2,
}, {
squid => 1.0,
octopus => 0.5,
nautilus => 0.2,
}, {
squid => 0.2,
octopus => 1.0,
cuttlefish => 0.4,
nautilus => 0.4,
}, {
cuttlefish => 0.9,
octopus => 0.4,
nautilus => 0.5,
},
]);
p $s->predict({ squid => 0.4 });
# Output:
# \ {
# cuttlefish 0.25,
# nautilus 0.1,
# octopus 0.233333333333333
# }

DESCRIPTION

Perl implementation of the Weighted Slope One rating-based collaborative filtering scheme.

ATTRIBUTES

diffs

Differential ratings matrix.

freqs

Ratings count matrix.

METHODS

clear

Reset the instance.

add($userprefs)

Update matrices with user preference data, accepts a HashRef or an ArrayRef of HashRefs:

$s->predict({ StarWars => 5, LOTR => 5, StarTrek => 3, Prometheus => 1 });
$s->predict({ StarWars => 3, StarTrek => 5, Prometheus => 4 });
$s->predict([
{ IronMan => 4, Avengers => 5, XMen => 3 },
{ XMen => 5, DarkKnight => 5, SpiderMan => 3 },
]);

predict($userprefs)

Recommend new items given known item ratings.

$s->predict({ StarWars => 5, LOTR => 5, Prometheus => 1 });

TODO

Implement Non-Weighted and Bi-Polar Slope One schemes.

REFERENCES

AUTHOR

Stanislaw Pusep <stas@sysd.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Stanislaw Pusep.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.