本文主要解释了什么是离散化,什么情况下我们需要离散化,以及离散化的优点
一、什么是数据离散化
百度百科:
离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。
通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:
原数据:1,999,100000,15;处理后:1,3,4,2;
原数据:{100,200},{20,50000},{1,400};
处理后:{3,4},{2,6},{1,5};
那么数据离散化呢?
百度百科:
有些数据本身很大, 自身无法作为数组的下标保存对应的属性。如果这时只是需要这堆数据的相对属性, 那么可以对其进行离散化处理。当数据只与它们之间的相对大小有关,而与具体是多少无关时,可以进行离散化。
例如:
91054与52143的逆序对个数相同。
设有4个数:
1234567、123456789、12345678、123456
排序:123456<1234567<12345678<123456789
=>1<2<3<4
那么这4个数可以表示成:2、4、3、1
总结:
我觉得数据离散化可以理解,将一系列的有着相同特征的不同区间的连续数据按照着不同的判别标准或者方法来进行合并取特征的操作。
二、为什么要进行离散化
1、算法需要
比如决策树、朴素贝叶斯等算法,都是基于离散型的数据展开的。如果要使用该类算法,必须将离散型的数据进行。有效的离散化能减小算法的时间和空间开销,提高系统对样本的分类聚类能力和抗噪声能力。
2、离散化的特征相对于连续型特征更易理解,更接近知识层面的表达
比如:20岁和40岁和80岁,我们是能看出这三个数之间存在着大小关系,可是如果我们把这三个转化为“青年”,“中年”,“老年”,是不是三者理解起来就更加的容易?
3、可以有效的克服数据中隐藏的缺陷,使模型结果更加稳定
比如:20岁和40岁和80岁,我们是能看出这三个数之间存在着大小关系,可是如果这其中掺入了一个异常值150岁,如果不进行离散化,进行数据各种计算时,对结果的影响较大。那我们把60岁及以上的数据均处理为老年,对结果的影响就会很小。
总结:
进行离散化的原因主要有三个:算法需要,理解简单,模型稳定。
三、离散化的优势
-
离散特征的增加和减少都很容易,易于模型的快速迭代;
-
稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
-
离散化后的特征对异常数据有很强的鲁棒性(容错性)
-
逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;
-
离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;
-
特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问;
-
特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。
四、总结:
数据离散化就是将连续数据变成各种特征值代替的离散数据。
选择数据离散化的原因主要有三个:算法需要、理解简单、模型稳定。
离散化的优势提高数据运算和迭代的速度,提高数据模型的稳定性、鲁棒性、表达力以及降低过拟合的风险。
4、参考文档:
http://www.sohu.com/a/275801075_468740