连续特征离散化方法介绍
1. 离散化技术分类
连续属性的离散化方法也可以被称为分箱法,即将一组连续的值根据一定的规则分别放到其术语的集合中。
离散化技术可以根据如何对数据进行离散化加以分类,可以根据是否使用类信息或根据进行方向(即自顶向下或自底向上)分类。
如果离散化过程使用类信息,则称它为监督离散化(superviseddiscretization);否则是非监督的(unsupervised)。
如果首先找出一点或几个点(称作分裂点或割点)来划分整个属性区间,然后在结果区间上递归地重复这一过程,则称它为自顶向下离散化或分裂。自底向上离散化或合并正好相反,首先将所有的连续值看作可能的分裂点,通过合并相邻域的值形成区间,然后递归地应用这一过程于结果区间。
2.无监督离散化与监督离散化
根据数据是否包含类别信息可以把它们分成有监督的数据和无监督的数据。有监督的离散化要考虑类别信息而无监督的离散化则不需要。
2.1 无监督离散化
假设属性的取值空间为X={X1,X2,⋯,Xn},离散化之后的类标号是Y={Y1,Y2,⋯,Ym},则无监督离散化的情况就是X已知而Y未知。以下介绍几种常用的无监督离散化方法:
(1) 等宽算法
根据用户指定的区间数目K,将属性的值域[Xmin−Xmax]划分成K个区间,并使每个区间的宽度相等,即都等于Xmax−XminK。缺点是容易受离群点的影响而使性能不佳。
(2) 等频算法
等频算法也是根据用户自定义的区间数目,将属性的值域划分成K个小区间。他要求落在每个区间的对象数目相等。譬如,属性的取值区间内共有M个点,则等频区间所划分的K个小区域内,每个区域含有MK个点。
(3) K-means聚类算法
首先由用户指定离散化产生的区间数目K,K-均值算法首先从数据集中随机找出K个数据作为K个初始区间的重心;然后,根据这些重心的欧式距离,对所有的对象聚类:如果数据x距重心Gi最近,则将x划归Gi所代表的那个区间;然后重新计算各区间的重心,并利用新的重心重新聚类所有样本。逐步循环,直到所有区间的重心不再随算法循环而改变为止。
2.2 监督离散化
监督离散化就是事先X和Y均为已知,然后找到某个函数,利用X值对Y值做预测。可以建立回归或者分类模型。
以下介绍的自下而上或者自上而下的分类方法都属于监督离散化方法。
3. 齐次性的卡方检验
在介绍两种基于卡方检验的离散化算法之前,先来介绍一下齐次性的卡方检验。
数据:有r个总体。
从每个总体中抽取一个随机变量,记第i个样本含有的观测数是ni,1⩽i⩽r。
每个样本的每个观测值可以归为c个不同类别中的一类。记Oij为样本i的观测值归入类j的个数,所以,
ni=Oi1+Oi2+⋯+Oic
对于所有的样本i,将数据排列成以下的r∗c列连表:
类1 | 类2 | ⋯ | 类c | 总和 | |
---|---|---|---|---|---|
总体1 | O11 | O12 | ⋯ | O1c | n1 |
总体2 | O21 | O22 | ⋯ | O21 | n2 |
⋯ | ⋯ | ⋯ | ⋯ | ⋯ | ⋯ |
总体r | Or1 | Or2 | ⋯ | Orc | nr |
总和 | C1 | C2 | ⋯ | Cc | N |
假设:
记pij为随机取到第i个总体划分为第j类的概率,i∈[1,r],j∈[i,c]。
H0:同一列中所有的概率相等(即对任意的j,p1j=p2j=⋯=prj)。
H1:每列中至少存在两个概率不相等(即给定j,存在i和k,使得pij≠pkj)。
检验统计量χ2为:
χ2=∑i,j(Oij−tij)2tij,其中,tij=niCjN
或者:
χ2=N∗(∑i,jO2ijniCj−1)
零分布:
χ2的零分布是渐进自由度为(r−1)(c−1)的卡方分布。在近似水平α下的临界域对应于χ2值大于X1−α,X1−α是自由度为(r−1)(c−1)的卡方分布的1−α分位数,当χ2值大于X1−α时拒绝原假设H0,否则,接受H0。
p值是自由度为(r−1)(c−1)的卡方分布随机变量大于χ2的概率,即:p=PH0{χ2>t}。当p值小于α,拒绝H0,否则接受H0。
例:
吸烟 | 不吸烟 | 总计 | |
男 | 20 | 5 | 25 |
女 | 10 | 15 | 25 |
总计 | 30 | 20 | 50 |
首先假设H0:性别和吸烟相关。
根据公式求得χ2=8.33,自由度为1,查表可得p值小于0.005,所以拒绝原假设。
4. 自上而下的卡方分裂算法
该分裂算法是把整个属性的取值区间当做一个离散的属性值,然后对该区间进行划分,一般是一分为二,即把一个区间分为两个相邻的区间,每个区间对应一个离散的属性值,该划分可以一直进行下去,直到满足某种停止条件,其关键是划分点的选取。
分裂步骤:
依次计算每个插入点的卡方值,当卡方值达到最大时,将该点作为分裂点,属性值域被分为两块。
然后再计算卡方值,找到最大值将属性值域分成三块。
停止准则:
当卡方检验显著,即p值<α时,继续分裂区间;
当卡方检验不显著,即p值⩾α时,停止分裂区间;
5. ChiMerge算法
ChiMerge算法是一种基于卡方值的自下而上的离散化方法。和上一种算法正好相反。
分裂步骤:
第一步:根据要离散的属性对实例进行排序:每个实例属于一个区间
第二步:合并区间,计算每一对相邻区间的卡方值
停止准则:
当卡方检验不显著,即p值⩾α时,继续合并相邻区间;
当卡方检验显著,即p值<α时,停止区间合并;
6. 基于熵的离散化方法
本方法也是一种自上而下的离散化方法。首先,定义一下熵的概念:
ei=−∑kj=1pijlog2pij
其中,pij=mijmi是第i个区间中类j的概率。该划分的总熵e是每个区间的熵的加权平均:
e=∑ni=1wiei
其中wi=mim是第i个区间的值的比例,n是区间个数。
划分过程:
首先将属性的取值值域按照值得大小排序。 把每个值看作是可能的分割点,依次把区间分成两部分计算它们的熵值,取熵值最小的作为第一次划分点。
然后选取一个区间,通常选择熵值最大的区间重复此过程。
当区间个数达到用户指定的个数或某个用户指定的终止条件则停止继续分裂。
参考资料
《连续属性的离散化》
《数据挖掘导论》
连续特征离散化方法介绍相关推荐
- 特征挖掘(二):连续特征离散化方法
1定义: 首先from wiki给出一个标准的连续特征离散化的定义: 在统计和机器学习中,离散化是指将连续属性,特征或变量转换或划分为离散或标称属性/特征/变量/间隔的过程.这在创建概率质量函数时非常 ...
- 连续特征离散化--汇总
说明:本文内容来自网络,此处仅是简单汇总 内容一 来源:https://www.cnblogs.com/-Sai-/p/6707327.html 在工业界,很少直接将连续值作为逻辑回归模型的特征输入, ...
- 【机器学习】对于特征离散化,特征交叉,连续特征离散化非常经典的解释
一.互联网广告特征工程 博文<互联网广告综述之点击率系统>论述了互联网广告的点击率系统,可以看到,其中的logistic regression模型是比较简单而且实用的,其训练方法虽然有多种 ...
- 对于特征离散化,特征交叉,连续特征离散化非常经典的解释
一.互联网广告特征工程 博文<互联网广告综述之点击率系统>论述了互联网广告的点击率系统,可以看到,其中的logistic regression模型是比较简单而且实用的,其训练方法虽然有多种 ...
- 连续控制器离散化方法
目录 连续控制器离散化方法 z变化法 差分变化法 后向差分变换法 前向差分变换法 双线性变换法 零极点匹配法 绘图比较 连续控制器离散化方法 z变化法 这种方法是对连续对象直接z变换,只能保证前后系统 ...
- 通过分箱对连续特征离散化,以提高线性模型的表现
首先在wave数据集上对比线性回归的决策树的表现 from sklearn.linear_model import LinearRegression from sklearn.tree import ...
- 连续特征如何离散化,为什么要离散化,常用于逻辑回归模型
转自:连续特征离散化达到更好的效果,特征选择的工程方法 连续特征的离散化:在什么情况下将连续的特征离散化之后可以获得更好的效果? Q:CTR预估,发现CTR预估一般都是用LR,而且特征都是离散的.为什 ...
- 特征工程——连续特征与离散特征处理方法
特征的标准化(归一化) 连续特征 z-score标准化:这是最常见的特征预处理方式,基本所有的线性模型在拟合的时候都会做 z-score标准化.具体的方法是求出样本特征x的均值mean和标准差st ...
- 连续系统离散化的方法
http://www.docin.com/DocinViewer-1404447028-144.swf 5.2.1 连续系统离散化方法 1.反向差分变换法 对于给定的 ...
最新文章
- 全局变量在主函数调用过程中被中断修改的问题
- POJ 3420 Quad Tiling
- 《C++语言基础》程序阅读——和对象找感觉
- jdbc版本怎么看_Jmeter(十三)-JDBC脚本开发
- 初学swift笔记 枚举(七)
- 如何把自己的网站部署在网上_Terminal:如何在IPFS上部署Wordpress网站
- python学习笔记--随时更新
- pytorch 音频分类_Pytorch中音频的神经风格转换
- STM32F1笔记(二)GPIO输入
- Spring高级之注解@Import注解、ImportSelector、ImportBeanDefinitionRegistrar详解(超详细)
- java对世界各个时区(TimeZone)的通用转换处理方法
- 第一章 Spring的简单剖析
- 一阅阅读-ios上的免费换源小说阅读器
- 打开eclipse翻译错误值13 的解决办法
- 北京邮电大学计算机学院2020复试,预览北京邮电大学计算机学院2020研究生复试流程...
- 射频工程师——中兴笔试题
- JavaSE-接口简单介绍
- 关于group by的用法
- mysql表中字段数据类型_mysql数据表中字段的数据类型有哪些?
- N型电池将成为下一代主流方向
热门文章
- Spring Boot 配置加载顺序详解
- 构造函数不可以声明为虚函数,析构函数可以声明为虚函数
- 实战:Nginx + FastCGI 程序(C/C++) 搭建高性能web server
- 框架:SpringBoot构建Restful service完成Get和Post请求
- 27.能否在构造函数中抛出异常?析构函数呢?
- 3.程序的局部性原理
- 青少年蓝桥杯_2020_steam考试_初级组_第一题
- Java 用float时,数字后面加f,这样是为什么?
- html表格选择一行,vue + element table表格如何默认选中第一行
- python add argument list_python模块介绍- argparse:命令行选项及参数解析