# `ORTO`

### *class* capymoa.regressor.ORTO[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/regressor/_orto.py#L11)

Bases: [`MOARegressor`](capymoa.base.MOARegressor.md#capymoa.base.MOARegressor)

Implementation of the Online Regression Tree with Options (ORTO).

ORTO is an extension to FIMT-DD that allows options during the tree’s growth and splits.

Reference:

[Ikonomovska, Elena, Joao Gama, Bernard Zenko, and Saso Dzeroski.
“Speeding-up hoeffding-based regression trees with options.”
In Proceedings of the 28th International Conference on Machine Learning (ICML-11), pp. 537-544. 2011.](https://icml.cc/2011/papers/349_icmlpaper.pdf)

Example usage:

```pycon
>>> from capymoa.datasets import Fried
    >>> from capymoa.regressor import ORTO
    >>> from capymoa.evaluation import prequential_evaluation
>>> stream = Fried()
>>> schema = stream.get_schema()
>>> learner = ORTO(schema)
>>> results = prequential_evaluation(stream, learner, max_instances=1000)
>>> results["cumulative"].rmse()
9.228075678265904
```

#### \_\_init_\_(schema: [Schema](capymoa.stream.Schema.md#capymoa.stream.Schema), max_trees: [int](https://docs.python.org/3/builtins/functions.html#int) = 10, max_option_level: [int](https://docs.python.org/3/builtins/functions.html#int) = 10, option_decay_factor: [float](https://docs.python.org/3/builtins/functions.html#float) = 0.9, option_fading_factor: [float](https://docs.python.org/3/builtins/functions.html#float) = 0.9995, split_criterion: [SplitCriterion](capymoa.core.moa.splitcriteria.SplitCriterion.md#capymoa.core.moa.splitcriteria.SplitCriterion) | [str](https://docs.python.org/3/builtins/stdtypes.html#str) = 'VarianceReductionSplitCriterion', grace_period: [int](https://docs.python.org/3/builtins/functions.html#int) = 200, split_confidence: [float](https://docs.python.org/3/builtins/functions.html#float) = 1.0e-7, tie_threshold: [float](https://docs.python.org/3/builtins/functions.html#float) = 0.05, page_hinckley_alpha: [float](https://docs.python.org/3/builtins/functions.html#float) = 0.005, page_hinckley_threshold: [int](https://docs.python.org/3/builtins/functions.html#int) = 50, alternate_tree_fading_factor: [float](https://docs.python.org/3/builtins/functions.html#float) = 0.995, alternate_tree_t_min: [int](https://docs.python.org/3/builtins/functions.html#int) = 150, alternate_tree_time: [int](https://docs.python.org/3/builtins/functions.html#int) = 1500, regression_tree: [bool](https://docs.python.org/3/builtins/functions.html#bool) = False, learning_ratio: [float](https://docs.python.org/3/builtins/functions.html#float) = 0.02, learning_ratio_decay_factor: [float](https://docs.python.org/3/builtins/functions.html#float) = 0.001, learning_ratio_const: [bool](https://docs.python.org/3/builtins/functions.html#bool) = False, random_seed: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [None](https://docs.python.org/3/builtins/constants.html#None)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/regressor/_orto.py#L36)

Construct ORTO.

* **Parameters:**
  * **max_trees** – The maximum number of trees contained in the option tree.
  * **max_option_level** – The maximal depth at which option nodes can be created.
  * **option_decay_factor** – The option decay factor that determines how many options can be selected at a given level.
  * **option_fading_factor** – The fading factor used for comparing subtrees of an option node.
  * **split_criterion** – Split criterion to use.
  * **grace_period** – Number of instances a leaf should observe between split attempts.
  * **split_confidence** – Allowed error in split decision, values close to 0 will take long to decide.
  * **tie_threshold** – Threshold below which a split will be forced to break ties.
  * **page_hinckley_alpha** – Alpha value to use in the Page Hinckley change detection tests.
  * **page_hinckley_threshold** – Threshold value used in the Page Hinckley change detection tests.
  * **alternate_tree_fading_factor** – Fading factor used to decide if an alternate tree should replace an original.
  * **alternate_tree_t_min** – Tmin value used to decide if an alternate tree should replace an original.
  * **alternate_tree_time** – The number of instances used to decide if an alternate tree should be discarded.
  * **regression_tree** – Build a regression tree instead of a model tree.
  * **learning_ratio** – Learning ratio to used for training the Perceptrons in the leaves.
  * **learning_ratio_decay_factor** – Learning rate decay factor (not used when learning rate is constant).
  * **learning_ratio_const** – Keep learning rate constant instead of decaying.

#### cli_help()[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/base/_regressor.py#L53)

#### *classmethod* from_params(schema: [Any](https://docs.python.org/3/library/typing.html#typing.Any) = None, params: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None, random_seed: [int](https://docs.python.org/3/builtins/functions.html#int) = 1) → [Any](https://docs.python.org/3/library/typing.html#typing.Any)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/base/_learner_params.py#L170)

Construct an instance from parameters produced by `get_params`.

#### get_params() → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)][[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/base/_learner_params.py#L163)

Return the hyper-parameters captured from the constructor.

#### predict(instance)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/base/_regressor.py#L59)

#### train(instance)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/base/_regressor.py#L56)
