Serving Spam Detection With XGBoost and Nx (ElixirConfUS 2023)

While we are still waiting on the official videos from ElixirConfUS 2023, I figured I would go ahead and share the slides and Livebook I used for my talk Nx-Powered Decision Trees.

By the end, you will have processed a text dataset using TF-IDF, trained an EXGBoost decision tree model, compiled the model into an Nx function, and serve the model using Nx.Serving.

Let me know what you think!

Decision Trees are an extremely popular class of supervised Machine Learning techniques that are beginner-friendly due to their intuitive and digestible design. However, they have also stood the test of time as one of the preeminent techniques for learning structured tabular data. This type of data, common among spreadsheets and relational databases, is still the gold standard used in business and enterprise environments and has now made its way to Elixir.

This talk introduces EXGBoost + Mockingjay, a Gradient Boosted Decision Tree library paired with a compilation library that converts trained Decision Trees to Nx tensor operations. We will discuss how both libraries work and work through some examples of using the libraries. Next, we will look at using trained Decision Trees in a scalable production environment using Nx’s Serving capability and a Phoenix web app. Finally, we will look at the future of Machine Learning in Elixir and how bringing this next class of machine learning techniques to the language benefits it.


The talk is now available to watch at

1 Like

great talk!

Indeed, nice talk @acalejos , it blew my mind the fact that is possible to translate a decision tree into a tensors :exploding_head:

Thank you for all the work, now I just need to find an excuse to play with EXGboost and Mockingjay, i’ll check out something on kaggle.