数据预处理和特征选择
背景介绍
结合网上一些相关资料,我们整理输出了这篇文章,本文说明了数据的重要性以及数据在各个环节和领域地位。更重要的是,这篇文章会详尽的讲解数据预处理和特征选择的原理及方法细节。
数据是什么?
通过观察、实验或计算得出的结果。例:数字、文字、图像、声音等。
数据分析是什么?
把隐藏在数据背后的信息集中和提炼出来
总结出所研究对象的内在规律,帮助管理者进行有效的判断和决策
数据在数据分析中的重要性
数据分析即数据+分析,也就是说数据为先,分析为后。数据是分析的基础,因此数据的质量、数据的相关度、数据的维度等会影响数据分析的结果。
数据分析流程图
![](https://static001.geekbang.org/infoq/0c/0cccad40fbe23747c2ac1aac279c31a2.png)
数据预处理
什么是数据预处理?
在特征工程和日志前,检测和去除数据集中的噪声数据和无关数据,处理漏洞数据,去除空白数据。
为什么要做数据预处理?
举例:
缺失值;职业=""
误差或异常点;工资="-10"
包含矛盾;年龄=42,"03/17/1997"
数据预处理的意义?
提高数据的质量,从而有助于提高后续学习过程的精度和性能
数据预处理的重要性
数据预处理很重要,下图告诉你,到底多重要?
数据的特征决定了机器学习的上限,而模型和算法的应用只是让我们逼近这个上限
![](https://static001.geekbang.org/infoq/3c/3c7fa10e3b1ae2c8d4bf0c55605a4791.png)
特征处理的思维导图
![](https://static001.geekbang.org/infoq/a3/a33c359e49b1f2eb9c8ce948d407141e.png)
数据清洗
什么是数据清洗?
删除原始数据集中的无关数据,重复数据,筛选掉与挖掘主题无关的数据,处理缺失值,异常值。
造成数据缺失的原因
信息暂时无法获取;信息被遗漏;有些对象的某个或某些属性是不可用的,等等。
缺失的类型
完全随机缺失;随机缺失,非随机缺失
处理缺失值的必要性
挽回丢失的信息;确定性更加显著;得到可靠的输出
常见的数据清理的方式
缺失值处理
删除元组
均值/中数值/众数插补
使用固定值
最近邻插补
回归方法
插值法
异常值处理
删除含有异常值的记录
视为缺失值
平均值修正
不处理
偏态分布
更加全面的了解数据分布,使用 mode、median、mean 三个指标来综合描述数据的分布。对于明显左偏或者右偏的数据来说,使用中位数去描述数据情况比平均数更合理,因为平均数会受极值的影响。
左偏说明长尾在左边,左边有较多的极端数据
许多算法要求样本服从正态分布
![](https://static001.geekbang.org/infoq/5e/5e4c939bc8487901ec5a0f02ab765b73.png)
正态分布
正态分布
多数频数集中在中央位置,两端的频数分布大概对称
为什么将偏态数据转换为正态分布数据?
很多模型假设数据服从正态分布
为什么正态分布在自然界中常见?
多个因素独立同分布并且可以叠加,那么叠加的结果就会接近正态分布,这就是中心极限定理
中心极限定理
样本的平均值约等于总体的平均值
![](https://static001.geekbang.org/infoq/10/101c26e412c1b3f748df2fd6b4cb061b.png)
缺失值处理
①删除元组
![](https://static001.geekbang.org/infoq/64/648dafc89eee6dc90f31aca3fb245d50.png)
②均值/中数值/众数插补
空值是数值型或者空值的非数值型的;用均值补齐的问题;
降低了变异性;
弱化了协方差和相关性估计
![](https://static001.geekbang.org/infoq/48/482b5f5167ac55ba9373e3f0ae959f3e.png)
③回归方法
用模型的方法插补缺失值;
用回归模型补齐的问题:过高估计模型的拟合和相关性估计;
弱化了方差;
![](https://static001.geekbang.org/infoq/48/48eb8976ddce2a34ae47cb4682c15d91.png)
异常点检测
3α法则;散点图或箱型图;
![](https://static001.geekbang.org/infoq/1b/1b8bf121889a9b5ada12bcdb7a1576ab.png)
箱线图与四分位数
四分位数
把所有数值由小到大排列并分为四等份,处于三个分割点位置的得分就是四分位数。
有小到大排列后第 25%的数字成为 Q1
由小到大排列后第 50%的数字成为 Q2
由小到大 排列第 75%的数组成为 Q3
四分位距(IQR)=Q3-Q1
下限:Q1-1.5IQR
上限:Q3+1.5IQR
![](https://static001.geekbang.org/infoq/23/2308fdbcd7265247c18094413f2f5e73.png)
异常值处理
删除含有异常值的记录
明显看出是异常且数量较少
视为缺失值
利用缺失值处理的方法进行处理
平均值修正
平均值修正是一种信息损失小,简单高效的处理方法
不处理
如果算法对异常值不敏感则可以不处理,但对异常值敏感,最好不要这样。
![](https://static001.geekbang.org/infoq/b8/b8544a97258e882c3dcf79fb7ef034d5.png)
数据集成
什么是数据集成?
合并多个数据源中国的数据,存放在一个一致的数据存储中
数据集成的分类
1、实体识别
同名异义
异名同义
单位不统一
举例:一个数据库中的 customer_id 和另一个数据库中的 customer_number;pay_type 的数据编码在一个数据库中可以是“H”和“S”,而在另一个数据库中是 1 和 2。
2、冗余属性识别
如果一个属性可以由另一个或另一组属性“导出”,那么他就是冗余的
相关分析检验:
![](https://static001.geekbang.org/infoq/d8/d87b4c5a44603350e88f2fd3a3867aa6.png)
数据变换
什么是数据变换?
将数据转换或统一成适合于挖掘的形式
数据变换涉及到的内容:
光滑:去掉数据中的噪音
聚集:对数据进行汇总或聚集
数据泛化:使用概念分层,用高层概念替换底层或“原始”数据
规范化:将属性数据按比例缩放,使之落入一个小的特定区间
属性构造:可以构造新的属性并添加到属性集中,以帮助挖掘过程。
数据变换包含了哪些方法?
简单函数变换
归一化为什么做归一化?归一化的意义?归一化的实施方法?如何归一化有异常值的数据?
连续属性离散化无监督离散化监督离散化
属性构成
小波变换
数据变换—归一化/标准化
![](https://static001.geekbang.org/infoq/b8/b815ff49bd0deff8b71394979c9b53ca.png)
连续属性离散化—等宽算法、等频算法
![](https://static001.geekbang.org/infoq/a7/a7d3f820e7078bb01e6ab9cb9648096d.png)
连续属性离散化—K-means 聚类算法
![](https://static001.geekbang.org/infoq/c9/c9f1ad45ee1c0b16f9807c40220b332b.png)
连续属性离散化—ChiMerge 算法
监督离散化
ChiMerge 是一种基于 x²的离散化方法,使用自底而上的策略,递归地找出最佳临近区间,然后合并它们,形成较大的区间。
过程:
将数值属性 A 点每个不同值看作一个区间,对每个相邻区间进行 x²检验。
具有最小 x²值的相邻区间合并在一起,因为低 x²值表面它们具有相似的分布
![](https://static001.geekbang.org/infoq/50/50889d3ab3a3a2118cde1cf1da412fcc.png)
数据规约
什么是数据规约?
产生更小但保持原数据完整性的新数据集
数据变换的意义?
提高建模的准确性;缩短数据挖掘所的世界;降低存储数据的成本
数据规约的分类
属性规约
合并属性
逐步向前选择
逐步向后删除
决策树归纳
主成分分析
![](https://static001.geekbang.org/infoq/64/641000ae3bc2e587dda56824fb165e50.png)
数据规约—维度规约
![](https://static001.geekbang.org/infoq/e6/e68632f24c5c983c76b53f5aab3b303d.png)
LDA—线性判别分析
LDA
LDA 是一种监督学习的降维技术,也是说它的数据集的每个样本是类别输出的。这点和 PCA 不同,PCA 是不考虑样本类别输出的无监督降维技术。
思想:投影后类内方差最小,类间方差最大
![](https://static001.geekbang.org/infoq/09/09a3b18ce3b63053d4ea7c7932765e60.png)
![](https://static001.geekbang.org/infoq/49/49e110d4e311cbbbcfb848e37e9424ad.png)
数据规约—数值规约
有参数——假设数据适合于一些模型,估计模型参数,且仅储存参数,并放弃储存数据
1.回归模型
y=wx+b
x 和 y 是数值数据库属性,系数 w 和 b 分别为直线的斜率和 Y 轴截距。系数通过最小二乘法求得,它最小化分离数据的实际直线与直线之间的误差。
![](https://static001.geekbang.org/infoq/06/066bd43b08be76d1a6618d4b4c73ae39.png)
2.对数线性模型
对数线性模型可以近似看作离散的多维概率分布。用三维对数线性模型举例:
![](https://static001.geekbang.org/infoq/23/2364d595defa3f58c89a98a04dba9190.png)
无参数——直方图、聚类、抽样
![](https://static001.geekbang.org/infoq/99/99b9bf35229fe7019871b46033210610.png)
特征选择
![](https://static001.geekbang.org/infoq/2f/2f2d300df6c4ac83f2b479b996c77fd7.png)
特征工程的概述
为什么做特征选择?
减轻维度灾难问题
降低学习任务难度
特征选择的三个目标
提高模型的预测表现
提高更快且更高效的模型
提供生成数据中潜在过程的最佳的理解
做特征选择的原则?
特征是否发散
特征与目标的相关性
![](https://static001.geekbang.org/infoq/31/318946c452aff604b3315d9816fb40a0.png)
特征的分类
相关特性:是指与当前学习任务有关的特征;
无关特性:是指与当前学习任务无关的特征(该特征所提供的信息对于当前学习任务无用);例:对于学生成绩而言,学号就是无关特征。
冗余特征:是指该特征所包含的信息能从其他特征推演过来;例:对于“面积”这个特征而言,能从“长”和“宽”得出,则它是冗余特征
![](https://static001.geekbang.org/infoq/4c/4ca7544e4beb197e5c41582f24f166e5.png)
特征选择 vs.特征提前
**共同点:**两者都是降维的方法,目的相同。
不同点:
特征提取是通过属性间的关系,如组合不同的属性得到新的属性,这样就改变了原来的特征空间
特征选择是从原始特征数据集中选择出子集,是一种包含的关系,没有改变原来的特征空间
![](https://static001.geekbang.org/infoq/93/93e4b121d8cae310a6af80511050d2ac.png)
特征选择—Filter
Filter Methods
什么是过滤法?
按照发散性或者相关性对各个特征进行评分,设定阈值或者带选择阈值的个数,选择特征
![](https://static001.geekbang.org/infoq/3f/3fa7c18504808474badd37beea5ea486.png)
1.方差选择法
使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。
当特征值都是离散型变量的时候这种方法才能用,如果是连续型变量,就需要将连续型变量离散化之后才能用
2.相关系数选择法
根据相关系数的大小判定两个变量之间的相关性的强弱,进而选择相关的特征。一般常用的是皮尔逊相关系数
![](https://static001.geekbang.org/infoq/46/462ed022da7ba63bd80f75c4fc94a27e.png)
3.卡尔检验
统计样本的实际观测值与理论推断值之间的偏移程度,这个偏离程度决定了卡方值的大小
![](https://static001.geekbang.org/infoq/e8/e8957b369dcfe1d0012b15006b5f20a8.png)
4.互信息法
互信息,表示两个变量是否有关系,以及关系的强弱
![](https://static001.geekbang.org/infoq/5b/5bd917f5b6e68ff746bbc7f7890019fa.png)
残差和决定系数
![](https://static001.geekbang.org/infoq/20/207ffd0124b004c4b01cf987b84ce645.png)
特征选择—Wrapper—逐步向前选择
Wrapper Methods
什么是包装法?
包装法实际是一种搜索方式,将当前的特征组合作为带搜索的集合,从集合中找出最优的特征组合然后返回结果。
逐步向前选择:
变量被逐步地合并进越来越大的子集中
步骤
从一个空模型开始
拟合 5 个简单的线性回归模型,搜索出所有单个变量模型中最好的那一个
搜遍剩下的 4 个变量,找出哪个变量加入到现有模型中可以最大的改善残差平方和
![](https://static001.geekbang.org/infoq/f3/f3a45146b589ada5ea2c7f29ddc04f26.png)
特征选择—Wrapper—逐步向后剔除
逐步向后剔除:
所有变量的集合一起开始,逐步地剔除直到获得最优的一个
步骤:
开始时模型包含了所有的变量
移除 p-value 最大的变量
新的(p-1)个变量模型是 t,最大的 p-value 的变量被移除
重复上面的步骤直到停止条件被达到
![](https://static001.geekbang.org/infoq/bf/bf5db92ab973ef80ab7c190e8d44e687.png)
特性选择——Embedded
Embedded Methods
什么是嵌入法?
先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据叙述从大到小选择特征。
嵌入****发与正则化
![](https://static001.geekbang.org/infoq/f9/f93a465a23129343374a83561e7c340b.png)
当样本特征很多,而样本数相对较少时,上式很容易陷入过拟合。为了缓解过拟合问题,可对上式引入正则化项:
L1 正则化
![](https://static001.geekbang.org/infoq/a9/a98a07e2243542704f944528e8a68cb5.png)
L1 正则化是指权值向量中各个元素的绝对值之和
L2 正则化
![](https://static001.geekbang.org/infoq/a4/a483389830a7fd96385768c3b8235e0f.png)
L2 正则化是指权值向量中各个元素的平方和然后再求平方根
L1 正则化和 L2 正则化都有助于降低拟合风险,但前者还会带来一个额外的好处“它比后者更易获得“稀疏”解,即它求得的ω会有更少的非零分量
总结
数据清理:格式标准化,异常数据清楚,错误纠正,重复数据的清除
数据集成:将分散在不同来源的数据有机地整合在一起
数据变换:通过平滑聚集,数据概化,规范化等方法将数据转换成适用于数据挖掘的形式
数据规约:得到数据集的规约表示,它小得多,但仍然接近于保持原数据的完整性,结果与规约前结果相同或几乎相同
特征选择:提高模型的泛化能力,减少过拟合;增强对特征和特征值之间的理解。
写在最后
近年来,在 AIOps 领域快速发展的背景下,IT 工具、平台能力、解决方案、AI 场景及可用数据集的迫切需求在各行业迸发。**基于此,云智慧在 2021 年 8 月发布了 AIOps 社区,**旨在树起一面开源旗帜,为各行业客户、用户、研究者和开发者们构建活跃的用户及开发者社区,共同贡献及解决行业难题、促进该领域技术发展。
社区先后开源了数据可视化编排平台-FlyFish、运维管理平台 OMP、云服务管理平台-摩尔平台、Hours 算法等产品,并在短时间内取得了一系列社区荣誉。
可视化编排平台-FlyFish:
项目介绍:https://www.cloudwise.ai/flyFish.html
Github 地址: https://github.com/CloudWise-OpenSource/FlyFish
Gitee 地址: https://gitee.com/CloudWise/fly-fish
行业案例:https://www.bilibili.com/video/BV1z44y1n77Y/
部分大屏案例:
![](https://static001.geekbang.org/infoq/ca/ca647799b4e78649d79f7a6c83843f1f.png)
您可以添加小助手(xiaoyuerwie)加入开发者交流群,与业内大咖进行 1V1 交流!
也可通过小助手获取云智慧 AIOps 资讯,了解 FlyFish 最新进展!
![](https://static001.geekbang.org/infoq/14/1450929eb86db0b5ff30ec544d48953b.png)
(本文部分资料/信息源于网络,如有侵权,请联系小助手/私信进行处理)
参考资料:
评论