连续特征离散化的方法

news/2024/5/19 18:41:50 标签: 连续特征, 离散化, 卡方检验, , 分箱法

   在特征工程中,特别是logisticregression上,需要把一些连续特征进行离散化处理。离散化除了一些计算方面等等好处,还可以引入非线性特性,也可以很方便的做cross-feature。离散特征的增加和减少都很容易,易于模型的快速迭代。此外,噪声很大的环境中,离散化可以降低特征中包含的噪声,提升特征的表达能力。

   连续特征离散化最常用的方法:

(1)划分区间(分箱法

       如1-100岁可以划分为:(0-18)未成年、(18-50)中青年、(50-100)中老年.

       这其中包括等距划分、按阶段划分、特殊点划分等。

(2卡方检验(CHI)

      分裂方法,就是找到一个分裂点看,左右2个区间,在目标值上分布是否有显著差异,有显著差异就分裂,否则就忽略。这个点可以每次找差异最大的点。合并类似,先划分如果很小单元区间,按顺序合并在目标值上分布不显著的相邻区间,直到收敛。卡方值通常由χ2分布近似求得

      χ2表示观察值与理论值之问的偏离程度。计算这种偏离程度的基本思路如下:

   (1)设A代表某个类别的观察频数,E代表基于H0计算出的期望频数,A与E之差称为残差

   (2)显然,残差可以表示某一个类别观察值和理论值的偏离程度,但如果将残差简单相加以表示各类别观察频数与期望频数的差别,则有一定的不足之处。因为残差有正有负,相加后会彼此抵消,总和仍然为0,为此可以将残差平方后求和

    (3)另一方面,残差大小是一个相对的概念,相对于期望频数为10时,期望频数为20的残差非常大,但相对于期望频数为1 000时20的残差就很小了。考虑到这一点,人们又将残差平方除以期望频数再求和,以估计观察频数与期望频数的差别。

    进行上述操作之后,就得到了常用的χ2统计量,由于它最初是由英国统计学家Karl Pearson在1900年首次提出的,因此也称之为Pearson χ2,其计算公式为

 

   较大时,χ2统计量近似服从k-1(计算Ei时用到的参数个数)个自由度的卡方分布。

(3)信息增益法(IG)

这个和决策树的学习很类似。分裂方法,就是找到一个分裂点看,左右2个区间,看分裂前后信息增益变化阈值,如果差值超过阈值(正值,分列前-分裂后信息),则分裂。每次找差值最大的点做分裂点,直到收敛。合并类似,先划分如果很小单元区间,按顺序合并信息增益小于阈值的相邻区间,直到收敛。

 ,信息增益为总的减去某个分类标准对应的

条件


V(A)是属性A的值域

S是样本集合

Sv是S种在属性A上值等于v的样本集合

信息增益比率实际在信息增益的基础上,又将其除以一个值,这个值一般被称为为分裂信息量



http://www.niftyadmin.cn/n/626919.html

相关文章

芯片测试

问题描述 有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多。   每个芯片都能用来测试其他芯片。用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时,会随机给出好或…

工作反思

工作至今已满14个月,从最开始的信心满满方向明确,到现在的迷惘和怀疑,这一年的种种,怕是不仅只是平台的问题,更多的还是自己的原因。 四月底内部调岗,在新的部门待了不到五个月的时间,部门即解散…

FJ的字符串

问题描述 FJ在沙盘上写了这样一些字符串:   A1 “A”   A2 “ABA”   A3 “ABACABA”   A4 “ABACABADABACABA”   … …   你能找出其中的规律并写所有的数列AN吗? 输入格式   仅有一个数:N ≤ 26。 输出格式   请输出…

如果查询一张表的多个数据 用多线程 用哪一个类_自测 | 13家大数据面试题

阅读之前可以先看看金九银十的100道大数据面试题你都会了吗?1.*云一面(30分钟)谈谈你对HDFS的了解Hadoop2.0做了哪些改动Spark与MR的区别在哪里知道除了Spark之外的大数据处理框架嘛Spark shuffle,说说StringBuilder与StringBuffer的区别HashMap与Hashta…

机器学习中的维度灾难

本月由于身体原因,大部分时间都是在学习其他大神写的东西,转载几篇,以供分享,侵删! 一、介绍 本篇文章,我们将讨论所谓的“维度灾难”,并解释在设计一个分类器时它为何如此重要。在下面几节中我…

约瑟夫环问题(巧用数组解法)

问题描述 代码 #include<stdio.h> int main() {int n,m,i,k;int a[99]{0};scanf("%d %d",&n,&m);for(i0;i<n;i)scanf("%d",&a[i]);i-1;kn;while(n){while(m){i(i1)%k;if(a[i]-1)m;m--;}printf("%d",i1);ma[i];a[i]-1;n--…

解决真实世界问题:如何在不平衡类上使用机器学习?

如果你是机器学习课程的新手&#xff0c;那么你使用过的数据库很大程度上都是非常简单的。其中一个原因就是&#xff0c;当你构建分类器时&#xff0c;样本类都是平衡的——也就是说&#xff0c;每个类中的样本数量是大致相同的。在教学中&#xff0c;数据库通常是净化过的&…

django web app_从webpy入手理解Django

写在前面的话&#xff1a;对于初次接触web框架的程序员来说&#xff0c;理解Django可能是一个挑战。虽然Django真的已经做的非常好&#xff0c;文档结构清晰&#xff0c;教程一步步由浅入深&#xff0c;不过对于http协议&#xff0c;请求&响应&#xff0c;web服务器运行机制…