②数据预处理之数据清理,数据集成,数据规约,数据变化和离散化

简介: 数据预处理之数据清理,数据集成,数据规约,数据变化和离散化

数据规约

是指在保证原始数据信息不丢失的前提下,减少分析使用的数据量,数据规约中最常使用的方式是维规约。

维规约的含义是从将原先高维的数据合理的压缩成低维数据,从而减少数据量,常用的方法为特征的提取, LDA 和 PCA 降维。特征的提取为从海量数据中选择与挖掘目标相关的属性成一个子表,不包含无关的属性,比如关于泰坦尼克号生产数据的数据挖掘中,船客 Name 与幸存率是无关的,就可以不放入子表中。


PCA 是基于方差的聚类降维, LDA 是基于有监督的降维,都可以对高维数据进行降维。假定某公司进行一次知识发现的任务,选取的数据集为数据仓库中的全部数据(数据量基本在数 T 以上),固然这样可以获得的数据是最完整的,但由于数据仓库中的数据是非常大的,在如此大的数据集上进行复杂且存在迭代计算的数据分析,所要花费的时间是很长的,分析一个结果可能需要一个月的时间,时间不满足用户的需求,使得这种全量数据的分析是不可行。


数据归约技术采用维规约和数据量规约等方式,可以对数据仓库中的海量数据进行提取,获得较小数据集,仍可大致保留原数据的完整性。这样,完成一个效率和效果的兼顾,在允许的时间内完成数据挖掘任务。

image.png




数据的变换

是将原始的特征数据进行归一化和标准化的操作。


归一化是将原始数值变为(0,1)之间的小数,变换函数可采用最小最大规范化等方法。


标准化是将数据按比例缩放,使之落入一个小的特定区间,常用的函数为是 z-score 标准化,处理后的均值为 0,标准差为 1,一般标准化要求原始数据近似符合高斯分布。


归一化的原因在于不同变量往往量纲不同,归一化可以消除量纲对最终结果的影响,使不同变量具有可比性。数据挖掘过程中,数值较大的特征,会被算法当成权重较大,但实际情况是数值较大,并不一定代表该特征更重要,归一化和标准化后的数据可以避免这个问题的出现。


数据离散化可通过聚类,直方图,分箱等方式完成数据的离散化。


下面介绍一下具体的实现方法以及原理

1、Min-Max 规范化 [0,1]规划

Min-max 规范化方法:将原始数据变换到[0,1]的空间中。让原始数据投射到指定的空间


[min, max],用公式表示就是:新数值 =(原数值 - 极小值)/(极大值 - 极小值)。


定义:也称为离差标准化,是对原始数据的线性变换,使得结果映射到0-1之间。

本质:把数变为【0,1】之间的小数。

转换函数:(X-Min)/(Max-Min)

如果想要将数据映射到-1,1,则将公式换成:(X-Mean)/(Max-Min)

from sklearn import preprocessing
import numpy as np
# 初始化数据,每一行表示一个样本,每一列表示一个特征
x = np.array([
    [0.,-3.,1.],
     [3.,1.,2.],
     [0.,1.,-1.]
     ])
# 将数据进行 [0, 1] 规范化
min_max_scaler = preprocessing.MinMaxScaler()
min_max_x = min_max_scaler.fit_transform(x)
print(min_max_x)

2、Z-Score 规范化

Z-Score 的方法:新数值 = (原数值 - 均值)/ 标准差。


定义:这种方法给与原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1.

本质:把有量纲表达式变成无量纲表达式。

转换函数:(X-Mean)/(Standard deviation)

假设 小明 所在的班级平均分为 80,标准差为 10。小华 所在的班级平均分为 120,标准差为 100。那么 小明 的新数值 =(80-80)/10=0,小华 的新数值 =(80-120)/100=-0.4。那么在 Z-Score 标准下,如果小明和小华的成绩都是80,小明 的成绩会比 小华 的成绩好。


因此,我们能看到 Z-Score 的优点是算法简单,不受数据量级影响,结果易于比较。不足在于,它需要数据整体的平均值和方差,而且结果没有实际意义,仅是用于比较!!!



注意是每一个算法都需要使用归一化,标准化吗?


答案不是的,如果考虑的是距离还不是相似度函数那么就需要,反之则需要;例如:随机森林,它从不比较一个特征与另一个特征,不许要规范化。


归一化后加快了梯度下降求最优解的速度。


归一化有可能提高精度(归一化是让不同维度之间的特征在数值上有一定的比较性)。


两种归一化方法的使用场景:

(1)在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,第二种方法(Z-score standardization)表现更好。


第一种方法(线性变换后),其协方差产生了倍数值的缩放,因此这种方式无法消除量纲对方差、协方差的影响,对PCA分析影响巨大;同时,由于量纲的存在,使用不同的量纲、距离的计算结果会不同。


(2)在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用第一种方法或其他归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在(0 ,255)的范围。


第二种归一化方式中,新的数据由于对方差进行了归一化,这时候每个维度的量纲其实已经等价了,每个维度都服从均值为0、方差1的正态分布,在计算距离的时候,每个维度都是去量纲化的,避免了不同量纲的选取对距离计算产生的巨大影响。


通常情况下,如果使用下面的库


from sklearn.preprocessing import MinMaxScaler,MaxAbsScaler,StandardScaler
#最大最小[0,1]
#[-1,1]
#去均值化

注意:归一化适用于相似函数,标准化适用于距离度量情况


正则化

正则化主要用于避免过拟合的产生和减少网络误差。


常见的有正则项有 L1 正则 和 L2 正则 以及 Dropout ,其中 L2 正则 的控制过拟合的效果比 L1 正则 的好。


image.png


image.png



L1正则化可以产生稀疏解,即会使得很多参数的最优值变为0,以此得到的参数就是一个稀疏矩阵或者向量了。可以用于特征选择。

L2正则化可以产生值很小的参数,即会使得很多参数的最优值很小。可以防止模型过拟合。

简单来说L1适合用于特征选取,降低模型的复杂度;L2可以解决模型的过拟合。那么也就是说你可以这样去理解,L1适用于特征较多的情况下


特征选择: 它会让模型参数向量里的元素为0的点尽量多。 因此可以排除掉那些对预测值没有什么影响的特征,从而简化问题。所以 L1 范数解决过拟合措施实际上是减少特征数量。

可解释性: 模型参数向量稀疏化后,只会留下那些对预测值有重要影响的特征。 这样我们就容易解释模型的因果关系。 比如针对某个癌症的筛查,如果有100个特征,那么我们无从解释到底哪些特征对阳性成关键作用。 稀疏化后,只留下几个关键特征,就更容易看到因果关系


最后给大家分享一张,机器学习必看到的一张图


image.png

image.png

相关文章
|
2月前
|
监控 流计算
【极数系列】Flink集成DataSource读取文件数据(08)
【极数系列】Flink集成DataSource读取文件数据(08)
|
2月前
|
流计算
【极数系列】Flink集成DataSource读取集合数据(07)
【极数系列】Flink集成DataSource读取集合数据(07)
|
2月前
|
消息中间件 Kafka Apache
Flink 提供了与 Kafka 集成的官方 Connector,使得 Flink 能够消费 Kafka 数据
【2月更文挑战第6天】Flink 提供了与 Kafka 集成的官方 Connector,使得 Flink 能够消费 Kafka 数据
72 2
|
8天前
|
机器学习/深度学习
R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据
R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据
12 0
|
1月前
|
Java 数据库连接 数据库
Spring Boot整合MyBatis Plus集成多数据源轻松实现数据读写分离
Spring Boot整合MyBatis Plus集成多数据源轻松实现数据读写分离
26 2
|
1月前
|
DataWorks NoSQL MongoDB
DataWorks常见问题之如何集成离线数据
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
47 1
|
1月前
|
分布式计算 DataWorks Java
DataWorks常见问题之数据集成导出分区表的全量数据如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
38 0
|
2月前
|
消息中间件 监控 安全
【天衍系列 05】Flink集成KafkaSink组件:实现流式数据的可靠传输 & 高效协同
【天衍系列 05】Flink集成KafkaSink组件:实现流式数据的可靠传输 & 高效协同
|
2月前
|
消息中间件 监控 Kafka
【极数系列】Flink集成KafkaSink & 实时输出数据(11)
【极数系列】Flink集成KafkaSink & 实时输出数据(11)
|
2月前
|
消息中间件 安全 Kafka
【极数系列】Flink集成KafkaSource & 实时消费数据(10)
【极数系列】Flink集成KafkaSource & 实时消费数据(10)