NAME
Algorithm::SlopeOne - Slope One collaborative filtering for rated resources
VERSION
version 0.004
SYNOPSIS
#!/usr/bin/env perl
use
common::sense;
use
Algorithm::SlopeOne;
use
Data::Printer;
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
Slope One - Wikipedia article
Slope One Predictors for Online Rating-Based Collaborative Filtering - original paper
Collaborative filtering made easy - Python implementation by Bryan O'Sullivan (primary reference, test code)
github.com/ashleyw/Slope-One - Ruby port of the above by Ashley Williams (used to borrow test code)
Programming Collective Intelligence book by Toby Segaran
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.