特征选择的常用方法之一是卡方检验,作为一个filter model的代表,卡方检验属于简单易计算的Feature weight algorithm(通过一定的measure方法给特征赋上一定的weight来表征与类别之间的相关度,通过weight大于一定阈值或选取topk个weight来进行特征选择)。卡方检验和信息增益是feature weight algorithm常用且效果较优的算法。
卡方检验是概率论与数理统计中常用的假设检验的思想:通过观察实际值和理论值的偏差来确定原假设是否成立。首先假设两个变量是独立的(此为原假设),然后观察实际值和理论值之间的偏差程度,若偏差足够小,则认为偏差是很自然的样本误差,接受原假设。若偏差大到一定程度,则否则原假设,接受备择假设。
关于卡方检验的思想和例子,可参考:http://blog.csdn.net/fty8788/article/details/8156723
上文中提到的例子:考察attribute词 “篮球”和类别“体育”的相关性,计算偏差的卡方值,进行特征选择。这里不再赘述。
++++++++++我是分割线++++++++++
理解卡方检验:
使用卡方检验时,简单代入公式即可。简单复习了一下假设检验的知识(都还给老师了,实在对不住自己……),简单总结如下,有不对之处感谢指正:
卡方检验使用的是单个分布的卡方检验拟合法:
对篮球的有无和体育是否这两对值分离时,假设两个是独立的,即篮球在四中情况下的分布概率(用频率近似概率)分别为:A+B/N A+B/N C+D/N C+D/N
对篮球的分布是否符合上述假设进行检验:
chi2 = sum(1 to k) n/pi (fi/n - pi)^2 ~chi(k-1)分布
公式左边简化得到:
chi2 = sum(1 to k) (fi - npi)^2 / npi = sum(1 to k) (fi - E)^2 / E ~chi(k-1)
于是,卡方检验的公式由此得到。
对以上假设进行检验时,相关了一个显著水平siglevel。显著水平表示当原假设成立时拒绝原假设的概率,是一个小概率事件的概率。
对上述例子,if chi2 >= chi2(siglevel) 拒绝原假设,或可表示为P(chi2 >= G) = siglevel
减少siglevel,即拒绝原假设的概率变小,G变大,即对chi2的阈值变高,必须出现一个很大的偏差才能拒绝原假设。因此可以通过调节siglevel调整拒绝原假设的卡方阈值。
++++++++++++碎碎念+++++
概率论博大精深,大一上课单纯以为这只是数学知识,拿来算算概率就可以了。完全没意识到高数、概率论和线性代数与码农千丝万缕的联系,
把教材都买回来了,希望有一天能融为一体,游刃有余吧。2014,小小加油。