R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。
R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。
要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。让我们一起动起来吧,开始R的极客理想。
关于作者:
- 张丹(Conan), 程序员/Quant: Java,R,Nodejs
- blog: http://blog.fens.me
- email: bsspirit@gmail.com
转载请注明出处:
http://blog.fens.me/r-discretization
前言
在做数据挖掘模型的时候,我们有时会需要把连续型变量转型离散变量,这种转换的过程就是数据离散化,分箱就是离散化常用的一种方法。
数据离散化处理属于数据预处理的一个过程,R语言在数据处理上有天然的优势,也有直接用于离散化计算的包,无监督的离散化可以用infotheo包,有监督的离散化可以用discretization包来处理复杂的离散化操作。
目录
- 数据离散化的需求
- 无监督的数据离散化
- 有监督的数据离散化
1. 数据离散化的需求
数据离散化,教课书上面的定义是,把无限空间中有限的个体映射到有限的空间中。数据离散化操作,大多是针对连续型变量进行的,处理之后数据从连续型变量转变为离散型变量。
离散化处理的特点:
- 快速迭代,离散化的过程,离散特征增加和减少都很容易,易于扩展。
- 高效计算,稀疏向量内积乘法运算速度快,计算结果方便存储。
- 适应性,有些分类模型适合用离散化数据做为数据指标,比如决策树虽然支持输入连续型变量,但决策树模型本身会先将连续型变量转化为离散型变量,做逻辑回归时,也通常会先把连续型特征变量离散化,变成0或1。
- 鲁棒性,数据离散化会让特征变化不是特别明显,特别是对于降低异常数据干扰。
- 稳定性,牺牲了数据的微小变化,但保证了模型的稳定性。
- 过拟合,减少的数据信息,降低了过拟合的风险。
- 业务性,业务上已经定义出了离散值的含义,需要做离散化处理。
离散化处理通常对连续型变量进行处理,但同时也可以对离散型变量再进行离散化,适用于数据聚合或重新分组。
2. 无监督的数据离散化
我们可以无监督的数据离散化方法,进行数据的分箱操作,包括等宽分箱法、等频分箱法、通过kmeans分箱法等。
- 等宽分箱法,将观察点均匀划分成n等份,每份的间距相等。
- 等频分箱法,将观察点均匀分成n等份,每份的观察点数相同。
- kmeans分箱法,先给定中心数,将观察点利用欧式距离计算与中心点的距离进行归类,再重新计算中心点,直到中心点不再发生变化,以归类的结果做为分箱的结果。
接下来,我们用R语言来实现上面提到的几种分箱的操作。
2.1 准备数据
本文所使用的系统环境
- Win10 64bit
- R: 3.2.3 x86_64-w64-mingw32/x64 b4bit
首先,生成一组数