The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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

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.