ankane/rcf

Random Cut Forest anomaly detection for PHP

v0.2.0 2024-10-24 06:44 UTC

This package is not auto-updated.

Last update: 2024-12-19 07:17:14 UTC


README

Random Cut Forest (RCF) anomaly detection for PHP

Build Status

Installation

Run:

composer require ankane/rcf

Add scripts to composer.json to download the shared library:

    "scripts": {
        "post-install-cmd": "Rcf\\Vendor::check",
        "post-update-cmd": "Rcf\\Vendor::check"
    }

And run:

composer install

Getting Started

Create a forest with 3 dimensions

$forest = new Rcf\Forest(3);

Score a point

$forest->score([1.0, 2.0, 3.0]);

Update with a point

$forest->update([1.0, 2.0, 3.0]);

Example

$forest = new Rcf\Forest(3);

for ($i = 0; $i < 200; $i++) {
    $point = [];
    $point[0] = mt_rand() / mt_getrandmax();
    $point[1] = mt_rand() / mt_getrandmax();
    $point[2] = mt_rand() / mt_getrandmax();

    // make the second to last point an anomaly
    if ($i == 198) {
        $point[1] = 2;
    }

    $score = $forest->score($point);
    echo "point = $i, score = $score\n";
    $forest->update($point);
}

Parameters

Set parameters

new Rcf\Forest(
    $dimensions,
    shingleSize: 1,         // shingle size to use
    sampleSize: 256,        // points to keep in sample for each tree
    numberOfTrees: 100,     // number of trees to use in the forest
    randomSeed: 42,         // random seed to use
    parallel: false         // enable parallel execution
)

References

History

View the changelog

Contributing

Everyone is encouraged to help improve this project. Here are a few ways you can help:

To get started with development:

git clone https://github.com/ankane/random-cut-forest-php.git
cd random-cut-forest-php
composer install
composer test