object

# `isolation_forest_anomaly_detector`

Extended Isolation Forest (EIF) algorithm for anomaly detection. Implements the improved version described by Hariri et al. (2019) that uses random hyperplane cuts instead of axis-aligned cuts, eliminating score bias artifacts. Builds an ensemble of isolation trees from baseline training examples selected from a dataset object implementing the `anomaly_dataset_protocol` protocol. Missing attribute values are represented using anonymous variables.

Availability:
`logtalk_load(isolation_forest_anomaly_detector(loader))`
Author: Paulo Moura
Version: 2:0:0
Date: 2026-05-06
Compilation flags:
`static, context_switching_calls`
Imports:
`public` anomaly_detector_common
Uses:
fast_random(Algorithm)
format
integer
list
numberlist
pairs
type
Remarks:
(none)
Inherited public predicates:
anomaly_detector_options/2 check_anomaly_detector/1 check_option/1 check_options/1 default_option/1 default_options/1 diagnostic/2 diagnostics/2 export_to_clauses/4 export_to_file/4 learn/2 learn/3 option/2 option/3 predict/3 predict/4 print_anomaly_detector/1 valid_anomaly_detector/1 valid_option/1 valid_options/1

## Public predicates

### `score/3`

Computes the anomaly score for a given instance using the learned model. The instance is a list of `Attribute-Value` pairs where missing values are represented using anonymous variables. The score is in the range `[0.0, 1.0]`. Scores close to `1.0` indicate anomalies. Scores close to `0.5` or below indicate normal instances.

Compilation flags:
`static`
Template:
`score(Model,Instance,Score)`
Mode and number of proofs:
`score(+compound,+list,-float)` - `one`

### `score_all/3`

Computes the anomaly scores for all instances in the dataset. Returns a list of `Id-Class-Score` triples sorted by descending anomaly score.

Compilation flags:
`static`
Template:
`score_all(Dataset,Model,Scores)`
Mode and number of proofs:
`score_all(+object_identifier,+compound,-list)` - `one`

## Protected predicates

(no local declarations; see entity ancestors if any)

## Private predicates

(no local declarations; see entity ancestors if any)

## Operators

(none)

See also

anomaly_dataset_protocol, anomaly_detector_protocol, knn_distance_anomaly_detector, lof_anomaly_detector