All Projects → Evovest → EvoTrees.jl

Evovest / EvoTrees.jl

Licence: Apache-2.0 license
Boosted trees in Julia

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to EvoTrees.jl

Machine Learning
⚡机器学习实战(Python3):kNN、决策树、贝叶斯、逻辑回归、SVM、线性回归、树回归
Stars: ✭ 5,601 (+5086.11%)
Mutual labels:  regression, logistic, decision-tree
Lightgbm
A fast, distributed, high performance gradient boosting (GBT, GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning tasks.
Stars: ✭ 13,293 (+12208.33%)
Mutual labels:  gbrt, gradient-boosting
Ailearning
AiLearning: 机器学习 - MachineLearning - ML、深度学习 - DeepLearning - DL、自然语言处理 NLP
Stars: ✭ 32,316 (+29822.22%)
Mutual labels:  regression, logistic
Awesome Decision Tree Papers
A collection of research papers on decision, classification and regression trees with implementations.
Stars: ✭ 1,908 (+1666.67%)
Mutual labels:  decision-tree, gradient-boosting
fast retraining
Show how to perform fast retraining with LightGBM in different business cases
Stars: ✭ 56 (-48.15%)
Mutual labels:  gbrt, boosted-trees
Lightautoml
LAMA - automatic model creation framework
Stars: ✭ 196 (+81.48%)
Mutual labels:  regression, gradient-boosting
decision-trees-for-ml
Building Decision Trees From Scratch In Python
Stars: ✭ 61 (-43.52%)
Mutual labels:  decision-tree, gradient-boosting
cheapml
Machine Learning algorithms coded from scratch
Stars: ✭ 17 (-84.26%)
Mutual labels:  regression, gradient-boosting
jGeneticNeuralNet
A Java library that trains neural networks with a genetic algorithm.
Stars: ✭ 16 (-85.19%)
Mutual labels:  regression
The-Supervised-Learning-Workshop
An Interactive Approach to Understanding Supervised Learning Algorithms
Stars: ✭ 24 (-77.78%)
Mutual labels:  regression
Quick-Data-Science-Experiments-2017
Quick-Data-Science-Experiments
Stars: ✭ 19 (-82.41%)
Mutual labels:  decision-tree
Cuff less BP Prediction
Prediction of Blood Pressure from ECG and PPG signals using regression methods.
Stars: ✭ 101 (-6.48%)
Mutual labels:  regression
needlestack
Multi-sample somatic variant caller
Stars: ✭ 45 (-58.33%)
Mutual labels:  regression
psyplot
Python package for interactive data visualization
Stars: ✭ 64 (-40.74%)
Mutual labels:  regression
smooth
The set of smoothing functions used for time series analysis and in forecasting.
Stars: ✭ 78 (-27.78%)
Mutual labels:  regression
LIBSVM.jl
LIBSVM bindings for Julia
Stars: ✭ 74 (-31.48%)
Mutual labels:  regression
ML-Track
This repository is a recommended track, designed to get started with Machine Learning.
Stars: ✭ 19 (-82.41%)
Mutual labels:  regression
ara
Agile Regression Analyzer
Stars: ✭ 74 (-31.48%)
Mutual labels:  regression
regressr
A command line regression testing framework for testing HTTP services
Stars: ✭ 35 (-67.59%)
Mutual labels:  regression
redis-tdigest
t-digest module for Redis
Stars: ✭ 69 (-36.11%)
Mutual labels:  quantile

EvoTrees

Documentation CI Status

A Julia implementation of boosted trees with CPU and GPU support. Efficient histogram based algorithms with support for multiple loss functions (notably multi-target objectives such as max likelihood methods).

R binding available.

Input features are expected to be Matrix{Float64/Float32} when using the internal API. Tables/DataFrames format can be handled through MLJ. See the docs for further details.

Installation

Latest:

julia> Pkg.add("https://github.com/Evovest/EvoTrees.jl")

From General Registry:

julia> Pkg.add("EvoTrees")

Performance

Data consists of randomly generated float32. Training is performed on 200 iterations. Code to reproduce is here.

EvoTrees: v0.8.4 XGBoost: v1.1.1

CPU: 16 threads on AMD Threadripper 3970X GPU: NVIDIA RTX 2080

Training:

Dimensions / Algo XGBoost Hist EvoTrees EvoTrees GPU
100K x 100 1.10s 1.80s 3.14s
500K x 100 4.83s 4.98s 4.98s
1M x 100 9.84s 9.89s 7.37s
5M x 100 45.5s 53.8s 25.8s

Inference:

Dimensions / Algo XGBoost Hist EvoTrees EvoTrees GPU
100K x 100 0.164s 0.026s 0.013s
500K x 100 0.796s 0.175s 0.055s
1M x 100 1.59s 0.396s 0.108s
5M x 100 7.96s 2.15s 0.543s

MLJ Integration

See official project page for more info.

Getting started using internal API

using EvoTrees

config = EvoTreeRegressor(
    loss=:linear, 
    nrounds=100, 
    nbins=100,
    lambda=0.5, 
    gamma=0.1, 
    eta=0.1,
    max_depth=6, 
    min_weight=1.0,
    rowsample=0.5, 
    colsample=1.0)
model = fit_evotree(config; x_train = x_train, y_train = y_train)
preds = predict(model, x_eval)

Feature importance

Returns the normalized gain by feature.

features_gain = importance(model)

Plot

Plot a given tree of the model:

plot(model, 2)

Note that 1st tree is used to set the bias so the first real tree is #2.

Save/Load

EvoTrees.save(model, "data/model.bson")
model = EvoTrees.load("data/model.bson");
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].