【ACE成长记第4期】美女程序员分享:机器学习之数据预处理到特征构建模型训练

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 本期由阿里云MVP&优秀ACE(阿里云开发者社群) 郭翔云 为大家分享机器学习之从数据预处理到特征构建谈天池工业AI竞赛模型训练。通过天池工业AI竞赛示例,演示从数据观察到特征构建,再到模型训练验证评估的一个机器学习的完整流程。

本期由阿里云MVP&优秀ACE(阿里云开发者社群) 郭翔云 为大家分享机器学习之从数据预处理到特征构建谈天池工业AI竞赛模型训练。通过天池工业AI竞赛示例,演示从数据观察到特征构建,再到模型训练验证评估的一个机器学习的完整流程。
视频:https://yq.aliyun.com/live/597
_

分享分为三部分:

  • 基于天池工业AI大赛-智能制造质量预测的赛题进行示例分析;
    1.1赛题与数据理解

1.2数据预处理
1.3特征构建
1.4模型与参数选择

  • 个人经验总结;
  • 个人推荐。

一、赛题分析
1.1赛题与数据理解
2
赛题示例分析选取的是阿里云天池大数据竞赛平台上的天池工业AI大赛-智能制造质量预测赛题。

3
首先我们来看赛题分析。
本次比赛提供了生产线上不同工序的参数数据。通过这些参数特征设计模型,预测与之对应的特性数值。
赛题的难点在于生产过程复杂,参数众多,存在空值和异常值。
赛题的价值在于通过建立算法模型,希望能够提前发现当前工序中所存在的问题,避免问题流入到后道工序,减少生产资源浪费,优化产品良率。
评测指标选取的是MSE,MSE的值越小代表预测结果越好。
4

在我们拿到数据的时候,首先要对数据进行观察,通过观察,可以发现数据包含以下特点:
特点1,数据包含ID列、工具列、参数列,训练集包含目标列。
特点2,参数列和目标列经过脱敏处理,无法得知其物理意义。
比如我们来看下面的数据示例,我们会发现参数列的名称为210X1、210X2等,是经过脱敏处理的,也就是说我们无法从业务角度进行考虑。

5
特点3,通过观察时间,发现参数列并不是从左到右依次产生的。
比如我们来看下面的数据示例,我们会发现下面的5列参数列的发生顺序依次是5、4、1、3、2.

6
特点4,部分参数列存在缺失值、单一值和重复列情况。我们可以看下面的数据示例。

7
特点5,一道工序内,机台的种类直接影响了多个参数列的数据分布。
我们来看下面的数据示例。我们可以发现后面的参数列明显受到前面TOOL列的影响,比如参数210X1,在工具M下数值为101左右,在工具N下数值为89左右,而在工具O下数值为98左右。

8
特点6,部分参数列中的缺失值被机器自动以0或其他异常值进行填充,上述现象存在于同工序下的多个工具中。我们可以看下面的数据示例。

1.2 数据与处理
9
基于上面总结的6个数据特点,我进行了以下数据预处理操作。

10
1、将数据集依照工序列分割为不同的工序单元。
大部分工序列都是以Tool开头的,但是也有几列比较特殊的,比如Chamer ID、OPERATION ID和Chamber列。我们来看一下该如何处理。

11
通过观察,可以发现Chamber ID后面的数据,同时受到TOOL1和Chamber ID的影响,因此把TOOL1和Chamber ID合并作为工具列。
而对于OPERATION ID和Chamber列,后面的数据仅受此列数据的影响,因此把它们看做独立的工序列。

12
2、对数据列的初步清理,先后删除空值占全列40%以上的列、方差为0的列和重复列。
3、对日期列的处理。对于8位、14位、16位的日期数据,因为数据是2016年以后的数据,因此把日期列转为2016年1月1日以来所经历的秒数。

13
5、对各列的0值和NA值,填充工具内内非零非NA元素的平均值。

1.3 特征构建
14
在工业生产中,每一项参数都有标准值,我们该如何评价实际参数的好坏呢?
以冰箱这种典型工业产品为例,我们当然是希望冰箱的温度控制越精确越好,能耗越低越好。

15
基于以上思考,我们可以总结出两种评价参数好坏的方式。1、与标准值的差值,也就是所谓的能耗越低越好。2、相对标准值差值的绝对量,也就是温度控制越精确越好。
在这种思路下,除了原值以外,我又建立了两类额外特征备选。
将组内平均值看做标准值。特征1,与标准值的差,看作偏差值err。特征2,与标准值的差的绝对值,看作偏离量errabs。

16
进一步地,两列交互能否作为特征呢?比如时间列,单一的时间戳是无意义的,那么两列时间戳之差就有可能表示某道工序所耗费的时间,可以作为一列新特征。
同样的,既然差我们可以做,那么和差积商我们是不是都可以尝试。

17
因此,对于双因子,我构建了加减乘除反除5个备选特征,将这些因子当做新的独立的因子,像单因子一样考虑原值、偏差值和偏离量。

18
我们来看特征构建的流程。
1、计算单因子和双因子交互列并纳入备选特征。
对于单因子X,建立原始值X,X与组内平均值的偏差值X_err,X与组内平均值的偏差绝对量X_errabs。
对于双因子X和Y。计算X和Y的和差积商反除,同时建立上述五列值的样本值与组内平均值的偏差值err,平均值的偏差绝对量errabs。

19
那么单双因子备选特征具体是怎么计算的呢?
我们首先看单因子备选特征。以210X1为例,假设数据仅包含如下12行,对于工具M,我们计算210X1的平均值为101.6375,原始值与平均值的差为210X1_err,差的绝对值为210X1_errabs。工具N、O也是一样的计算方式。我们将210X1、210X1_err和210X1_errabs作为备选特征。

20
对于双因子备选特征。我们以210X1乘210X2为例,假设数据仅包含以下12行。对于工具M,先分别计算210X1乘210X2,对乘法结果计算均值mean。用乘法结果与均值的差作为err,差的绝对值作为errabs。同理,工具N、O也是一样的计算方式。将210X1210X2、210X1210X2_err、210X1*210X2_errabs作为备选特征。对于加减乘除反除都是同样的计算方式。

21
我们来约定一下单双因子的描述方式。单因子记作X、Xerr、Xerrabs,双因子记作f(X,Y)、f (X,Y)_ err 、f (X,Y)_ erabs。

22
接下来我们对构建产出的特征进行筛选。这里选用的方法是计算备选特征与特征值Value的pearson相关性。
记某特征X与特征值Value的pearson相关性(绝对值)为Pearson(X,Value)。
对于单因子,我们要求Pearson相关性大于0.2。

23
对于双因子,我们要求双因子的pearson大于0.24并且双因子的pearson分别比各自的单因子pearson大于0.05。这里主要是为了强调因子交互带来的额外相关性。
对于单双因子的阈值,是基于当前数据的实验结果给出的,可以进行适当调整。

24
随后填充inf和标准化,共计产出单因子425列,双因子4756列。
单双因子相关系数最高的十维如下所示。
这里需要注意的一点是,下表列出的仅为相关系数较高的列,并不是模型中的重要特征列。

1.4 模型与参数选择
25
在初赛及复赛阶段,在testA公布前,采用的是Train五折交叉验证。在testA公布后,采用的是Train训练的模型结果预测testA。评价指标选用的是mse和R方。
选用这样的模型评价方式主要是为了客观考察模型在新数据集的泛化能力。

26
在初赛阶段,标准化尝试过全体标准化、组内标准化、将训练集测试集分开和和合并标准化等。最后选用的方案是基于当前的特征构建结果,最后标准化。
降维尝试过PCA、SelectKBest等,一直效果不佳,复赛后因提交机会有限,就不再尝试降维。
模型尝试过SVR、Lasso、XGBoost等,最后根据模型效果,主要选用Lasso、XGBoost和GBDT。

27
复赛阶段基于多版本数据和多模型的比较,选择最优的数据和模型。
数据包括单双因子带err、纯单因子、跨工序单双因子无err等,模型包括Lasso和XGBoost。最后根据数据和模型结果,选用的是单双因子带err,XGBoost。

28
最终数据及XGBoost模型参数如下。
利用train数据训练testA的结果,mse为0.02013,R方为0.63564.
将train和testA拼接,利用全部单、双因子数据,最终预测testB。

29
预测结果中的30维重要因子排序如上所示。

30
那么整套数据处理的全流程如下。我们拿到数据的时候首先要对数据进行观察,基于数据理解进行数据预处理,包括分工序、删无效字段和NA、0的补值。然后构建单双因子特征,计算特征相关性,利用相关性阈值进行特征筛选,补inf后进行Z-Score标准化。模型尝试Lasso、SVR等,最后选取Lasso、XGBoost和GBDT。根据模型评估结果选用XGBoost。最后进行参数优化并产出最终预测结果。

二、总结与讨论
31
在进行数据分析建模的过程中,我的个人经验包含以下几点:
观察数据,理解业务。在解决问题的全过程中,要保持对数据的重视,甚至可以尝试“人工”智能。
注重特征。在机器学习领域有一句名言,数据和特征决定了机器学习的上限,模型只是去逼近它。我们可以尝试基于业务逻辑和自身的问题理解,积极构造新特征。
模型选择。当特征很复杂时,可以考虑使用简单模型。当特征较为简单时,可以尝试考虑复杂模型。
最后一定要注重模型的泛化能力和可解释性。

三、 个人推荐
32
在机器学习领域,经常有一些小伙伴自称自己是“炼丹师”,模型调参和改bug就像炼丹一样,靠的是经验和运气。那么对于经验,可以从书籍、课程中获得理论指导,论文中获取原理推导,在公开数据集、项目和竞赛中进行实践,同时通过一些博客或者技术沙龙学习他人的经验。

33
书籍推荐:李航老师的《统计学习方法》、周志华老师的《机器学习》,还有《集体智慧编程》、《机器学习实战》以及《深度学习》
论文推荐:arXiv.org
竞赛推荐:kaggle、阿里云天池大数据竞赛平台。
以上就是本次的技术分享内容,如有不足,请多多指教,谢谢Thanks(・ω・)ノ

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
3月前
|
机器学习/深度学习 算法 数据可视化
机器学习模型中特征贡献度分析:预测贡献与错误贡献
本文将探讨特征重要性与特征有效性之间的关系,并引入两个关键概念:预测贡献度和错误贡献度。
400 3
|
1月前
|
机器学习/深度学习 数据采集 数据处理
Scikit-learn Pipeline完全指南:高效构建机器学习工作流
Scikit-learn管道是构建高效、鲁棒、可复用的机器学习工作流程的利器。通过掌握管道的使用,我们可以轻松地完成从数据预处理到模型训练、评估和部署的全流程,极大地提高工作效率。
40 2
Scikit-learn Pipeline完全指南:高效构建机器学习工作流
|
23天前
|
机器学习/深度学习 人工智能 算法
人工智能浪潮下的编程实践:构建你的第一个机器学习模型
在人工智能的巨浪中,每个人都有机会成为弄潮儿。本文将带你一探究竟,从零基础开始,用最易懂的语言和步骤,教你如何构建属于自己的第一个机器学习模型。不需要复杂的数学公式,也不必担心编程难题,只需跟随我们的步伐,一起探索这个充满魔力的AI世界。
42 12
|
1月前
|
机器学习/深度学习 数据采集 算法
从零到一:构建高效机器学习模型的旅程####
在探索技术深度与广度的征途中,我深刻体会到技术创新既在于理论的飞跃,更在于实践的积累。本文将通过一个具体案例,分享我在构建高效机器学习模型过程中的实战经验,包括数据预处理、特征工程、模型选择与优化等关键环节,旨在为读者提供一个从零开始构建并优化机器学习模型的实用指南。 ####
|
1月前
|
机器学习/深度学习 数据采集
机器学习入门——使用Scikit-Learn构建分类器
机器学习入门——使用Scikit-Learn构建分类器
|
1月前
|
机器学习/深度学习 数据采集 搜索推荐
利用Python和机器学习构建电影推荐系统
利用Python和机器学习构建电影推荐系统
87 1
|
1月前
|
机器学习/深度学习 数据采集 Python
从零到一:手把手教你完成机器学习项目,从数据预处理到模型部署全攻略
【10月更文挑战第25天】本文通过一个预测房价的案例,详细介绍了从数据预处理到模型部署的完整机器学习项目流程。涵盖数据清洗、特征选择与工程、模型训练与调优、以及使用Flask进行模型部署的步骤,帮助读者掌握机器学习的最佳实践。
126 1
|
2月前
|
机器学习/深度学习 算法 数据挖掘
机器学习入门(二):如何构建机器学习模型,机器学习的三要素,欠拟合,过拟合
机器学习入门(二):如何构建机器学习模型,机器学习的三要素,欠拟合,过拟合
|
3月前
|
机器学习/深度学习 算法 数据挖掘
Python数据分析革命:Scikit-learn库,让机器学习模型训练与评估变得简单高效!
在数据驱动时代,Python 以强大的生态系统成为数据科学的首选语言,而 Scikit-learn 则因简洁的 API 和广泛的支持脱颖而出。本文将指导你使用 Scikit-learn 进行机器学习模型的训练与评估。首先通过 `pip install scikit-learn` 安装库,然后利用内置数据集进行数据准备,选择合适的模型(如逻辑回归),并通过交叉验证评估其性能。最终,使用模型对新数据进行预测,简化整个流程。无论你是新手还是专家,Scikit-learn 都能助你一臂之力。
160 8
|
2月前
|
机器学习/深度学习 算法 数据可视化
【机器学习】决策树------迅速了解其基本思想,Sklearn的决策树API及构建决策树的步骤!!!
【机器学习】决策树------迅速了解其基本思想,Sklearn的决策树API及构建决策树的步骤!!!

热门文章

最新文章