数据规约
是指在保证原始数据信息不丢失的前提下,减少分析使用的数据量,数据规约中最常使用的方式是维规约。
维规约的含义是从将原先高维的数据合理的压缩成低维数据,从而减少数据量,常用的方法为特征的提取, LDA 和 PCA 降维。特征的提取为从海量数据中选择与挖掘目标相关的属性成一个子表,不包含无关的属性,比如关于泰坦尼克号生产数据的数据挖掘中,船客 Name 与幸存率是无关的,就可以不放入子表中。
PCA 是基于方差的聚类降维, LDA 是基于有监督的降维,都可以对高维数据进行降维。假定某公司进行一次知识发现的任务,选取的数据集为数据仓库中的全部数据(数据量基本在数 T 以上),固然这样可以获得的数据是最完整的,但由于数据仓库中的数据是非常大的,在如此大的数据集上进行复杂且存在迭代计算的数据分析,所要花费的时间是很长的,分析一个结果可能需要一个月的时间,时间不满足用户的需求,使得这种全量数据的分析是不可行。
数据归约技术采用维规约和数据量规约等方式,可以对数据仓库中的海量数据进行提取,获得较小数据集,仍可大致保留原数据的完整性。这样,完成一个效率和效果的兼顾,在允许的时间内完成数据挖掘任务。
数据的变换
是将原始的特征数据进行归一化和标准化的操作。
归一化是将原始数值变为(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 正则 的好。
L1正则化可以产生稀疏解,即会使得很多参数的最优值变为0,以此得到的参数就是一个稀疏矩阵或者向量了。可以用于特征选择。
L2正则化可以产生值很小的参数,即会使得很多参数的最优值很小。可以防止模型过拟合。
简单来说L1适合用于特征选取,降低模型的复杂度;L2可以解决模型的过拟合。那么也就是说你可以这样去理解,L1适用于特征较多的情况下
特征选择: 它会让模型参数向量里的元素为0的点尽量多。 因此可以排除掉那些对预测值没有什么影响的特征,从而简化问题。所以 L1 范数解决过拟合措施实际上是减少特征数量。
可解释性: 模型参数向量稀疏化后,只会留下那些对预测值有重要影响的特征。 这样我们就容易解释模型的因果关系。 比如针对某个癌症的筛查,如果有100个特征,那么我们无从解释到底哪些特征对阳性成关键作用。 稀疏化后,只留下几个关键特征,就更容易看到因果关系
最后给大家分享一张,机器学习必看到的一张图