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 * Data Sets by GroupLens Research AUTHOR Stanislaw Pusep 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.