欢迎光临散文网 会员登陆 & 注册

【R机器学习:mlr3verse技术手册】III 特征工程① 缺失值插补

2022-12-01 18:33 作者:张敬信老师  | 我要投稿


3 特征工程

机器学习中的数据预处理,通常也统称为特征工程,主要包括:缺失值插补、特征变换,目的是提升模型性能。

3.1 特征工程概述

用 mlr3pipelines 包实现特征工程:

  • 选择特征工程步相应的 PipeOp

  • 多个特征工程步通过管道符%>>%连接;

  • 很多PipeOp都支持affect_columns参数,接受Selector选择器函数(接受Task)以选择该PipeOp影响的列:

  • selector_all(): 选择所有特征;

  • selector_none(): 不选择任何特征;

  • selector_type(types): 根据类型来选择特征:"logical", "integer", "numeric", "character", "factor", "ordered", "POSIXct";

  • selector_grep(pattern): 根据正则表达式匹配(特征名字)选择特征;

  • selector_name(feature_names): 根据特征名字选择特征;

  • selector_invert(selector): 选择某选择器的反选特征;

  • selector_intersect/union/setdiff(selector_x, selector_y): 选择两个选择器特征的交/并/差集;

  • selector_missing(): 选择包含缺失值的特征;

  • selector_cardinality_greater_than(min_cardinality): 选择分类特征的基数大于指定阈值的特征。

帮助:?PipeOp

以“标准化”管道为例,其$train()方法接受训练数据,做标准化处理输出变换后的数据,同时训练好了“标准化”参数(均值、标准差)将作为状态$state保存下来;其$predict()方法,用保存好的状态参数对新数据做同样的变换。

下面看一个具体的例子:

特征工程管道的两种用法:

(1) 调试:查看特征工程步对输入数据做了什么

  • 训练特征工程管道:提供任务,访问特征工程之后的数据:

将训练好的特征工程管道,用于新数据:

(2) 用于机器学习:再接一个学习器,转化成图学习器(和普通学习器一样使用)

3.2 缺失值插补

目前支持的插补方法:

3.2.1 简单插补

  • 用某常数、均值、中位数、众数插补

3.2.2 随机抽样插补

  • 通过从非缺失的训练数据中随机抽样来插补特征

3.2.3 直方图法插补

  • 用直方图法插补数值特征

3.2.4 学习器插补

  • 通过为每个特征拟合一个学习器来插补特征

使用参数context_columns所指示的特征作为特征来训练插补学习器。注意该参数是PipeOpImpute基类的一部分。

此外,只有学习器支持的特征可以被插补;即regr类型的学习器只能插补整数和数值特征,而classif可以插补因子、有序因子和逻辑值特征。

用于插补的学习器是在所有的context_columns上训练的;如果这些列包含缺失值,学习器通常需要能够自己处理缺失值,或者需要做自我插补。

  • 决策树插补

  • KNN 插补,训练 KNN 学习器时,先用直方图法插补

3.2.5 超出范围插补

通过增加一个新的水平 ".MISSING" 来插补因子特征。

通过使用min(x)−offset−multiplier∗diff(range(x)max(x) + offset + multiplier * diff(range(x)),移到最小值以下或最大值以上的常量值插补数值特征。

该插补法在基于树的模型中尤其合理。


另外,跟缺失值相关的特征工程还有po("missind"):在任务中增加是否缺失指示列(删除原始特征),通常与PipeOpFeatureUnion和各插补PipeOps结合使用。

注意,affect_columns是用selector_invert(selector_type(c("factor", "ordered", "character"))初始化的,因为因子列的缺失值通常是用超出范围的插补(PipeOpImputeOOR)。

注:当然也可以在mlr3框架外面,单独对数据做缺失值插补,再用来创建任务。

参考文献

  1. Marc Becker et al. mlr3book. 2022.

  2. Marc Becker et al. mlr3 Gallery. 2021.

  3. Bernd Bischl et al. Machine Learning Pipelines in R. 2021.

  4. Martin Binder et al. mlr3pipelines: Preprocessing Operators and Pipelines for mlr3. 2022.

我正在写一本《R机器学习:基于mlr3verse》的书,其中的mlr3verse技术篇草稿,欢迎您的阅读品鉴和转发扩散(但禁止用于任何出版)!

想提前学习本书内容,也可以关注我的 2023年寒假“R机器学习(基于mlr3verse)”培训班,邀请函链接:提取码:xxul

https://pan.baidu.com/s/1_SaYPebqhnXoxDT8W9tjJA?pwd=xxul

另外,我在第15届中国R会上做的报告,相当于是 mlr3verse技术手册 的整体略讲:

张敬信 第15届R会报告-R机器学习:mlr3verse核心工作流https://www.zhihu.com/zvideo/1579758441576534016
讲座 PPT 以及 R机器学习:mlr3verse技术手册,可到我的 Gitee/Github下载:

https://gitee.com/zhjx19/rconf15

https://github.com/zhjx19/RConf15


【R机器学习:mlr3verse技术手册】III 特征工程① 缺失值插补的评论 (共 条)

分享到微博请遵守国家法律