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

article/2025/11/9 19:49:39

文章目录

  • Introduction
  • Preprocessing data (预处理)
  • Task and Learner
    • 1. Create a task
    • 2. Making a learner
  • Training & Testing (训练和测试)
    • 1. Setting hyperparameters (设置超参数)
    • 2. Train a model and predict (训练模型和预测)
    • 3. Measuring performance (模型评估质量)
    • 4. Resampling a learner (重抽样)
  • Tuning hyperparameters (超参数调优)
    • 1. 设定超参数搜索空间
    • 2. 设定超参数搜索算法
    • 3. 超参数调优
  • Quickstart

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


mlr

Introduction

mlr官网链接
mlr提供机器学习的统一接口:tasks, learners, hyperparameters, etc

  • Tasks:建立任务,包括任务描述(classification, regression, clustering, etc)和数据集
  • Learners:建立学习者,指定机器学习算法(GLM, SVM, xgboost, etc)和参数
  • Hyperparameters:对Learners直接指定超参数或超参数调优。给Learners一个可能的参数集列表。
  • Wrapped Models:已封装模型,已经被训练可以预测的模型
  • Predictions:应用模型到新数据或者原始数据进行预测
  • Meastures:模型评估指标(RMSE, logloss, AUC, etc)
  • Resampling:重抽样,通过分离训练集来拟合通用的模型,通常包括holdout 验证,K折交叉验证(K-fold cross-validation),留一交叉验证(LOOCV)

Workflow
wf

Preprocessing data (预处理)

函数说明
createDummyFeatures(obj=,target=,method=,cols=)为每一个非数值变量创建哑变量(0,1),不包括目标变量target,也可以指定变量cols
normalizeFeatures(obj=,target=,method=,cols=, range=,on.constant=)数字变量标准化,method: {“center”, “scale”,“standardize”,“range”(default range=c(0,1)) }
mergeSmallFactorLevels(task=,cols=,min.perc=)组合进单一的factor level
summarizeColumns(obj=)data.frame or Task的汇总说明
capLargeValues(obj,cols=NULL)离群值转化(帽子法)
dropFeatures
removeConstantFeatures
summarizeLevels

Task and Learner

1. Create a task

创建任务说明
makeClassifTask(data=,target=)回归问题
makeRegrTask(data=,target=)分类,目标列必须是一个factor
makeMultilabelTask(data=,target=)多标签分类问题,每个对象可以同时属于多个类别
makeClusterTask(data=)聚类分析
makeSurvTask(data=,target=c(“time”,“event”))生存分析
makeCostSensTask(data=,costs=)成本敏感的分类,分类中的标准目标是获得较高的预测准确度,即最小化分类器产生的错误数量
getTaskDesc(x)获得总的任务描述,查看positiv

task

task的其他参数:

  • weight:将权重向量应用到记录
  • block:传递因子向量将记录绑定到一块,重抽样的时候不会 被拆分

2. Making a learner

makeLearner(cl,predict.type = "response",predict.threshold = NULL, ...,par.vals)指定机器学习算法,也能一次指定多个

参数:

  • cl:指定要使用的算法名,cl= <task_Type>.<R_method_name> (“classif.xgboost”,
    “regr.randomForest” ,“cluster.kmeans”,etc)
  • predict.type:"response"返回原始数据,"prob"返回分类问题的概率,"se"返回回归问题的标准误
  • par.vals:传递超参数列表,也能直接传递(…)
  • predict.threshold :生成类标签的阈值

mlr有超过170个不同的是算法:mlr已经集成的算法

  • listLearners():展示所有的learner
  • listLearners(task):task允许的所有learner
  • listLearners(“classif”,properties=c(“prob”, “factors”)):展示所有的分类问题中,能输出概率"prob",和因子“factors”
  • See also getLearnerProperties()

Training & Testing (训练和测试)

1. Setting hyperparameters (设置超参数)

setHyperPars(learner=,...)传递超参数给learner
getParamSet(learner=)获得learner可能的超参数文本(such as “classif.qda”)

2. Train a model and predict (训练模型和预测)

train(learner, task,subset)训练模型,subset设置训练集(默认是全部数据)
getLearnerModel(model)将底层的学习者模型纳入mlr

predict(model,task,subset)预测原始数据
predict(model,newdata)预测新数据
as.data.frame(pred)查看预测的结果

pred2<- setThreshold(pred, threshold)重设分类问题的阈值,重新预测

3. Measuring performance (模型评估质量)

performance(pred=,measures=) 依照一个或几个指标评估模型
getDefaultMeasure(task/learner)查看默认指标
listMeasures()查看完整的指标列表
listMeasures(task)查看匹配指标

通过参数measures=list(mse,medse,mae)指定评估指标

  • classif: acc auc bac ber brier[.scaled] f1 fdr fn
    fnr fp fpr gmean multiclass[.au1u .aunp .aunu
    .brier] npv ppv qsr ssr tn tnr tp tpr wkappa
  • regr: arsq expvar kendalltau mae mape medae
    medse mse msle rae rmse rmsle rrse rsq sae
    spearmanrho sse
  • cluster: db dunn G1 G2 silhouette
  • multilabel: multilabel[.f1 .subset01 .tpr .ppv
    .acc .hamloss]
  • costsens: mcp meancosts
  • surv: cindex
  • other: featperc timeboth timepredict timetrain

分类任务的评估详情:
calculateConfusionMatrix(pred)获得混淆矩阵
calculateROCMeasures(pred)ROC曲线

4. Resampling a learner (重抽样)

makeResampleDesc(method=,...,stratify=)
makeResampleInstance(desc=,task=)确保每次抽样统一,以减少噪声值

参数说明
method重抽样的方法
“CV”cross-volidation(交叉验证),用iters指定k-folds(K折)数
“LOO”leave-one-out cross-volidation(留一交叉验证),用iters指定k-folds数
“RepCV”repeated cross-volidation(反复交叉验证),reps指定重复数,用iters指定k-folds数
“Subsample”aka Monte-Carlo cross-volidation ,用iters指定k-folds数,split指定train%
“Bootstrap”out-of-bag bootstrap(袋装法),iters
“Holdout”for train% use split
stratify保持目标变量的抽样比例

resample(learner=,task=,resampling=,measures=)通过指定重抽样训练和测试模型

  • mlr有若干预先定义的重抽样:
    cv2(2-koldscross-volidation),
    cv3, cv5, cv10, hout(holdout with split 2/3 for traing, 1/3 for testing)
  • 也可以用重抽样函数传递给resample()
    crossval() repcv() holdout() subsample()
    bootstrapOOB() bootstrapB632() bootstrapB632plus()

Tuning hyperparameters (超参数调优)

1. 设定超参数搜索空间

makeParamSet(make<type>Param())

make<type>Param()指定超参数搜索类型和范围
makeNumericParam(id=,lower=,upper=,trafo=)数字
makeIntegerParam(id=,lower=,upper=,trafo=)整数
makeIntegerVectorParam(id=,len=,lower=,upper=,trafo=)整数向量
makeDiscreteParam(id=,values=c(…))分类变量
Logical, LogicalVector, CharacterVector, DiscreteVector其他类型

参数trafo可以用一个指定函数转换输出:例如lower=-2,upper=2,trafo=function(x) 10^x,输出值between 0.01 and 100

2. 设定超参数搜索算法

makeTuneControl<type>()

<type>说明
Grid(resolution=10L)所有可能的网格点
Random(maxit=100)随机抽样搜索空间
MBO(budget=)Bayesion model-based optimization(基于贝叶斯模型的最优化)
Irace(n.instances=)迭代比赛过程
CMAES()
Design()
GenSA()

3. 超参数调优

tuneParams(learner=,task=,resampling=,measures=,par.set=,control=)超参数调优函数

Quickstart

# 预处理数据
library(mlbench)
data(Soybean)
soy = createDummyFeatures(Soybean,target="Class") #转化因子变量为哑变量(0,1),对xgboost模型有用
tsk = makeClassifTask(data=soy,target="Class") # 建立任务
ho = makeResampleInstance("Holdout",tsk) # 设定训练集和测试集(default 2/3 for traing, 1/3 for testing
tsk.train = subsetTask(tsk,ho$train.inds[[1]])
tsk.test = subsetTask(tsk,ho$test.inds[[1]])# 设定learner和评估指标
lrn = makeLearner("classif.xgboost",nrounds=10)
cv = makeResampleDesc("CV",iters=5) # 5折交叉验证
res = resample(lrn,tsk.train,cv,acc) # 准确率作为评估指标#超参数调优,重训练模型
ps = makeParamSet(makeNumericParam("eta",0,1), # 调优超参数eta, lambda, max_depthmakeNumericParam("lambda",0,200),makeIntegerParam("max_depth",1,20))
tc = makeTuneControlMBO(budget=100) # 用MBO算法搜索
tr = tuneParams(lrn,tsk.train,cv5,acc,ps,tc) # 5折交叉验证调优
lrn = setHyperPars(lrn,par.vals=tr$x)mdl = train(lrn,tsk.train) #测试集训练模型
prd = predict(mdl,tsk.test) # 预测
calculateConfusionMatrix(prd) # 混淆矩阵评估模型
mdl = train(lrn,tsk) # 用所有的数据重新训练模型,投入实用

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

相关文章

基于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用更好的方式…

MVCC 机制的原理及实现

什么是 MVCC MVCC (Multiversion Concurrency Control) 中文全程叫多版本并发控制&#xff0c;是现代数据库&#xff08;包括 MySQL、Oracle、PostgreSQL 等&#xff09;引擎实现中常用的处理读写冲突的手段&#xff0c;目的在于提高数据库高并发场景下的吞吐性能。 如此一来…