Random Cut Forest (RCF) anomaly detection for PHP
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
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]);
$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);
}
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
)
View the changelog
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