4  常见模型和软件包

Created with AI

该部分内容由 ChatGPT 等生成式 AI 工具参与创作,可能存在的问题如下:

  • 其中的说法可能并不准确,包括张冠李戴、时效性等方面可能存在问题。
  • 其中的一些代码虽然已经经过调试,可以正常运行,但是可能并不符合现下的编程规范或者推荐用法。

尽管如此,这些内容还是具有较大的参考意义的。

使用过程中请自行甄别。

欢迎提出修改完善的建议。

4.1 常见机器学习模型

tidymodels 中包含了很多不同的模型(https://www.tidymodels.org/find/parsnip/)。

4.1.1 执行回归任务的模型

仅就执行”回归“任务的模型而言,有下面这些。

  1. Boosted ARIMA Regression Models: 这种方法结合了自回归综合移动平均(ARIMA)和增强算法。主要用于时间序列预测。
  2. ADAM Regression Models: ADAM指的是自适应动态自回归移动平均模型,也主要用于时间序列预测。
  3. ARIMA Regression Models: ARIMA模型是一种常见的时间序列预测模型。
  4. Automatic machine learning: 自动机器学习(AutoML)是一种自动化选择最佳算法和参数的过程。
  5. Bagged MARS: Bagged MARS结合了多重自适应回归样条(MARS)和装袋(bagging)技术以提高预测精度。
  6. Bagged neural networks: 这种方法结合了神经网络和装袋算法以提升稳健性。
  7. Bagged trees: 袋装决策树是一种集成学习方法,提高模型准确性和防止过拟合。
  8. Bayesian additive regression trees: BART 是一种贝叶斯方法,可用于处理线性和非线性问题。
  9. Boosted PROPHET Time Series Models: 结合了 Facebook’s Prophet 时间序列预测方法和 boosting 方法。
  10. Boosted trees: 提升树模型是一种预测模型,使用梯度提升构建强学习器。
  11. Cubist rule-based regression models: Cubist 是一种基于规则的回归模型,能够适应非线性关系。
  12. Decision trees: 决策树是一种基本的分类和回归方法。
  13. Exponential Smoothing State Space Models: 也被称为 ETS,主要用于时间序列分析。
  14. Generalized additive models: GAM 是一种灵活的线性回归方法,能处理非线性的关系。
  15. K-nearest neighbors: KNN 是一种基本的分类和回归方法。
  16. Linear regression via keras/tensorflow/glmnet/glm: 这些都是实现线性回归的工具或框架。
  17. Linear support vector machines (SVMs): SVM 是一种类别预测工具,线性 SVM 主要用于二元分类问题。
  18. Multilayer perceptron: MLP 是一种前馈神经网络,多用于分类和回归分析。
  19. Multiple Seasonality Regression Models: 多季节性回归模型用于处理具有多季节性影响的时间序列数据。
  20. Multivariate adaptive regression splines: MARS 是一种灵活的回归方法,适用于高维数据集。
  21. NAIVE Forecast Models: NAIVE 模型是一种简单的时间序列预测方法,通常用作基线预测。
  22. NNETAR Regression Models: NNETAR 是一种神经网络自回归模型,主要用于时间序列预测。
  23. Parametric survival regression: 此方法用于生存分析中,当数据具有时间至事件特性时。
  24. Poisson regression: 泊松回归适用于因变量为计数数据的情况。

4.1.2 执行分类任务的模型

此外,执行“分类”任务的模型有:

  1. Automatic machine learning: 自动机器学习(AutoML)是一种利用优化算法挑选出最佳算法和参数的过程。这大大降低了人工选择和调整模型的复杂度。
  2. Bagged MARS: 这是一种集成学习方法,它结合了多重自适应回归样条(MARS)和装袋(bagging)技术,以提高预测精度。
  3. Bagged neural networks: 这是一种集成神经网络的方法。通过创建多个神经网络并取其平均值,可以提升模型的稳定性,并减少过拟合的可能性。
  4. Bagged trees: 袋装决策树是一种集成学习策略,可以提高模型的泛化性能,并降低模型的方差。
  5. Bayesian additive regression trees (BART): BART 是一种非参数贝叶斯方法,可以用于处理非线性和交互效应的问题。
  6. Boosted trees: 提升树是一种强大的机器学习算法,通过串行构建一系列的小型决策树,每一个新的树学习前面树的错误来进行改进。
  7. C5.0 rule-based classification models: C5.0 是一个决策树模型,以及一个规则集的生成器。它比它的前身C4.5 更快,需要更少的内存,并且有一个能提高预测精度的boosting选项。
  8. Decision trees: 决策树是一种监督学习方法,适用于分类和回归问题。
  9. Flexible discriminant analysis (FDA): FDA 是一种分类技术,它扩展了线性判别分析(LDA),允许在预测分类时使用非线性函数。
  10. Generalized additive models (GAM): GAM 是一种灵活的线性回归方法,能处理非线性和非参数关系。
  11. K-nearest neighbors(KNN): KNN 是一种基于实例的学习或局部近似和所有计算在分类阶段完成的非泛化机器学习方法。
  12. Linear discriminant analysis(LDA): LDA 是一种分类技术,它寻找最大化类间差异并最小化类内差异的特征投影方向。
  13. Linear support vector machines (SVMs): 线性支持向量机是一种二元分类模型,其决策边界是数据的超平面。
  14. Logistic regression: 逻辑回归是一种解决二元分类问题的常见统计方法。
  15. Multilayer perceptron(MLP): MLP 是一种前馈神经网络,它可以处理复杂的数据集,并在多种任务上表现良好。
  16. Multinomial regression: 多项式回归是一个用于多类分类的广义线性模型。
  17. Multivariate adaptive regression splines (MARS): MARS 是一种灵活的非线性回归方法,适用于高维问题。
  18. Naive Bayes models: 朴素贝叶斯是一种基于应用贝叶斯定理与特征独立假设的简单概率分类器。
  19. Null model: 空模型是一个不包含任何预测变量的模型,通常用作比较的基准模型。
  20. Partial least squares(PLS): PLS 是一种处理具有多重共线性数据的回归分析方法。
  21. 多项式支持向量机 (Polynomial SVMs): 这是一种基于支持向量机 (SVM) 的分类和回归方法。它通过在输入数据中引入高阶项来处理非线性问题。这使得算法可以在高维空间中找到数据的最优分隔超平面。
  22. 二次判别分析 (Quadratic Discriminant Analysis): 这是一种统计分类技术,它使用贝叶斯理论和二次判别分析来估计给定观察值属于哪个类别的概率。它不假设各类别的协方差矩阵相同,所以能够处理更复杂的情况。
  23. 径向基函数支持向量机 (Radial Basis Function SVMs): 它是一种使用径向基函数 (RBF) 作为核函数的支持向量机。RBF可以映射输入到无限维的特征空间,使得非线性问题变得线性可解。
  24. 随机森林 (Random forests): 这是一种基于决策树的集成学习算法。它通过生成和结合许多个决策树,减少过拟合的风险,并提高预测性能。
  25. 正则化判别分析 (Regularized Discriminant Analysis): 它是一种改进的判别分析方法,通过引入正则化参数来防止过拟合。这使得模型既能保持高度的复杂性,又能防止对训练数据的过度拟合。
  26. RuleFit 模型: 这是一个对数据生成可解释规则的机器学习模型。它结合了决策树和线性模型的优点,可以生成简单、直观且好理解的规则。

4.2 用于机器学习任务的 R 软件包

这些模型通过调用背后的软件包或算法实现功能。在 CRAN 的 MachineLearning Views,就列举了很多这样的软件包。

4.2.1 R 软件包的列表

这些软件包氛围核心包、常用包和已被归档的包(停止维护的软件包)。

Core:

abess, e1071, gbm, kernlab, mboost, nnet, randomForest, rpart.

Regular:

adabag, ahaz, ALEPlot, arules, BART, bartMachine, BayesTree, BDgraph, Boruta, bst, C50, caret, CORElearn, Cubist, DALEX, deepnet, dipm, DoubleML, earth, effects, elasticnet, evclass, evreg, evtree, fastshap, frbs, gamboostLSS, glmertree, glmnet, glmpath, GMMBoost, grf, grplasso, grpreg, h2o, hda, hdi, hdm, iBreakDown, ICEbox, iml, ipred, islasso, joinet, kernelshap, klaR, lars, LiblineaR, lightgbm, lime, maptree, mlpack, mlr3, model4you, mpath, naivebayes, ncvreg, nestedcv, OneR, opusminer, pamr, party, partykit, pdp, penalized, picasso, plotmo, pre, quantregForest, quint, randomForestSRC, ranger, Rborist, rgenoud, RGF, RLT, Rmalschains, rminer, ROCR, RoughSets, RPMM, RSNNS, RWeka, RXshrink, sda, semtree, shapper, shapr, shapviz, SIS, splitTools, ssgraph, stabs, SuperLearner, svmpath, tensorflow, tgp, tidymodels, torch, tree, trtf, varSelRF, wsrf, xgboost.

Archived:

penalizedLDA, RcppDL.

Note

下面是对这些软件包功能的分类介绍。为了确保一致性,以中英文对照的形式展示。

4.2.2 神经网络和深度学习的软件包

神经网络和深度学习:单隐层神经网络在 nnet 包中实现(随基础 R 一起提供)。RSNNS 包提供了一个接口,可以连接到斯图加特神经网络模拟器(SNNS)。实现深度学习风格的神经网络的包包括 deepnet(前馈神经网络,受限玻尔兹曼机,深度信念网络,堆叠自编码器),RcppDL(已归档)(去噪自编码器,堆叠去噪自编码器,受限玻尔兹曼机,深度信念网络)和 h2o(前馈神经网络,深度自编码器)。tensorflow 包提供了一个接口,可以连接到 tensorflow。torch 包实现了一个接口,可以连接到 libtorch 库。evreg 包中实现的 ENNreg 证据回归神经网络模型可以量化预测不确定性。

  • Neural Networks and Deep Learning : Single-hidden-layer neural network are implemented in package nnet (shipped with base R). Package RSNNS offers an interface to the Stuttgart Neural Network Simulator (SNNS). Packages implementing deep learning flavours of neural networks include deepnet (feed-forward neural network, restricted Boltzmann machine, deep belief network, stacked autoencoders), RcppDL (archived) (denoising autoencoder, stacked denoising autoencoder, restricted Boltzmann machine, deep belief network) and h2o (feed-forward neural network, deep autoencoders). An interface to tensorflow is available in tensorflow. The torchpackage implements an interface to the libtorch library. Prediction uncertainty can be quantified by the ENNreg evidential regression neural network model implemented in evreg.

4.2.3 递归划分的软件包

  • 递归划分:根据CART书中的思想,实现了用于回归、分类和生存分析的树结构模型,这些模型在 rpart(与基础R一起提供)和 tree 中实现。建议使用rpart 包来计算类似CART的树。Weka 提供了丰富的划分算法工具箱,RWeka包为此实现提供了接口,包括C4.5的J4.8变体和M5。Cubist包适合带有线性回归模型的规则基础模型(类似于树),终端叶子、基于实例的修正和boosting。C50包可以拟合 C5.0 分类树、基于规则的模型、以及这些模型的boosted版本。pre 可以拟合更广泛响应变量类型的基于规则的模型。

    partypartykit包中实现了两种具有无偏变量选择和统计停止准则的递归划分算法。函数 ctree() 基于非参数条件推理过程用于测试响应与每个输入变量之间的独立性,而 mob() 可用于对参数模型进行划分。在partypartykit包中也提供了可扩展的工具用于可视化二叉树和响应的节点分布。混合效应模型(GLMMs)的划分可以使用 glmertree 包执行;结构方程模型(SEMs)的划分可以使用 semtree 包执行。 用于可视化树的图形工具在 maptree 包中可用。

    混合模型的划分由 RPMM 执行。

    partykit 中实现了代表树和统一预测和可视化方法的计算基础设施。这种基础设施被 evtree 包用于实现全局最优树的进化学习。各种包中都有生存树。

    关于异质处理效应的子组识别的树,在partykitmodel4youdipmquintpkg("SIDES")pkg("psica")pkg("MrSGUIDE")包(可能还有更多)中可用。

  • Recursive Partitioning : Tree-structured models for regression, classification and survival analysis, following the ideas in the CART book, are implemented in rpart (shipped with base R) and tree. Package rpart is recommended for computing CART-like trees. A rich toolbox of partitioning algorithms is available in Weka, package RWeka provides an interface to this implementation, including the J4.8-variant of C4.5 and M5. The Cubist package fits rule-based models (similar to trees) with linear regression models in the terminal leaves, instance-based corrections and boosting. The C50 package can fit C5.0 classification trees, rule-based models, and boosted versions of these. pre can fit rule-based models for a wider range of response variable types.

    Two recursive partitioning algorithms with unbiased variable selection and statistical stopping criterion are implemented in package party and partykit. Function ctree() is based on non-parametric conditional inference procedures for testing independence between response and each input variable whereas mob() can be used to partition parametric models. Extensible tools for visualizing binary trees and node distributions of the response are available in package party and partykit as well. Partitioning of mixed-effects models (GLMMs) can be performed with package glmertree; partitioning of structural equation models (SEMs) can be performed with package semtree. Graphical tools for the visualization of trees are available in package maptree.

    Partitioning of mixture models is performed by RPMM.

    Computational infrastructure for representing trees and unified methods for prediction and visualization is implemented in partykit. This infrastructure is used by package evtree to implement evolutionary learning of globally optimal trees. Survival trees are available in various packages.

    Trees for subgroup identification with respect to heterogenuous treatment effects are available in packages partykit, model4you, dipm, quint, pkg("SIDES"), pkg("psica"), and pkg("MrSGUIDE") (and probably many more).

4.2.4 随机森林的软件包

  • 随机森林:随机森林算法的参考实现方案,包括回归和分类,在randomForest包中都有提供。ipred包提供用于回归、分类和生存分析的bagging方式,以及通过集成学习结合多个模型的bundling方式。此外,基于条件推断树适应任意尺度测量的响应变量的随机森林变体在party包中有实现。randomForestSRC实现了Breiman的随机森林对生存、回归和分类问题的统一处理。Quantile回归森林quantregForest允许通过随机森林方法对探索性变量进行数值响应的分位数回归。针对二元数据,varSelRFBoruta包关注通过随机森林算法进行的变量选择。此外,rangerRborist包提供了R接口快速实现C++随机森林。在RLT包中实现了强化学习树,特点是在将来可能重要的变量中进行划分。wsrf实现了一个替代性的变量权重法,用于替代传统的随机变量抽样进行变量子空间选择。RGF包是一个接口,连接到Python实现的一种叫做正则化贪婪森林的程序。针对参数模型的随机森林,包括用于预测分布估计的森林,可以在trtf(可能在审查和截断下的预测转换森林)和grf(泛化随机森林的实现)包中找到。

  • Random Forests : The reference implementation of the random forest algorithm for regression and classification is available in package randomForest. Package ipred has bagging for regression, classification and survival analysis as well as bundling, a combination of multiple models via ensemble learning. In addition, a random forest variant for response variables measured at arbitrary scales based on conditional inference trees is implemented in package party. randomForestSRC implements a unified treatment of Breiman’s random forests for survival, regression and classification problems. Quantile regression forests quantregForest allow to regress quantiles of a numeric response on exploratory variables via a random forest approach. For binary data, The varSelRF and Boruta packages focus on variable selection by means for random forest algorithms. In addition, packages ranger and Rborist offer R interfaces to fast C++ implementations of random forests. Reinforcement Learning Trees, featuring splits in variables which will be important down the tree, are implemented in package RLT. wsrf implements an alternative variable weighting method for variable subspace selection in place of the traditional random variable sampling. Package RGF is an interface to a Python implementation of a procedure called regularized greedy forests. Random forests for parametric models, including forests for the estimation of predictive distributions, are available in packages trtf (predictive transformation forests, possibly under censoring and trunction) and grf (an implementation of generalised random forests).

4.2.5 正则化和收缩方法的软件包

  • 正规化和收缩方法:可以使用lars包来拟合带有某些参数估计约束的回归模型。在grplasso包中提供了同时更新参数组(即组lasso)的Lasso;grpreg包实现了诸如组MCP和组SCAD等其他一些组惩罚模型。可以从glmpath包中获得广义线性模型和Cox模型的L1正则化路径,整个lasso或弹性网正则化路径(也在elasticnet中)用于线性回归、逻辑回归和多项式回归模型,可以从glmnet包中获得。penalized包提供了lasso(L1)和ridge(L2)惩罚回归模型(包括GLM和Cox模型)的另一种实现。可以使用RXshrink包生成TRACE显示,当错误为IID Normal时,标识出最大似然或最小MSE风险的收缩程度。ahaz包提供了在lasso惩罚下的半参数加性风险模型。Fisher的LDA投影通过可选的LASSO惩罚产生稀疏解,在penalizedLDA (archived)包中实现。pamr包实现了收缩质心分类器和基因表达分析的实用工具。earth包中提供了多变量自适应回归样条的实现。各种形式的惩罚判别分析在hdasda包中实现。LiblineaR包提供了对LIBLINEAR库的接口。ncvreg包使用坐标下降算法拟合SCAD和MCP回归惩罚下的线性和逻辑回归模型。同样的惩罚也在picasso包中实现。在非高斯和异方差错误下的Lasso由hdm估计,包含在高维设定中对Lasso回归和估计处理效果的低维组件的推断。SIS包实现了广义线性和Cox模型的独立筛选。相关结果的弹性网在joinet包中提供。通过复合优化共轭算子来拟合使用mpath包的稳健惩罚广义线性模型和稳健支持向量机。islasso包提供了基于诱导平滑理念的lasso实现,这可以为所有模型参数获得可靠的p值。最佳子集选择,用于线性、逻辑、Cox等其他回归模型,基于一个快速的多项式时间算法,可从abess包获取。

  • Regularized and Shrinkage Methods : Regression models with some constraint on the parameter estimates can be fitted with the lars package. Lasso with simultaneous updates for groups of parameters (groupwise lasso) is available in package grplasso; the grpreg package implements a number of other group penalization models, such as group MCP and group SCAD. The L1 regularization path for generalized linear models and Cox models can be obtained from functions available in package glmpath, the entire lasso or elastic-net regularization path (also in elasticnet) for linear regression, logistic and multinomial regression models can be obtained from package glmnet. The penalized package provides an alternative implementation of lasso (L1) and ridge (L2) penalized regression models (both GLM and Cox models). Package RXshrink can be used to generate TRACE displays that identify the extent of shrinkage with Maximum Likelihood of Minimum MSE Risk when errors are IID Normal. Semiparametric additive hazards models under lasso penalties are offered by package ahaz. Fisher’s LDA projection with an optional LASSO penalty to produce sparse solutions is implemented in package penalizedLDA (archived). The shrunken centroids classifier and utilities for gene expression analyses are implemented in package pamr. An implementation of multivariate adaptive regression splines is available in package earth. Various forms of penalized discriminant analysis are implemented in packages hda and sda. Package LiblineaR offers an interface to the LIBLINEAR library. The ncvreg package fits linear and logistic regression models under the the SCAD and MCP regression penalties using a coordinate descent algorithm. The same penalties are also implemented in the picasso package. The Lasso under non-Gaussian and heteroscedastic errors is estimated by hdm, inference on low-dimensional components of Lasso regression and of estimated treatment effects in a high-dimensional setting are also contained. Package SIS implements sure independence screening in generalised linear and Cox models. Elastic nets for correlated outcomes are available from package joinet. Robust penalized generalized linear models and robust support vector machines are fitted by package mpath using composite optimization by conjugation operator. The islasso package provides an implementation of lasso based on the induced smoothing idea which allows to obtain reliable p-values for all model parameters. Best-subset selection for linear, logistic, Cox and other regression models, based on a fast polynomial time algorithm, is available from package abess.

4.2.6 增强和梯度下降的软件包

  • 增强和梯度下降:各种形式的梯度提升在gbm包中实现(基于树的函数梯度下降提升)。lightgbmxgboost包实现了基于高效树作为基础学习器的树形提升,适用于多个和用户自定义的目标函数。bst包中的提升实现优化了铰链损失。一个可扩展的提升框架,适用于广义线性模型、加法模型和非参数模型,可以在mboost包中找到。混合模型的似然基提升在GMMBoost中实现。GAMLSS模型可以通过gamboostLSS使用提升来拟合。adabag实现了经典的AdaBoost算法,并添加了功能,如变量重要性。

  • Boosting and Gradient Descent : Various forms of gradient boosting are implemented in package gbm (tree-based functional gradient descent boosting). Package lightgbm and xgboost implement tree-based boosting using efficient trees as base learners for several and also user-defined objective functions. The Hinge-loss is optimized by the boosting implementation in package bst. An extensible boosting framework for generalized linear, additive and nonparametric models is available in package mboost. Likelihood-based boosting for mixed models is implemented in GMMBoost. GAMLSS models can be fitted using boosting by gamboostLSS. adabag implements the classical AdaBoost algorithm with added functionality, such as variable importances.

4.2.7 支持向量机和核方法的软件包

  • 支持向量机和核方法e1071中的svm()函数提供了一个接口到LIBSVM库,kernlab包实现了一个灵活的核学习框架(包括SVMs、RVMs和其他核学习算法)。klaR包提供了一个接口到SVMlight实现(仅用于一对所有的分类)。

  • Support Vector Machines and Kernel Methods : The function svm() from e1071 offers an interface to the LIBSVM library and package kernlab implements a flexible framework for kernel learning (including SVMs, RVMs and other kernel learning algorithms). An interface to the SVMlight implementation (only for one-against-all classification) is provided in package klaR.

4.2.8 贝叶斯方法的软件包

  • 贝叶斯方法:贝叶斯加法回归树(BART)在BayesTreeBARTbartMachine 包中有实现,其最终模型是以许多弱学习器的总和定义的(与集成方法类似)。包tgp提供了贝叶斯非平稳,半参数非线性回归和设计通过高斯过程包含贝叶斯CART和线性模型。包BDgraph实现了针对多变量连续、离散和混合数据的无向图形模型中的贝叶斯结构学习;相应的依赖于尖峰和板状先验的方法可以从ssgraph包中获得。朴素贝叶斯分类器在naivebayes包中提供。

  • Bayesian Methods : Bayesian Additive Regression Trees (BART), where the final model is defined in terms of the sum over many weak learners (not unlike ensemble methods), are implemented in packages BayesTree, BART, and bartMachine. Bayesian nonstationary, semiparametric nonlinear regression and design by treed Gaussian processes including Bayesian CART and treed linear models are made available by package tgp. Bayesian structure learning in undirected graphical models for multivariate continuous, discrete, and mixed data is implemented in package BDgraph; corresponding methods relying on spike-and-slab priors are available from package ssgraph. Naive Bayes classifiers are available in naivebayes.

4.2.9 提供遗传算法的软件包

  • 使用遗传算法优化rgenoud包提供了基于遗传算法的优化程序。Rmalschains包实现了带有本地搜索链的遗传算法,这是一种特殊类型的进化算法,结合了稳定状态的遗传算法和本地搜索用于实值参数优化。

  • Optimization using Genetic Algorithms : Package rgenoud offers optimization routines based on genetic algorithms. The package Rmalschains implements memetic algorithms with local search chains, which are a special type of evolutionary algorithms, combining a steady state genetic algorithm with local search for real-valued parameter optimization.

4.2.10 关联规则分析的软件包

  • 关联规则arules包为高效处理稀疏二进制数据提供了数据结构,同时为Apriori和Eclat的实现提供了接口,用于挖掘频繁项集、最大频繁项集、封闭频繁项集和关联规则。opusminer包提供了一个接口到OPUS Miner算法(在C++中实现),用于有效地找到交易数据中的关键关联,以自给自足的项集的形式,使用杠杆或提升。

  • Association Rules : Package arules provides both data structures for efficient handling of sparse binary data as well as interfaces to implementations of Apriori and Eclat for mining frequent itemsets, maximal frequent itemsets, closed frequent itemsets and association rules. Package opusminer provides an interface to the OPUS Miner algorithm (implemented in C++) for finding the key associations in transaction data efficiently, in the form of self-sufficient itemsets, using either leverage or lift.

4.2.11 模糊规则系统的软件包

  • 模糊规则系统frbs包实现了从数据中学习模糊规则系统的标准方法,用于回归和分类。RoughSets包在一个包中提供了粗糙集论(RST)和模糊粗糙集论(FRST)的全面实现。

  • Fuzzy Rule-based Systems : Package frbs implements a host of standard methods for learning fuzzy rule-based systems from data for regression and classification. Package RoughSets provides comprehensive implementations of the rough set theory (RST) and the fuzzy rough set theory (FRST) in a single package.

4.2.12 模型选择和验证的软件包

  • 模型选择和验证e1071包有用于超参数调优的tune()函数,可以使用函数errorest()(来自ipred)进行错误率估计。可以利用svmpath包的功能选择支持向量机的成本参数C。splitTools包提供了交叉验证和其他重采样方案的数据分割。nestedcv包为glmnetcaret模型提供了嵌套交叉验证。用于ROC分析和比较候选分类器的其他可视化技术的函数可以从ROCR包获取。hdistabs包实现了一系列模型的稳定性选择,hdi还提供了高维模型中的其他推理程序。

  • Model selection and validation : Package e1071 has function tune() for hyper parameter tuning and function errorest() (ipred) can be used for error rate estimation. The cost parameter C for support vector machines can be chosen utilizing the functionality of package svmpath. Data splitting for crossvalidation and other resampling schemes is available in the splitTools package. Package nestedcv provides nested cross-validation for glmnet and caret models. Functions for ROC analysis and other visualisation techniques for comparing candidate classifiers are available from package ROCR. Packages hdi and stabs implement stability selection for a range of models, hdialso offers other inference procedures in high-dimensional models.

4.2.13 因果分析的软件包

  • 因果机器学习DoubleML包是双机器学习框架在各种因果模型中的面向对象实现。基于mlr3生态系统,可以基于广泛的机器学习方法估计因果效应。

  • Causal Machine Learning : The package DoubleML is an object-oriented implementation of the double machine learning framework in a variety of causal models. Building upon the mlr3 ecosystem, estimation of causal effects can be based on an extensive collection of machine learning methods.

4.2.14 其它程序

  • 其他程序:证据分类器在evclass包中使用Dempster-Shafer质量函数量化关于测试模式类别的不确定性。OneR(One Rule)包提供了一个分类算法,增强了对缺失值和数字数据的精细处理,以及广泛的诊断功能。

  • Other procedures : Evidential classifiers quantify the uncertainty about the class of a test pattern using a Dempster-Shafer mass function in package evclass. The OneR (One Rule) package offers a classification algorithm with enhancements for sophisticated handling of missing values and numeric data together with extensive diagnostic functions.

4.2.15 用于机器学习的宏包

  • 宏包tidymodels包提供了构建预测模型的杂项函数,包括参数调优和变量重要度度量。同样,mlr3包为各种统计和机器学习包提供高级接口。SuperLearner实现了类似的工具箱。h2o包实现了一个通用的机器学习平台,其中包含了许多流行算法的可扩展实现,如随机森林、GBM、GLM(带弹性网正则化)和深度学习(前馈多层网络)等等。可以从mlpack包获取到mlpack C++库的接口。 CORElearn实现了一类相当广泛的机器学习算法,如最近邻,树,随机森林,以及几种特征选择方法。类似地,rminer包接口了在其他包中实现的几种学习算法,并计算了几种性能度量。

  • Meta packages : Package tidymodels provides miscellaneous functions for building predictive models, including parameter tuning and variable importance measures. In a similar spirit, package mlr3 offers high-level interfaces to various statistical and machine learning packages. Package SuperLearner implements a similar toolbox. The h2o package implements a general purpose machine learning platform that has scalable implementations of many popular algorithms such as random forest, GBM, GLM (with elastic net regularization), and deep learning (feedforward multilayer networks), among others. An interface to the mlpack C++ library is available from package mlpack. CORElearn implements a rather broad class of machine learning algorithms, such as nearest neighbors, trees, random forests, and several feature selection methods. Similar, package rminer interfaces several learning algorithms implemented in other packages and computes several performance measures.

4.2.16 可视化的软件包

  • 可视化(最初由Brandon Greenwell贡献):stats::termplot()函数包可以用来绘制预测方法支持 type="terms"的模型中的项。effects包为带有线性预测器的模型(如,线性和广义线性模型)提供了图形和表格效果显示。弗里德曼的部分依赖图(PDPs),这是预测函数的低维度图形渲染,已经在一些包中实现。gbmrandomForestrandomForestSRC 提供了他们自己的函数来显示PDPs,但仅限于使用那些包拟合的模型(来自randomForestpartialPlot 函数更受限,因为它一次只允许一个预测器)。pdpplotmo,和 ICEbox 包更为通用,并允许创建各种机器学习模型的PDPs(例如,随机森林、支持向量机等);pdpplotmo 都支持多变量显示(plotmo 限于两个预测器,而 pdp 使用trellis图形来显示涉及三个预测器的PDPs)。默认情况下,plotmo 将背景变量固定在他们的中位数(或因素的第一级),这比构造PDPs更快,但包含的信息较少。 ICEbox关注于构建个体条件期望(ICE)曲线,这是对Friedman’s PDPs的改进。 ICE curves以及居中的 ICE curves也可以用pdp 包的 partial() 函数构建。

  • Visualisation (initially contributed by Brandon Greenwell) The stats::termplot() function package can be used to plot the terms in a model whose predict method supports type="terms". The effects package provides graphical and tabular effect displays for models with a linear predictor (e.g., linear and generalized linear models). Friedman’s partial dependence plots (PDPs), that are low dimensional graphical renderings of the prediction function, are implemented in a few packages. gbm, randomForest and randomForestSRC provide their own functions for displaying PDPs, but are limited to the models fit with those packages (the function partialPlot from randomForest is more limited since it only allows for one predictor at a time). Packages pdp, plotmo, and ICEbox are more general and allow for the creation of PDPs for a wide variety of machine learning models (e.g., random forests, support vector machines, etc.); both pdp and plotmo support multivariate displays (plotmo is limited to two predictors while pdp uses trellis graphics to display PDPs involving three predictors). By default, plotmo fixes the background variables at their medians (or first level for factors) which is faster than constructing PDPs but incorporates less information. ICEbox focuses on constructing individual conditional expectation (ICE) curves, a refinement over Friedman’s PDPs. ICE curves, as well as centered ICE curves can also be constructed with the partial() function from the pdp package.

4.2.17 可解释人工智能的软件包

  • XAI: 可解释人工智能(XAI)领域的大多数软件包和函数都属于最后一节“可视化”。元包 DALEXiml 提供了解释任何模型的不同方法,包括部分依赖性、累积局部效应和排列重要性。 累积局部效应图也可以直接在 ALEPlot中获取。 SHAP(来自 SHapley Additive exPlanations)是解释ML模型最常用的技术之一。 它以公平的方式将预测分解为预测器的加性贡献。 对于基于树的模型,存在非常快的TreeSHAP算法。 它直接与 h2oxgboost,和 lightgbm 一起提供。 在额外的包中提供了SHAP的模型不可知实现:fastshap 主要使用蒙特卡洛采样来近似SHAP值,而 shaprkernelshap 提供了KernelSHAP的实现。 这些包的SHAP值可以由shapviz包绘制。Python的“shap”包的端口在 shapper中提供。 预测的替代分解在 limeiBreakDown 中实现。

  • XAI : Most packages and functions from the last section “Visualization” belong to the field of explainable artificial intelligence (XAI). The meta packages DALEX and iml offer different methods to interpret any model, including partial dependence, accumulated local effects, and permutation importance. Accumulated local effects plots are also directly available in ALEPlot. SHAP (from SHapley Additive exPlanations) is one of the most frequently used techniques to interpret ML models. It decomposes - in a fair way - predictions into additive contributions of the predictors. For tree-based models, the very fast TreeSHAP algorithm exists. It is shipped directly with h2o, xgboost, and lightgbm. Model-agnostic implementations of SHAP are available in additional packages: fastshap mainly uses Monte-Carlo sampling to approximate SHAP values, while shapr and kernelshap provide implementations of KernelSHAP. SHAP values of any of these packages can be plotted by the package shapviz. A port to Python’s “shap” package is provided in shapper. Alternative decompositions of predictions are implemented in lime and iBreakDown.

4.3 一些新的机器学习领域概念

  • 递归划分:这是一种构建决策树的方法,它反复将数据集划分为两个或更多的子集,这个过程直到满足某种停止条件(比如,达到预设的最大深度)才会停止。每次划分都是基于特定特征的值。

  • 正则化:正则化是一种用于防止过拟合的技术。通过在损失函数中添加一个惩罚项,可以减小模型复杂度并增强其泛化能力。

  • Boosting:Boosting 是一种集成学习技术,它结合了多个“弱”分类器以创建一个“强”分类器。Boosting 的工作方式是,在每个训练阶段,都对预测错误的样本进行加权,使得后续的分类器更关注那些被误分类的样本。

  • 梯度下降:梯度下降是一种优化算法,用于寻找目标函数(如损失函数或成本函数)的最小值。它通过计算当前点的负梯度来迭代地更新参数值,并向着函数值下降最快的方向移动。

  • 支持向量机:支持向量机 (SVM) 是一种分类和回归方法。在二分类问题中,SVM 试图找到一个超平面,能够最大化两个类别之间的边界。

  • 核方法:核方法是一种在更高维的特征空间中进行计算的技巧,而无需显式地计算数据点在这个空间中的表示。它常用于支持向量机等算法。

  • 贝叶斯方法:贝叶斯方法基于贝叶斯定理,将先验知识与观察到的数据结合起来,得出对未知参数的后验概率分布。

  • 遗传算法:遗传算法是一种模拟自然选择过程的搜索优化算法。它通过在每一代中重复选择、交叉和变异操作,从而在解空间中搜索最优解。

  • 模糊规则:模糊规则系统是一种基于模糊逻辑的系统,用于处理模糊或不确定的信息。它由一组如果-那么的模糊规则组成,并且可以处理连续值输入和输出。

  • 因果分析:因果分析是一种研究因果关系的方法。在机器学习中,它涉及使用强大的统计工具(如 Granger 因果性测试)来识别因果关系,或使用建立在潜在因果关系模型基础上的算法(比如 Pearl’s do-calculus)来进行预测。

  • XAI(可解释的人工智能):这是一个研究领域,旨在让人工智能(AI)决策过程变得可以理解和解释。尽管许多现代AI模型(如深度学习)在各种任务上表现出色,但它们往往被视为“黑箱”,因为我们很难理解它们是如何做出具体决策的。XAI的目标是揭示模型内部的复杂机制,并提供有关模型决策的透明、可理解且可信赖的解释。这不仅有助于提高用户对AI系统的信任,也有助于开发者更好地理解模型的行为,从而进行调试和改进。实现XAI的方法包括特征重要性分析、模型可视化、对抗性例证生成、局部可解释性模型(如LIME)等。