mlpack

Verbindet DuckDB mit der C++-Machine-Learning-Bibliothek mlpack

Maintainer: eddelbuettel

Installation und Laden

INSTALL mlpack FROM community;
LOAD mlpack;

Beispiel

-- Perform adaBoost (using weak learner 'Perceptron' by default)
-- Read 'features' into 'X', 'labels' into 'Y', use optional parameters
-- from 'Z', and prepare model storage in 'M'
CREATE TABLE X AS SELECT * FROM read_csv("https://eddelbuettel.github.io/duckdb-mlpack/data/iris.csv");
CREATE TABLE Y AS SELECT * FROM read_csv("https://eddelbuettel.github.io/duckdb-mlpack/data/iris_labels.csv");
CREATE TABLE Z (name VARCHAR, value VARCHAR);
INSERT INTO Z VALUES ('iterations', '50'), ('tolerance', '1e-7');
CREATE TABLE M (key VARCHAR, json VARCHAR);
-- Train model for 'Y' on 'X' using parameters 'Z', store in 'M'
CREATE TEMP TABLE A AS SELECT * FROM mlpack_adaboost_train("X", "Y", "Z", "M");
-- Count by predicted group
SELECT COUNT(*) as n, predicted FROM A GROUP BY predicted;
-- Model 'M' can be used to predict
CREATE TABLE N (x1 DOUBLE, x2 DOUBLE, x3 DOUBLE, x4 DOUBLE);
-- inserting approximate column mean values
INSERT INTO N VALUES (5.843, 3.054, 3.759, 1.199);
-- inserting approximate column mean values, min values, max values
INSERT INTO N VALUES (5.843, 3.054, 3.759, 1.199), (4.3, 2.0, 1.0, 0.1), (7.9, 4.4, 6.9, 2.5);
-- and this predict one element each
SELECT * FROM mlpack_adaboost_pred("N", "M");

Über mlpack

Überwachtes Lernen

Die mlpack-Erweiterung ermöglicht das Anpassen (bzw. Trainieren) und Vorhersagen (bzw. Klassifizieren) mit den implementierten Modellen, derzeit AdaBoost, Random Forests sowie (regularisierte) lineare und logistische Regression. Das Format ist für diese vier Methoden gleich: Vier Tabellen, etwa „X“, „Y“, „Z“ und „M“, liefern die Eingaben für Merkmale „X“, Labels „Y“, optionale modellabhängige Parameter in „Z“ sowie eine Ausgabetabelle „M“ für das JSON-serialisierte Modell. Für alle vier Methoden kann nach einer Modellanpassung (bzw. einem Training) eine Vorhersage (bzw. Klassifikation) mit „M“ und neuen Prädiktorwerten „N“ erfolgen, wie im Beispiel gezeigt. Alle „fit“- (bzw. „train“-)Methoden nehmen vier Parametertabellen entgegen, alle „predict“-Methoden zwei.

Unüberwachtes Lernen

Zusätzlich steht eine k-Means-Clustering-Methode zur Verfügung. Sie verwendet drei Tabellen für Daten, Parameter und Ergebnisse.

Allgemeine Informationen

Ein Parameterpaar „mlpack_verbose“ (zusätzliche Daten anzeigen) und „mlpack_silent“ (Anzeige minimaler Zusammenfassungen unterdrücken) kann ebenfalls gesetzt werden.

Die Implementierung betont noch den „minimalen“ Teil einer „(ersten) MVP-Demo“ (wobei MVP für „minimally viable product“ steht). Sie kapselt fünf Methoden des überwachten und unüberwachten maschinellen Lernens und stellt Builds für Linux und macOS bereit. Weitere Methoden, Optionen oder Parameter lassen sich vergleichsweise einfach hinzufügen. Da sich Schnittstellen ändern können, während wir ausloten, wie die Schnittstellenerzeugung aus mlpack selbst automatisiert werden kann, sollte die Erweiterung als experimentell betrachtet werden.

Weitere Informationen finden Sie im Repository.

Hinzugefügte Funktionen

function_name function_type description comment examples
mlpack_adaboost_train table use adaboost to train and store a model parameters ‘iterations’, ‘tolerance’, ‘perceptronIter’ and ‘silent’ NULL
mlpack_adaboost_pred table predict classification using stored adaboost stored model NULL NULL
mlpack_linear_regression_fit table fit and store linear regression model parameters ‘lambda’, ‘intercept’ and ‘silent’ NULL
mlpack_linear_regression_pred table predict using stored linear regression model NULL NULL
mlpack_logistic_regression_fit table fit and store logistic regression model parameters ‘lambda’, ‘intercept’ and ‘silent’ NULL
mlpack_logistic_regression_pred table predict classification using stored logistic regression model NULL NULL
mlpack_random_forest_train table use random forest to train and store a model parameters ‘nclasses’, ‘ntrees’, ‘seed’, ‘threads’ and ‘silent’ NULL
mlpack_random_forest_pred table predict classification using stored random forest model NULL NULL
mlpack_kmeans table use kmeans unsupervised clustering parameters ‘clusters’, and ‘iterations’ NULL
mlpack_mlpack_version scalar returns the version string for the mlpack version used NULL NULL
mlpack_armadillo_version scalar returns the version string for the armadillo version used NULL NULL

Überladene Funktionen

Diese Erweiterung fügt keine Funktionsüberladungen hinzu.

Hinzugefügte Typen

Diese Erweiterung fügt keine Typen hinzu.

Hinzugefügte Einstellungen

name description input_type scope aliases
mlpack_silent Toggle whether to operate in silent mode, default is false BOOLEAN GLOBAL []
mlpack_verbose Toggle whether to operate in verbose mode, default is false BOOLEAN GLOBAL []