ankane / rcf
Random Cut Forest anomaly detection for PHP
v0.2.0
2024-10-24 06:44 UTC
Requires
- php: >= 8.1
- ext-ffi: >= 8.1
Requires (Dev)
- phpunit/phpunit: ^10
This package is not auto-updated.
Last update: 2024-12-19 07:17:14 UTC
README
Random Cut Forest (RCF) anomaly detection for PHP
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:
- Report bugs
- Fix bugs and submit pull requests
- Write, clarify, or fix documentation
- Suggest or add new features
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