R手册(Machine Learning)--mlr (Part 2)

article/2025/11/9 19:58:15

文章目录

  • Configuration (配置)
  • Parallelization (并行)
  • Imputation (插补)
  • Feature Extraction (特征提取)
    • 1. Feature filtering(特征筛选)
    • 2. Feature selection(特征选择)
  • Benchmarking (基准点)
  • Visualization (可视化)
  • Wrappers (封装器)
  • Nested Resampling (嵌套重采样)
  • Ensembles (集成)

R手册(Machine Learning)–mlr (Part 1)
R手册(Machine Learning)–mlr (Part 2)


mlr

Configuration (配置)

getMlrOptions()查看mlr 的现有设置
configureMlr()更改mlr的默认设置

参数:

  • show.info:(traning, tuning, resampling,etc)是否展示默认冗长的输出,默认TRUE
  • on.learner.error:怎样控制learner的错误, “stop”(default), “warn”, “quiet”
  • on.learner.warning:怎样控制learner的警告,“warn”(default) , “quiet”
  • on.par.without.desc:超参数控制,“stop”(default), “warn” ,“quiet”
  • on.par.out.of.bounds:超参数超出边界值,“stop”(default) ,“warn”, “quiet”
  • on.measure.not.applicable:评估指标对learner不适用,“stop”(default) , “warn”, “quiet”
  • show.learner.output:learner在训练的时候输出到控制台,默认TRUE
  • on.error.dump:是否为crashed learner创建一个error dump,当on.learner.error 没有被指定为"stop" 时,默认TRUE

Parallelization (并行)

mlr结合parallelMap包利用多核和集群运算加快运行速度,mlr自动发现能进行并行的操作。

开始并行parallelStart(mode=,cpus=,level=)
结束并行parallelStop()

参数说明
mode决定并行的方式
“local”无并行性,简单的使用mapply
“multicore”单机器上多核,使用parallel::mclapply,windows上不适用
“socket”多核socked mode
“mpi”一个或多个机器上集群运算,使用parallel::makeCluster and parallel::clusterMap
“BatchJobs”批排队HPC集群,使用BatchJobs::batchMap
cpus使用的物理内核数
level控制并行,使用"mlr.benchmark" “mlr.resample” “mlr.selectFeatures” “mlr.tuneParams” “mlr.ensemble”

Imputation (插补)

impute(obj=,target=,cols=,dummy.cols=,dummy.type=)
缺失的数据进行插补,返回一个列表,包括插补过额数据集或task,和插补描述

reimpute(obj=,desc=)用已被impute创建的插补描述(description, desc)插补缺失值

  • obj= data.frame or task
  • target= 指定目标变量,将不会被插补
  • cols= 要插补的列名或逻辑列表
  • dummy.cols= 建立NA(T/F)列的列名
  • dummy.type= 设定"numeric",用(0,1)代替(T/F)
  • 也能用classes 和dummy.classes 代替cols

传递给cols或classes的list示例:
cols=list(V1=imputeMean()) V1是要插补的列,imputeMean()为要插补的方法

允许的插补方法说明
imputeConst(const=)常数
imputeMedian()中位数
imputeMode()众数
imputeMin(multiplier=)最小值
imputeMax(multiplier=)最大值
imputeNormal(mean=,sd=)正态插补
imputeHist(breaks=,use.mids=)
imputeLearner(learner=,features=)模型插补

Feature Extraction (特征提取)

1. Feature filtering(特征筛选)

filter

filterFeatures(task=,method=,perc=,abs=,threshold=)
按特征的重要性进行排序,选择其中的top n percent(perc=), top n(abs=) or 设定阈值(threshold=),返回task,没有被筛选的特征将会被删除。

默认的筛选方法为"randomForestSRC.rfsrc",也可以设置其他方法:
“anova.test” “carscore” “cforest.importance”
“chi.squared” “gain.ratio” “information.gain”
“kruskal.test” “linear.correlation” “mrmr” “oneR”
“permutation.importance” “randomForest.importance”
“randomForestSRC.rfsrc” “randomForestSRC.var.select”
“rank.correlation” “relief”
“symmetrical.uncertainty” “univariate.model.score”
“variance”

2. Feature selection(特征选择)

selection

selectFeatures(learner=,task=, resampling=,measures=,control=)
用一个特征选择算法(control)重抽样和建立模型,反复选择不同的特征集,直到找到最好的特征集。返回FeatSelResult对象,包括最佳选择和最佳路径。

tsk = subsetTask(tsk,features=fsr$x)应用最佳选择结果(fsr)到task(tsk)

特征选择算法(control)

  • makeFeatSelControlExhaustive(max.features=)尝试每一种特征组合,可选参数max.features
  • makeFeatSelControlRandom(maxit=,prob=,max.features=)随机抽取特征集(概率prob,default 0.5) 迭代(maxit,default 100),返回其中最好的。
  • makeFeatSelControlSequential(method=,maxit=,max.features=,alpha=,beta=)用以下的迭代算法搜寻,评估:
    “sfs” forward search, “sffs” floating forward search,
    “sbs” backward search , “sfbs” floating backward search,
    “alpha” 每次增加一个特征来改善评估,取最少特征集
    “beta” 每次移除一个特征来改善评估,取最少特征集
  • makeFeatSelControlGA(maxit=,max.features=,mu=,lambda=,crossover.rate=,mutation.rate=)随机特征向量的遗传算法,然后利用最佳性能的交叉来产生后代,代代相传,参数:
    mu是父系规模
    lambda 是子系规模
    crossover.rate 从第一亲本选择一点的概率
    mutation.rate 是翻转的概率(on or off)

Benchmarking (基准点)

benchmark(learners=,tasks=,resamplings=,measures=)
允许进行简单的比较:执行单一task的多重learner,执行多重task的单一learner,或者执行多重task的多重learner,返回一个基准结果对象。
基准结果被函数getBMR<object>接收:
AggrPerformance
FeatSelResults FilteredFeatures LearnerIds
LeanerShortNames Learners MeasureIds Measures
Models Performances Predictions TaskDescs TaskIds
TuneResults

mlr内置了许多有趣的task,对基准学习很有帮助:
agri.task bc.task bh.task costiris.task iris.task
lung.task mtcars.task pid.task sonar.task
wpbc.task yeast.task

Visualization (可视化)

1. 可视化总表

生成数据函数ggplot2绘图函数ggvis绘图函数说明
generateThreshVsPerfDataplotThresVsPerfplotThreshVsPerfGGVIS性能
plotROCCurves-ROC分析
generateCritDifferencesDataplotCritDifferences-基准实验
generateHyperParsEffectDataplotHyperParsEffect调整,超参数调整效果
generateFilterValuesDataplotFilterValuesplotFilterValuesGGVIS功能选择
generateLearningCurveDataplotLearningCurveplotLearningCurveGGVIS学习曲线
generatePartialDependenceDataplotPartialDependenceplotPartialDependenceGGVIS部分依赖情节
generateFunctionalANOVAData
generateCalibrationDataplotCalibration-分类器校准图

2. 可视化函数说明

Performance表现
generateThreshVsPerfData(obj=,measures=)获得二分类问题不同切分点评估质量,促使选出最优阈值(threshold)
plotThreshVsPerf(obj)用ThreshVsPerfData数据作出阈值可视化表现
plotROCCurves(obj)用ThreshVsPerfData数据做出ROC曲线,一定要设定measures=list(fpr,tpr)
Residuals残差
plotResiduals(obj=)为Prediction 或BenchmarkResult对象作残差

示例

n = getTaskSize(sonar.task)
train.set = sample(n, size = round(2/3 * n))
test.set = setdiff(seq_len(n), train.set)lrn1 = makeLearner("classif.lda", predict.type = "prob")
mod1 = train(lrn1, sonar.task, subset = train.set)
pred1 = predict(mod1, task = sonar.task, subset = test.set)df = generateThreshVsPerfData(pred1, measures = list(fpr, tpr, mmce))
performance(pred1, auc)
#>      auc 
#> 0.847973
plotThreshVsPerf(df)lrn2 = makeLearner("classif.ksvm", predict.type = "prob")  # 需要载入包kernlab
mod2 = train(lrn2, sonar.task, subset = train.set)
pred2 = predict(mod2, task = sonar.task, subset = test.set)df = generateThreshVsPerfData(list(lda = pred1, ksvm = pred2), measures = list(fpr, tpr))
plotROCCurves(df)

阈值
roc

Learning curve学习曲线
generateLearningCurveData(learners=,task=,resampling=,percs=,measures=)获得不同百分比的task data上做模型评估质量数据
plotLearningCurve(obj=)比较数据的已使用和模型质量的关系,使用LearningCurveData对象

示例

r = generateLearningCurveData(learners = c("classif.rpart", "classif.knn"),task = sonar.task,percs = seq(0.1, 1, by = 0.2),measures = list(tp, fp, tn, fn),resampling = makeResampleDesc(method = "CV", iters = 5),show.info = FALSE)
plotLearningCurve(r)

学习曲线

Feature importance特征重要性
generateFilterValuesData(task=,method=)用指定的选择方法获得排序的特征重要性
plotFilterValues(obj=)可视化特征重要性,FilterValuesData对象

示例

fv = generateFilterValuesData(iris.task)
plotFilterValues(fv)

import

Hyperparameters tuning超参数调优
generateHyperParsEffectData(tune.result=)获得不同超参数的影响
plotHyperParsEffect(hyperpars.effect.data=,x=,y=,z=)可视化超参数影响,HyperParsEffectData对象
plotOptPath(op=)可视化最优进程详情,<obj>$opt.path对象, <obj>是 tuneResult或 featSelResult类的对象。
plotTuneMultiCritResult(res=)展示pareto图,多重评估质量的调优结果

示例

ps = makeParamSet(makeNumericParam("C", lower = -5, upper = 5, trafo = function(x) 2^x)
)
ctrl = makeTuneControlGrid()
rdesc = makeResampleDesc("Holdout")
lrn = makeTuneWrapper("classif.ksvm", control = ctrl,measures = list(acc, mmce), resampling = rdesc, par.set = ps, show.info = FALSE)
res = resample(lrn, task = pid.task, resampling = cv2, extract = getTuneResult, show.info = FALSE)
data = generateHyperParsEffectData(res)
plotHyperParsEffect(data, x = "C", y = "acc.test.mean", plot.type = "line")

超参数

Partial dependence部分依赖
generatePartialDependenceData(obj=,input=)获得模型(obj)的部分依赖预测,通过每一次的特征数据输入(input)
plotPartialDependence(obj=)部分依赖图,PartialDependenceData对象

示例

lrn.regr = makeLearner("regr.ksvm")
fit.regr = train(lrn.regr, bh.task)
pd.regr = generatePartialDependenceData(fit.regr, bh.task, "lstat", fun = median)
plotPartialDependence(pd.regr)lrn.classif = makeLearner("classif.ksvm", predict.type = "prob")
fit.classif = train(lrn.classif, iris.task)
pd.classif = generatePartialDependenceData(fit.classif, iris.task, "Petal.Length", fun = median)
plotPartialDependence(pd.classif)

regcalssfic

Benchmarking基准点
plotBMRBoxplots(bmr=)表现的分类图
plotBMRSummary(bmr=)平均表现的散点图
plotBMRRanksAsBarChart(bmr=)learner 排序柱形图
Other其他图
generateCritDifferencesData(bmr=,measure=,p.value=,test=)执行临界差检验,用bonforroni-dunn(“bd”) 或"Nemenyi"检验
plotCritDifferences(obj=)临界点检验可视化
generateCalibrationData(obj=)评估概率预测与真实发生率的校准
plotCalibration(obj=)校准图

12

Wrappers (封装器)

封装器使具有附加功能的学习者融合。mlr把带有封装器的learner看作一个单独的learner,超参数的封装也会与基础模型参数联合调谐。带包装的模型将应用于新数据。
wrappers

Preprocessing and imputation预处理和插补
makeDummyFeaturesWrapper(learner=)
makeImputeWrapper(learner=,classes=,cols=)
makePreprocWrapper(learner=,train=,predict=)
makePreprocWrapperCaret(learner=,…)
makeRemoveConstantFeaturesWrapper(learner=)
Class imbance类别不平衡
makeOverBaggingWrapper(learner=)
makeSMOTEWrapper(learner=)
makeUndersampleWrapper(learner=)
makeWeightedClassesWrapper(learner=)
Cost-sensitive成本分析
makeCostSensClassifWrapper(learner=)
makeCostSensRegrWrapper(learner=)
makeCostSensWeightedPairsWrapper(learner=)
Multilabel classification多标签分类
makeMultilabelBinaryRelevanceWrapper(learner=)
makeMultilabelClassifierChainsWrapper(learner=)
makeMultilabelDBRWrapper(learner=)
makeMultilabelNestedStackingWrapper(learner=)
makeMultilabelStackingWrapper(learner=)
Other其他
makeBaggingWrapper(learner=)
makeConstantClassWrapper(learner=)
makeDownsampleWrapper(learner=,dw.perc=)
makeFeatSelWrapper(learner=,resampling=,control=)
makeFilterWrapper(learner=,fw.perc=,fw.abs=,fw.threshold=)
makeMultiClassWrapper(learner=)
makeTuneWrapper(learner=,resampling=,par.set=,control=)

Nested Resampling (嵌套重采样)

mlr支持嵌套重采样进行复杂操作,例如通过包装来调优和特征选择等。为了获得良好的泛化性能估计和避免数据泄漏,建议使用外部(用于调优/特征选择)和内部(对于基本模型)重采样过程。

  • 外部重采样能在resample, benchmark中被指定
  • 内部重采样能在makeTuneWrapper, makeFeatSelWrapper, etc中被指定

Ensembles (集成)

makeStackedLearner(base.learners=,super.learner=,method=)将多重learner集成
参数:

  • base.learners= 使用初始预测的learners
  • super.learner= 使用最终预测的learners
  • method= 组合base learners预测的方法
    “average”:所有base learners的平均
    “stack.nocv” “stack.cv”:在base learners的结果上训练super learner (with or without cross-validation)
    “hill.climb”:搜索最优权重平均
    “compress”:用神经网络实现更快的性能


http://chatgpt.dhexx.cn/article/esZ8IQTZ.shtml

相关文章

R手册(Machine Learning)--mlr(Part 1)

文章目录 IntroductionPreprocessing data (预处理)Task and Learner1. Create a task2. Making a learner Training & Testing (训练和测试)1. Setting hyperparameters (设置超参数)2. Train a model and predict (训练模型和预测)3. Measuring performance (模型评估质量…

基于EEMD+GRU+MLR的时间序列预测

0、前言 文章《基于 EEMD-GRU-MLR 的短期电力负荷预测》中&#xff0c;通过构建集合经验模态分解(ensemble empirical modedecomposition&#xff0c;EEMD)以及门控循环单元神经网络(gated recurrent unit neural network&#xff0c;GRU)和多元线性回归(multiplelinear regres…

机器学习的R实现(mlr包)

目录 Machine Learning with MLR Package 1. 获取数据 2. 探索数据 3. 缺失值填补 4. 特征工程 5. 机器学习 1. 二次判别分析&#xff0c;Quadratic Discriminant Analysis (QDA). 2.逻辑回归 Logistic Regression 3. 决策树-Decision Tree 4. 随机森林&#xff0c;Ra…

机器学习之MLR

线性回归&#xff08;Linear regression&#xff09;是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为一元回归&#xff0c;大于一个自变量情…

MLR(mixed logistic regression)模型

基本形式 MLR模型是阿里巴巴12年提出&#xff08;17年发表&#xff09;点击率预估模型&#xff0c;它利用分段方式对数据进行拟合&#xff0c;相比LR模型&#xff0c;能够学习到更高阶的特征组合。其基本表达式如下 p ( y 1 ∣ x ) g ( ∑ j 1 m σ ( u j T x ) η ( w j …

MLR(mixed logistic regression)算法原理及实现

MLR&#xff08;mixed logistic regression&#xff09;算法 参考https://zhuanlan.zhihu.com/p/77798409?utm_sourcewechat_session 盖坤ppt : https://wenku.baidu.com/view/b0e8976f2b160b4e767fcfdc.html 原文&#xff1a;《Learning Piece-wise Linear Models from Large…

多元线性回归MLR

多元线性回归(MLR) 文章目录 多元线性回归(MLR)由极大似然估计(MLE, Maximum likelihood estimation)推导MSE简单导数知识推导解析解( θ ( X T X ) − 1 X T Y \theta (X^TX)^{-1}X^TY θ(XTX)−1XTY)来个例子试一试吧 不用解析解, 用梯度下降求解 θ \theta θ梯度下降法另…

MySql MVCC 详解

注意以下操作都是以InnoDB引擎为操作基准。 一&#xff0c;前置知识准备 1&#xff0c;MVCC简介 MVCC 是多版本并发控制&#xff08;Multiversion Concurrency Control&#xff09;的缩写。它是一种数据库事务管理技术&#xff0c;用于解决并发访问数据库的问题。MVCC 通过创…

MVCC总结

MVCC多版本并发控制 数据库中的并发分为三种情况&#xff1a; 读读&#xff1a;不存在任何问题&#xff0c;也不需要并发控制 读写&#xff1a;有数据安全问题&#xff0c;脏读&#xff0c;幻读&#xff0c;不可重复读 写写&#xff1a;有数据安全问题&#xff0c;可能存在…

Mysql中的MVCC

Mysql到底是怎么实现MVCC的&#xff1f;这个问题无数人都在问&#xff0c;但google中并无答案&#xff0c;本文尝试从Mysql源码中寻找答案。 在Mysql中MVCC是在Innodb存储引擎中得到支持的&#xff0c;Innodb为每行记录都实现了三个隐藏字段&#xff1a; 6字节的事务ID&#xf…

MVCC原理

在并发读写数据库时&#xff0c;读操作可能会不一致的数据&#xff08;脏读&#xff09;。为了避免这种情况&#xff0c;需要实现数据库的并发访问控制&#xff0c;最简单的方式就是加锁访问。由于&#xff0c;加锁会将读写操作串行化&#xff0c;所以不会出现不一致的状态。但…

MVCC机制

MVCC 1. MVCC是什么&#xff1f; MVCC&#xff0c;全称Multi-Version Concurrency Control&#xff0c;即多版本并发控制。MVCC是一种并发控制的方法&#xff0c;一般在数据库管理系统中&#xff0c;实现对数据库的并发访问&#xff0c;在编程语言中实现事务内存。 MVCC的具体…

MVCC实现原理

1、什么是MVCC mvcc多版本并发控制。 mvcc在mysql innodb中主要是为了提高数据库并发性能&#xff0c;用更好的方式去处理读写冲突&#xff0c;做到即使有读写冲突时&#xff0c;也能做到不加索&#xff0c;非阻塞并发读。。 2、实现原理&#xff1a; mvcc的实现是通过保存…

MySQL的MVCC及实现原理

一 概要 1.什么是 MVCC ? MVCC&#xff0c;全称 Multi-Version Concurrency Control &#xff0c;即多版本并发控制。MVCC 是一种并发控制的方法&#xff0c;一般在数据库管理系统中&#xff0c;实现对数据库的并发访问&#xff0c;在编程语言中实现事务内存。 MVCC 在 MySQL…

InnoDB MVCC 机制

本文详细的介绍了什么是MVCC&#xff1f;为什么要有MVCC&#xff1f;以及MVCC的内部实现原理&#xff1a;包括Undo Log的版本链是如何组织的&#xff0c;RR、RC两个级别下一致性读是如何实现的等。通过案例、插图&#xff0c;以最通俗易懂的方式&#xff0c;让你彻底掌握MVCC的…

mysql mvcc 实例说明_Mysql MVCC

一、MVCC概述 MVCC&#xff0c;全称Multi-Version Concurrency Control&#xff0c;即多版本并发控制。整个MVCC多并发控制的目的就是为了实现读-写冲突不加锁&#xff0c;提高并发读写性能&#xff0c;而这个读指的就是快照度, 而非当前读&#xff0c;当前读实际上是一种加锁的…

MVCC

一、什么是MVCC MVCC&#xff08;Multiversion concurrency control &#xff09;是一种多版本并发控制机制。 二、MVCC是为了解决什么问题? 并发访问(读或写)数据库时&#xff0c;对正在事务内处理的数据做多版本的管理。以达到用来避免写操作的堵塞&#xff0c;从而引发读操…

MVCC详解

一、前言 全称Multi-Version Concurrency Control&#xff0c;即多版本并发控制&#xff0c;主要是为了提高数据库的并发性能。以下文章都是围绕InnoDB引擎来讲&#xff0c;因为myIsam不支持事务。 同一行数据平时发生读写请求时&#xff0c;会上锁阻塞住。但mvcc用更好的方式…