diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml new file mode 100644 index 000000000..1dd444eed --- /dev/null +++ b/.github/workflows/draft-pdf.yml @@ -0,0 +1,28 @@ +name: Draft PDF +on: + push: + paths: + - paper/** + - .github/workflows/draft-pdf.yml + +jobs: + paper: + runs-on: ubuntu-latest + name: Paper Draft + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Build draft PDF + uses: openjournals/openjournals-draft-action@master + with: + journal: joss + # This should be the path to the paper within your repo. + paper-path: paper/paper.md + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: paper + # This is the output path where Pandoc will write the compiled + # PDF. Note, this should be the same directory as the input + # paper.md + path: paper/paper.pdf diff --git a/R/learner_abess_classif_abess.R b/R/learner_abess_classif_abess.R index a34b2c161..161403f8e 100644 --- a/R/learner_abess_classif_abess.R +++ b/R/learner_abess_classif_abess.R @@ -1,5 +1,5 @@ #' @title Classification Abess Learner -#' @author abess-team +#' @author bbayukari #' @name mlr_learners_classif.abess #' #' @description diff --git a/R/learner_abess_regr_abess.R b/R/learner_abess_regr_abess.R index 36583f232..114182818 100644 --- a/R/learner_abess_regr_abess.R +++ b/R/learner_abess_regr_abess.R @@ -1,5 +1,5 @@ #' @title Regression Abess Learner -#' @author abess-team +#' @author bbayukari #' @name mlr_learners_regr.abess #' #' @description diff --git a/man/mlr_learners_classif.abess.Rd b/man/mlr_learners_classif.abess.Rd index 27f23a899..08132a025 100644 --- a/man/mlr_learners_classif.abess.Rd +++ b/man/mlr_learners_classif.abess.Rd @@ -104,7 +104,7 @@ predictions$score() } } \author{ -abess-team +bbayukari } \section{Super classes}{ \code{\link[mlr3:Learner]{mlr3::Learner}} -> \code{\link[mlr3:LearnerClassif]{mlr3::LearnerClassif}} -> \code{LearnerClassifAbess} diff --git a/man/mlr_learners_regr.abess.Rd b/man/mlr_learners_regr.abess.Rd index b68feccb7..40edba3a2 100644 --- a/man/mlr_learners_regr.abess.Rd +++ b/man/mlr_learners_regr.abess.Rd @@ -104,7 +104,7 @@ predictions$score() } } \author{ -abess-team +bbayukari } \section{Super classes}{ \code{\link[mlr3:Learner]{mlr3::Learner}} -> \code{\link[mlr3:LearnerRegr]{mlr3::LearnerRegr}} -> \code{LearnerRegrAbess} diff --git a/paper/paper.bib b/paper/paper.bib new file mode 100644 index 000000000..932b9d820 --- /dev/null +++ b/paper/paper.bib @@ -0,0 +1,291 @@ +@book{Bischl2024, + title = {Applied Machine Learning Using {m}lr3 in {R}}, + editor = {Bernd Bischl and Raphael Sonabend and Lars Kotthoff and Michel Lang}, + url = {https://mlr3book.mlr-org.com}, + year = {2024}, + isbn = {9781032507545}, + publisher = {CRC Press} +} + +@article{Lang2019, + author = {Lang, Michel and Binder, Martin and Richter, Jakob and Schratz, Patrick and Pfisterer, Florian and Coors, Stefan and Au, Quay and Casalicchio, Giuseppe and Kotthoff, Lars and Bischl, Bernd}, + doi = {10.21105/JOSS.01903}, + issn = {2475-9066}, + journal = {Journal of Open Source Software}, + month = {dec}, + number = {44}, + pages = {1903}, + publisher = {The Open Journal}, + title = {{mlr3: A modern object-oriented machine learning framework in R}}, + url = {https://joss.theoj.org/papers/10.21105/joss.01903}, + volume = {4}, + year = {2019} +} + +@Manual{R, + title = {R: A Language and Environment for Statistical Computing}, + author = {{R Core Team}}, + organization = {R Foundation for Statistical Computing}, + address = {Vienna, Austria}, + year = {2019}, + url = {https://www.R-project.org/}, +} + +@article{mlr, + author = {Bernd Bischl and Michel Lang and Lars Kotthoff and Julia Schiffner and Jakob Richter and Erich Studerus and Giuseppe Casalicchio and Zachary M. Jones}, + title = {mlr: Machine Learning in R}, + journal = {Journal of Machine Learning Research}, + year = {2016}, + volume = {17}, + number = {170}, + pages = {1-5}, + url = {http://jmlr.org/papers/v17/15-066.html} +} + +@Manual{data.table, + title = {data.table: Extension of `data.frame`}, + author = {Matt Dowle and Arun Srinivasan}, + year = {2019}, + note = {R package version 1.12.6}, + url = {https://CRAN.R-project.org/package=data.table}, +} + +@article{sk-learn, + title={Scikit-learn: Machine Learning in {P}ython}, + author={Pedregosa, F. and Varoquaux, G. and Gramfort, A. and Michel, V. + and Thirion, B. and Grisel, O. and Blondel, M. and Prettenhofer, P. + and Weiss, R. and Dubourg, V. and Vanderplas, J. and Passos, A. and + Cournapeau, D. and Brucher, M. and Perrot, M. and Duchesnay, E.}, + journal={Journal of Machine Learning Research}, + volume={12}, + pages={2825--2830}, + year={2011}, + url = {http://jmlr.org/papers/v12/pedregosa11a.html} +} + +@article{caret, + author = {Max Kuhn}, + title = {Building Predictive Models in R Using the caret Package}, + journal = {Journal of Statistical Software, Articles}, + volume = {28}, + number = {5}, + year = {2008}, + keywords = {}, + pages = {1--26}, + doi = {10.18637/jss.v028.i05}, + url = {https://www.jstatsoft.org/v028/i05} +} + +@article{weka, + title = {{The WEKA Data Mining Software: An Update}}, + author = {Hall, M. and Frank, E. and Holmes, G. and Pfahringer, B. and Reutemann, P. and Witten, I. H. }, + journal = {ACM SIGKDD explorations newsletter}, + volume = {11}, + number = {1}, + pages = {10--18}, + year = {2009}, + publisher = {ACM}, + doi = {10.1145/1656274.1656278} +} + +@Manual{tidymodels, + title = {Tidymodels: a collection of packages for modeling and machine learning using tidyverse principles.}, + author = {Max Kuhn and Hadley Wickham}, + url = {https://www.tidymodels.org}, + year = {2020} +} + +@Manual{parsnip, + title = {parsnip: A Common API to Modeling and Analysis Functions}, + author = {Max Kuhn and Davis Vaughan}, + year = {2024}, + note = {R package version 1.2.1, https://parsnip.tidymodels.org/}, + url = {https://github.com/tidymodels/parsnip} +} + +@Manual{mlr3tuning, + title = {mlr3tuning: Hyperparameter Optimization for 'mlr3'}, + author = {Becker, Marc and Lang, Michel and Richter, Jakob and Bischl, Bernd and Schalk, Daniel}, + year = {2024}, + note = {R package version 1.2.1, https://mlr3tuning.mlr-org.com/}, + url = {https://github.com/mlr-org/mlr3tuning} +} + +@article{caret, + title={Building predictive models in R using the caret package}, + author={Kuhn, Max}, + journal={Journal of statistical software}, + volume={28}, + pages={1--26}, + year={2008} +} + +@software{mlj, + author = {Anthony Blaom and Franz Kiraly and Thibaut Lienart and Sebastian Vollmer}, + title = {alan-turing-institute/MLJ.jl: v0.5.3}, + month = nov, + year = 2019, + publisher = {Zenodo}, + version = {v0.5.3}, + doi = {10.5281/zenodo.3541506}, + url = {https://doi.org/10.5281/zenodo.3541506} +} + +@article{checkmate, + author = {Michel Lang}, + title = {{checkmate: Fast Argument Checks for Defensive R Programming}}, + year = {2017}, + journal = {{The R Journal}}, + doi = {10.32614/RJ-2017-028}, + pages = {437--445}, + volume = {9}, + number = {1} +} + +@Manual{paradox, + title = {paradox: Define and Work with Parameter Spaces for Complex Algorithms}, + author = {Michel Lang and Bernd Bischl and Jakob Richter and Xudong Sun and Martin Binder}, + year = {2024}, + note = {R package version 1.0.1}, + url = {https://CRAN.R-project.org/package=paradox} +} + +@article{mlr3pipelines2021, + author = {Binder, Martin and Pfisterer, Florian and Lang, Michel and Schneider, Lennart and Kotthoff, Lars and Bischl, Bernd}, + journal = {Journal of Machine Learning Research}, + number = {184}, + pages = {1--7}, + title = {{mlr3pipelines - Flexible Machine Learning Pipelines in R}}, + url = {http://jmlr.org/papers/v22/21-0281.html}, + volume = {22}, + year = {2021} +} + +@article{Sonabend2021, + author = {Sonabend, Raphael and Kir{\'{a}}ly, Franz J. and Bender, Andreas and Bischl, Bernd and Lang, Michel}, + doi = {10.1093/BIOINFORMATICS/BTAB039}, + issn = {1367-4803}, + journal = {Bioinformatics}, + month = {sep}, + number = {17}, + pages = {2789--2791}, + publisher = {Oxford Academic}, + title = {{mlr3proba: an R package for machine learning in survival analysis}}, + url = {https://academic.oup.com/bioinformatics/article/37/17/2789/6125361}, + volume = {37}, + year = {2021} +} + +@incollection{benchlargescale, + author = "Sebastian Fischer and Michel Lang and Marc Becker", + title = "Large-Scale Benchmarking", + booktitle = "Applied Machine Learning Using {m}lr3 in {R}", + publisher = "CRC Press", year = "2024", + editor = "Bernd Bischl and Raphael Sonabend and Lars Kotthoff and Michel Lang", + url = "https://mlr3book.mlr-org.com/large-scale_benchmarking.html" +} + +@article{wilkinson2016fair, + title={The FAIR Guiding Principles for scientific data management and stewardship}, + author={Wilkinson, Mark D and Dumontier, Michel and Aalbersberg, IJsbrand Jan and Appleton, Gabrielle and Axton, Myles and Baak, Arie and Blomberg, Niklas and Boiten, Jan-Willem and da Silva Santos, Luiz Bonino and Bourne, Philip E and others}, + journal={Scientific data}, + volume={3}, + number={1}, + pages={1--9}, + year={2016}, + publisher={Nature Publishing Group} +} + +@article{bischl2023, + archivePrefix = {arXiv}, + arxivId = {2107.05847}, + author = {Bischl, Bernd and Binder, Martin and Lang, Michel and Pielok, Tobias and Richter, Jakob and Coors, Stefan and Thomas, Janek and Ullmann, Theresa and Becker, Marc and Boulesteix, Anne Laure and Deng, Difan and Lindauer, Marius}, + doi = {10.1002/WIDM.1484}, + eprint = {2107.05847}, + issn = {1942-4795}, + journal = {Wiley Interdisciplinary Reviews: Data Mining and Knowledge Discovery}, + keywords = {automl,hyperparameter optimization,machine learning,model selection,tuning}, + month = {mar}, + number = {2}, + pages = {e1484}, + publisher = {John Wiley & Sons, Ltd}, + title = {{Hyperparameter optimization: Foundations, algorithms, best practices, and open challenges}}, + url = {https://wires.onlinelibrary.wiley.com/doi/10.1002/widm.1484}, + volume = {13}, + year = {2023} +} + +@Manual{mlr3learners, + title = {mlr3learners: Recommended Learners for 'mlr3'}, + author = {Michel Lang and Quay Au and Stefan Coors and Patrick Schratz and Marc Becker}, + year = {2024}, + note = {R package version 0.9.0}, + url = {https://CRAN.R-project.org/package=mlr3learners}, +} + + + @Manual{mlr3oml, + title = {mlr3oml: Connector Between 'mlr3' and 'OpenML'}, + author = {Michel Lang and Sebastian Fischer}, + year = {2024}, + note = {R package version 0.10.0}, + url = {https://CRAN.R-project.org/package=mlr3oml}, + } + + @article{vanschoren2014openml, + title={OpenML: networked science in machine learning}, + author={Vanschoren, Joaquin and Van Rijn, Jan N and Bischl, Bernd and Torgo, Luis}, + journal={ACM SIGKDD Explorations Newsletter}, + volume={15}, + number={2}, + pages={49--60}, + year={2014}, + publisher={ACM New York, NY, USA} +} + + +@article{binder2020collecting, + title={Collecting empirical data about hyperparameters for data driven AutoML}, + author={Binder, Martin and Pfisterer, Florian and Bischl, Bernd}, + journal={Democratizing Machine Learning Contributions in AutoML and Fairness}, + pages={93}, + year={2020} +} + +@Manual{mlr3batchmark, + title = {mlr3batchmark: Batch Experiments for 'mlr3'}, + author = {Marc Becker and Michel Lang}, + year = {2024}, + note = {R package version 0.2.0}, + url = {https://CRAN.R-project.org/package=mlr3batchmark}, +} + +@article{bischl2016mlr, + title={mlr: Machine Learning in R}, + author={Bischl, Bernd and Lang, Michel and Kotthoff, Lars and Schiffner, Julia and Richter, Jakob and Studerus, Erich and Casalicchio, Giuseppe and Jones, Zachary M}, + journal={Journal of Machine Learning Research}, + volume={17}, + number={170}, + pages={1--5}, + year={2016} +} + + +@article{lang2017batchtools, + title={batchtools: Tools for R to work on batch systems}, + author={Lang, Michel and Bischl, Bernd and Surmann, Dirk}, + journal={Journal of Open Source Software}, + volume={2}, + number={10}, + pages={135}, + year={2017} +} + + + @Manual{mlr3torch, + title = {mlr3torch: Deep Learning with 'mlr3'}, + author = {Sebastian Fischer and Martin Binder}, + year = {2025}, + note = {R package version 0.2.1}, + url = {https://CRAN.R-project.org/package=mlr3torch}, + } \ No newline at end of file diff --git a/paper/paper.md b/paper/paper.md new file mode 100644 index 000000000..b2f9d09e9 --- /dev/null +++ b/paper/paper.md @@ -0,0 +1,215 @@ +--- +title: 'mlr3extralearners: Expanding the mlr3 Ecosystem with Community-Driven Learner Integration' +tags: + - R + - machine learning + - community + - FAIR + - benchmarking +authors: + - name: Sebastian Fischer + orcid: 0000-0002-9609-3197 + affiliation: "2, 3" + - name: John Zobolas + orcid: 0000-0002-3609-8674 + affiliation: 4 + - name: Raphael Sonabend + orcid: 0000-0001-9225-4654 + affiliation: 15 + - name: Marc Becker + orcid: 0000-0002-8115-0400 + affiliation: "2, 3" + - name: Michel Lang + orcid: 0000-0001-9754-0393 + affiliation: "1" + - name: Martin Binder + affiliation: "2, 3" + - name: Lennart Schneider + orcid: 0000-0003-4152-5308 + affiliation: "2, 3" + - name: Lukas Burk + orcid: 0000-0001-7528-3795 + affiliation: "2, 3, 5, 6" + - name: Patrick Schratz + orcid: 0000-0003-0748-6624 + affiliation: 18 + - name: Byron C. Jaeger + orcid: 0000-0001-7399-2299 + affiliation: 13 + - name: Stephen A Lauer + orcid: 0000-0003-2948-630X + affiliation: 7 + - name: Lorenz A. Kapsner + orcid: 0000-0003-1866-860X + affiliation: 8 + - name: Maximilian Mücke + orcid: 0009-0000-9432-9795 + affiliation: 2 + - name: Zezhi Wang + orcid: 0000-0001-6988-5853 + affiliation: 9 + - name: Damir Pulatov + orcid: 0000-0003-4901-7201 + affiliation: 14 + - name: Keenan Ganz + orcid: 0000-0002-8486-3959 + affiliation: 10 + - name: Henri Funk + orcid: 0009-0007-0949-8385 + affiliation: "3, 11, 12" + - name: Liana Harutyunyan + affiliation: 17 + - name: Pierre Camilleri + orcid: 0009-0005-1070-0670 + affiliation: 16 + - name: Philipp Kopper + orcid: 0000-0002-5037-7135 + affiliation: 3 + - name: Andreas Bender + orcid: 0000-0001-5628-8611 + affiliation: "2, 3" + - name: Bernd Bischl + orcid: 0000-0001-6002-6980 + affiliation: "2, 3" +affiliations: + - name: TU Dortmund University, Germany + index: 1 + - name: Department of Statistics, LMU Munich, Germany + index: 2 + - name: Munich Center for Machine Learning (MCML), Germany + index: 3 + - name: Department of Cancer Genetics, Institute for Cancer Research, Oslo University Hospital, Norway + index: 4 + - name: Leibniz Institute for Prevention Research and Epidemiology (BIPS), Bremen, Germany + index: 5 + - name: Faculty of Mathematics and Computer Science, University of Bremen, Germany + index: 6 + - name: Certilytics, Inc., 9200 Shelbyville Rd, Louisville, KY, 40222, USA + index: 7 + - name: Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU), Erlangen, Germany + index: 8 + - name: Department of Statistics and Finance/International Institute of Finance, School of Management, University of Science and Technology of China, Hefei, Anhui, China + index: 9 + - name: School of Environmental and Forest Sciences, University of Washington, Seattle + index: 10 + - name: Department of Geography, LMU Munich, Germany + index: 11 + - name: Statistical Consulting Unit StaBLab, LMU Munich, Germany + index: 12 + - name: Wake Forest University School of Medicine, Department of Biostatistics and Data Science, Division of Public Health Sciences Winston-Salem, North Carolina + index: 13 + - name: University of North Carolina Wilmington + index: 14 + - name: OSPO Now + index: 15 + - name: multi, 8 passage Brûlon, 75012 PARIS, France + index: 16 + - name: ServiceTitan, Inc., Glendale, California + index: 17 + - name: devXY GmbH + index: 18 +date: 24 March 2025 +bibliography: paper.bib +--- + +# Summary + +The `mlr3` ecosystem is a versatile toolbox for machine learning (ML) in `R` [@R] that is targeted towards both practitioners and researchers [@Bischl2024]. +The core `mlr3` package [@Lang2019] defines the standardized interface for ML, but its goal is not to implement algorithms. +This is, e.g., done by the `mlr3learners` extension [@mlr3learners] that connects 21 stable learning algorithms from various `R` packages to the `mlr3` ecosystem that serve as a good starting point for many ML tasks. +In addition, `mlr3extralearners` is a *community-driven* package that integrates many more methods. +The package currently wraps **85 different ML algorithms** from many different `R` packages, for tasks such as classification, regression, and survival analysis. +This enables users to seamlessly access and utilize these learners directly within their workflows. +One of the strengths of `mlr3` is the design and implementation of large-scale benchmark experiments. +For example, datasets for such experiments can be easily obtained from the OpenML[^1] repository [@vanschoren2014openml] via the `mlr3oml` package [@mlr3oml]. +Furthermore, strong support for parallelization, including execution on high-performance computing clusters via `batchtools` [@lang2017batchtools] and its `mlr3` integration `mlr3batchmark` [@mlr3batchmark], is available and well documented [@benchlargescale]. +In combination, these tools allow for large-scale empirical investigations, which has, for example, been used to collect and analyze data about hyperparameter landscapes of ML algorithms [@binder2020collecting]. +An overview of all `mlr3` learners, including those introduced through `mlr3extralearners`, is available on the mlr3 website[^2]. + +[^1]: https://openml.org +[^2]: https://mlr-org.com/learners.html + +Beyond accessibility, `mlr3extralearners` also allows `mlr3` users to easily connect their own algorithms to the interface. +This **enriches each learner with extensive metadata** about its hyperparameter space, prediction types, and other key attributes. +Furthermore, `mlr3extralearners` includes robust mechanisms for **quality assurance**, such as regular automated sanity checks and verification tests that ensure learner parameters are consistent and up-to-date with the latest versions of their underlying `R` packages. +In order to allow the integration of learners that are not available on `CRAN`, the package is hosted on the `mlr` R-universe[^3]. +By providing a standardized interface and comprehensive metadata for each learner, `mlr3extralearners` enhances the FAIRness (findability, accessibility, interoperability, and reusability) of ML algorithms within the `R` ecosystem [@wilkinson2016fair]. + +[^3]: https://mlr-org.r-universe.dev + +# Statement of Need + +ML often requires practitioners to navigate a diverse array of modeling problems, each with unique demands such as predictive performance, prediction speed, interpretability, or compatibility with specific data types and tasks. +To address this challenge, packages like `mlr3`'s predecessor `mlr` [@bischl2016mlr], `caret` [@caret], and more recently `parsnip` [@parsnip] from the `tidymodels` ecosystem [@tidymodels] were designed to provide unified interfaces for simplifying model experimentation. +For instance, `parsnip` provides a clean and consistent way to define models, enabling users to experiment with different algorithms without dealing with the nuances of underlying package syntax. +Similarly, the `mlr3` ecosystem aims to streamline model selection and experimentation, making it a versatile toolbox for ML in `R`. + +Within this ecosystem, `mlr3extralearners` plays a crucial role by providing a comprehensive collection of external ML algorithms integrated into the `mlr3` framework. +This ensures that users can access a wide variety of learners to meet their needs and choose the most appropriate algorithm for their particular problem. +While connecting new learners to `mlr3` is straightforward and can be done on a per-need basis, integrating them into `mlr3extralearners` benefits the broader community by avoiding redundant effort and ensuring accessibility for all users. +Additionally, contributions to `mlr3extralearners` are reviewed by the package maintainers, providing a layer of quality assurance. +This review process ensures that integrated learners work as expected and adhere to the high standards of the `mlr3` ecosystem. + +Beyond its utility for users, `mlr3extralearners` also offers significant advantages for developers of ML packages. +By integrating a new algorithm into the `mlr3` ecosystem, developers can immediately make their methods accessible to a wider audience. +This integration facilitates seamless tuning [@mlr3tuning] and preprocessing [@mlr3pipelines2021] through the broader `mlr3` framework, enhancing the usability and impact of their work. + +# Features + +The core functionality of `mlr3extralearners` is to integrate new learners into the `mlr3` ecosystem, allowing users to access a wide array of learning algorithms through a unified syntax and standardized interface. +However, the advantages of `mlr3extralearners` go well beyond simple integration. + +## Metadata + +One core feature of the `mlr3` ecosystem is that it annotates learners with extensive metadata. + +- **Hyperparameter management**: The hyperparameter spaces of learners are defined using `ParamSet` objects from the `paradox` package [@paradox]. +Each hyperparameter is explicitly typed, with annotations for feasible values. +This ensures valid configurations and simplifies tasks like hyperparameter tuning. +- **Task and prediction types**: Learners are categorized with respect to their task type (e.g. as classification, regression or survival analysis [@Sonabend2021]) and prediction types (e.g. probabilities or response predictions). +This allows users to easily identify suitable learners for their specific modeling tasks. +- **Standardized properties**: Learners are annotated with detailed attributes, including the types of features they can process and their support for functionalities such as feature selection, importance scoring, handling missing values, or monitoring performance on a separate validation set during training among others. +This allows users to have a clear understanding of a learner's capabilities and limitations and assess if it aligns with the specific requirements of their workflows, reducing trial-and-error and streamlining the modeling process. + +## Functional Correctness + +Integrating learners from diverse `R` packages poses challenges, on the one hand because changes in upstream APIs need to be reflected in `mlr3extralearners` and on the other hand because we want to ensure a high level of quality of algorithms connected to `mlr3`. +`mlr3extralearners` addresses both points through automated checks: + +- **Interface consistency**: The package regularly verifies that each learner adheres to the expected interface of the latest released version of its upstream function. +When new parameters are introduced or existing ones changed or removed, the tests fail until the parameter sets are updated accordingly. +- **Automated testing**: In general, writing unit tests for ML algorithms is challenging, because of edge-cases, numeric errors, and the fact that the input to these algorithms can be arbitrary datasets. +Aimed at addressing these challenges, `mlr3extralearners` performs regular automated tests on all learners. +These tests include sanity checks that, e.g., verify that the learners produce sensible predictions for simple randomly generated datasets. +Furthermore, the tests also validate the learners' metadata annotations, such as whether a learner can actually handle missing values or is able to produce importance scores. +In the past, these tests have detected bugs in some upstream packages and we have subsequently notified their authors. + +## Simplified Integration of New Learners + +To streamline the addition of new learners, `mlr3extralearners` provides robust support tools: + +- **Code templates**: Predefined templates are available for both the learner implementation and associated test files. +Contributors can utilize these templates through an `R` function that accepts learner metadata and generates new `R` code files based on the templates. +This approach pre-fills as much information as possible, minimizing the input required from the contributor. +Note that these templates can also be used when learners are only used locally for specific projects and not contributed to `mlr3extralearners`. +- **Guides and resources**: The package website[^4] contains an extensive tutorial, as well as a curated list of common issues encountered during learner integration, making the process accessible for contributors of all experience levels. +Additionally, every integrated learner includes a simple example of usage in the documentation, ensuring that users can quickly understand how to utilize the learner effectively within the `mlr3` ecosystem. + +[^4]: https://mlr3extralearners.mlr-org.com + +# Community Impact and Future Directions + +`mlr3extralearners` is a direct result of the contributions from a diverse community of authors and developers. +The authors of this paper themselves have been actively involved in integrating learners, providing quality assurance, and maintaining the package's infrastructure. +Their contributions, such as the addition of learners for specialized tasks like survival analysis and high-dimensional data, highlight the impact that thoughtful integration has on the `mlr3` ecosystem. +This ongoing effort illustrates the transformative potential of **community-driven development**, ensuring that `mlr3extralearners` continues to grow as a dynamic and inclusive repository for ML algorithms. + +Future work will also focus on expanding the ecosystem with more deep learning methods through `mlr3torch` [@mlr3torch], which aims to seamlessly integrate deep learning models and neural network architectures within the `mlr3` framework. + +# Acknowledgements + +Sebastian Fischer is supported by the Deutsche Forschungsgemeinschaft (DFG, German Research +Foundation) – 460135501 (NFDI project MaRDI). +John Zobolas received funding from the European Union's Horizon 2020 research and innovation programme under grant agreement No 101016851, project PANCAIM. + +# References