counts:计数。 记录样本集中每个样本的每个属性的在每个类中出现的加权次数

counts[data.numAttributes()][numValues + 1][numClasses + 1]

m_ChiSquareds[data.numAttributes];  //记录每个属性的叉方值

for(int i = 0; i < data.numAttributes(); i++)

m_ChiSquareds[i] = chiVal(counts[i]);

chiVal: nrows = matrix.length; //行数 ncols = matrix[0].length; //列数 rtotal = new double [nrows]; //行和 ctotal = new double [ncols]; //列和 for (row = 0; row < nrows; row++) { for (col = 0; col < ncols; col++) { rtotal[row] += matrix[row][col]; ctotal[col] += matrix[row][col]; n += matrix[row][col]; //计算每行之和、每列之和、所有和n } } df = (nrows - 1)*(ncols - 1); //自由度 if (df <= 0) { return 0; } chival = 0.0; for (row = 0; row < nrows; row++) { if (Utils.gr(rtotal[row], 0)) { for (col = 0; col < ncols; col++) { if (Utils.gr(ctotal[col], 0)) {//大于0 expect = (ctotal[col] * rtotal[row]) / n; //该cell的期望值 chival += chiCell (matrix[row][col], expect); } } } } return chival; chiCell: //freq 【in 第一个参数】 //exptcted【in 第二个参数】 // Cell in empty row and column? if (Utils.smOrEq(expected, 0)) { //expteced与0很接近 return 0; } // Compute difference between observed and expected value double diff = Math.abs(freq - expected); // Return chi-value for the cell return (diff * diff / expected);

假设chiVal的输入有3行3列, 如下:

1  2  3

4  2  1

2  3  3

则计算行和列和总和之后为

1  2  3     6

4  2  1     7

2  3  3     8

7  7  7     21

那么e[0][0]的期望值是多少呢? 已知行和分别为6、7、8, 列和分别为7、7、7的情况下。

e[0][0] = r[0] * c[0] / n,   diff[i][j] = |    [i][j] - e[i][j]     |

那么该cell的chiVal值就是  diff[i][j]^2/e[i][j]

整个矩阵的chiVal就是各cell的chiVal之和

那么, 这个chiVal衡量的是什么东西呢, 如何用来做特征选择?

http://www.blogjava.net/zhenandaci/archive/2008/08/31/225966.html

diff衡量的是观测频度与期望频度的差

diff^2衡量的是方差

diff^2/E, 类似于相对方差

开方检验最基本的思想就是通过观察实际值与理论值的偏差来确定理论的正确与否。具体做的时候常常先假设两个变量确实是独立的(行话就叫做“原假设”),然后观察实际值(也可以叫做观察值)与理论值(这个理论值是指“如果两者确实独立”的情况下应该有的值)的偏差程度,如果偏差足够小,我们就认为误差是很自然的样本误差,是测量手段不够精确导致或者偶然发生的,两者确确实实是独立的,此时就接受原假设;如果偏差大到一定程度,使得这样的误差不太可能是偶然产生或者测量不精确所致,我们就认为两者实际上是相关的,即否定原假设,而接受备择假设。

在文本分类问题的特征选择阶段,我们主要关心一个词t(一个随机变量)与一个类别c(另一个随机变量)之间是否相互独立?如果独立,就可以说词t对类别c完全没有表征作用,即我们根本无法根据t出现与否来判断一篇文档是否属于c这个分类。但与最普通的开方检验不同,我们不需要设定阈值,因为很难说词t和类别c关联到什么程度才算是有表征作用,我们只想借用这个方法来选出一些最最相关的即可。

此时我们仍然需要明白对特征选择来说原假设是什么,因为计算出的开方值越大,说明对原假设的偏离越大,我们越倾向于认为原假设的反面情况是正确的。我们能不能把原假设定为“词t与类别c相关“?原则上说当然可以,这也是一个健全的民主主义社会赋予每个公民的权利(笑),但此时你会发现根本不知道此时的理论值该是多少!你会把自己绕进死胡同。所以我们一般都使用”词t与类别c不相关“来做原假设。选择的过程也变成了为每个词计算它与类别c的开方值,从大到小排个序(此时开方值越大越相关),取前k个就可以(k值可以根据自己的需要选,这也是一个健全的民主主义社会赋予每个公民的权利)。

文本特征选择中, 计算每个属性的叉方值, 取最大的前k个

特征选择---文本分类:叉方统计量相关推荐

  1. 特征选择--文本分类: 信息增益

    counts:计数. 记录样本集中每个样本的每个属性的在每个类中出现的加权次数 counts[data.numAttributes()][numValues + 1][numClasses + 1] ...

  2. [026]文本分类之SVM

    1 基础知识 1. 1 样本整理 文本分类属于有监督的学习,所以需要整理样本.根据业务需求,确定样本标签与数目,其中样本标签多为整数.在svm中其中如果为二分类,样本标签一般会设定为-1和1,而在朴素 ...

  3. 利用SVM 实现文本分类的实例

    原文来自:http://blog.csdn.net/zhzhl202/article/details/8197109 之前做过一些文本挖掘的项目,比如网页分类.微博情感分析.用户评论挖掘,也曾经将li ...

  4. python文本分类特征选择_文本挖掘之特征选择(python 实现)

    机器学习算法的空间.时间复杂度依赖于输入数据的规模,维度规约(Dimensionality reduction)则是一种被用于降低输入数据维数的方法.维度规约可以分为两类: 特征选择(feature ...

  5. 文本分类——特征选择概述

    内容提要 特征选择概述 常见模型 文档频率(DF) 卡方校验(CHI) 信息增益(IG) 互信息(MI) 特征选择概述   在向量空间模型中,文本可以选择字.词组.短语.甚至"概念" ...

  6. 【文本分类】混合CHI和MI的改进文本特征选择方法

    摘要:改进CHI算法.改进MI算法,结合改进CHI+改进MI,应用于文本的特征选择,提高了精度. 参考文献:[1]王振,邱晓晖.混合CHI和MI的改进文本特征选择方法[J].计算机技术与发展,2018 ...

  7. 【文本分类】基于改进CHI和PCA的文本特征选择

    摘要:改进CHI算法后,结合PCA算法,应用于文本的特征选择,提高了精度. 参考文献:[1]文武,万玉辉,张许红,文志云.基于改进CHI和PCA的文本特征选择[J].计算机工程与科学,2021,43( ...

  8. 文本特征选择 java代码_文本分类入门(十)特征选择算法之开方检验

    前文提到过,除了分类算法以外,为分类文本作处理的特征提取算法也对最终效果有巨大影响,而特征提取算法又分为特征选择和特征抽取两大类,其中特征选择算法有互信息,文档频率,信息增益,开方检验等等十数种,这次 ...

  9. 文本分类入门(十一)特征选择方法之信息增益

    前文提到过,除了开方检验(CHI)以外,信息增益(IG,Information Gain)也是很有效的特征选择方法.但凡是特征选择,总是在将特征的重要程度量化之后再进行选择,而如何量化特征的重要性,就 ...

最新文章

  1. VS中使用NuGet安装依赖时提示:无法安装程序包“xxx”。你正在尝试将此程序包安装到目标为“.NETFramework,Version=v4.5”的项目中
  2. 基于Conditional Layer Normalization的条件文本生成
  3. 华为nova5i计算机有计算记录吗,华为nova 5i正式发布,看完价格后:还是算了吧!...
  4. jstl视图_使用JSTL视图探索Spring Controller
  5. 2021年度抖音小红书美妆行业营销报告
  6. LightOJ 1278 - Sum of Consecutive Integers 分解奇因子 + 思维
  7. 朋友公司招聘1名项目经理和两名asp.net(c#)程序员
  8. 一起助力!为wuhan2020:武汉新型冠状病毒防疫开源信息收集平台尽一份微薄之力!...
  9. 我购买了一台acer笔记本
  10. FORTRAN+计算物理学学习日记(3)
  11. 最新PC微信多开——OD修改dll程序跳转逻辑实现多开
  12. 右下角任务栏弹出天猫广告的解决办法,搞了半天原来是搜狗拼音在捣鬼!附搜狗双拼党转投微软拼音怀抱教程
  13. 面向对象开发期末复习概述(三)
  14. 【UE4】pawn 和 Character 的区别
  15. 电子科大信软互+班 程算I 2021机考真题
  16. mysql lag over_lag函数(lag函数用法)
  17. 文艺范儿的程序猿和攻城狮们
  18. 选择小红书素人笔记推广有什么好处?
  19. 使用大华惠智双目半球网络摄像机DH-IPC-HD4140X-E2获取人流量统计数据
  20. 用Python搭建一个股票舆情分析系统

热门文章

  1. 【c++】11.重写、覆盖、using、typedef
  2. 分类器是如何做检测的?(2)——【续】检测中的LBP和HAAR特征计算过程
  3. Java 面试知识点解析(七)——Web篇
  4. JVM内存模型、指令重排、内存屏障概念解析
  5. Visio中插入mathtype公式,解决直线交叉弯曲的问题
  6. 趣味编程:从字符串中提取信息(参考答案 - 下)
  7. 虚拟现实大会ChinaVR2015报告之-电子试衣和三维人体建模
  8. 【OpenCV3】级联分类器目标检测——cv::CascadeClassifier简介
  9. Ubuntu12.04下解决sudo apt-get update警告Duplicate sources.list entry
  10. (转载)把syslog接收的远程日志从/var/log/messages中分开