机器学习中如何用筛选器检测冗余?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习中如何用筛选器检测冗余?相关的知识,希望对你有一定的参考价值。

筛选器试图在特征丛林中进行清洗,它独立于后续使用的任何机器学习方法。它基于统计方法找出冗余或无关特征。一般来讲,筛选器的工作流所图:
技术分享图片

通过使用相关性,很容易看到特征之间的线性关系。这种关系可以用一条直线来拟合。在下面这些图中,我们可以看到不同程度的相关性,以及一个用红色虚线描绘出的潜在线性依赖关系(一个拟合的一维多项式)。每幅图上方的相关系数Cor(X1,X2)是用皮尔逊相关系数计算出来的(皮尔逊r值),采用的是scipy.stat里的rearsonr()函数。

给定两个大小相等的数据序列,它会返回相关系数值和p值所组成的元组。p值是该序列产生于一个不相关系统的概率。换句话说,p值越高,我们越不能信任这个相关系数:
技术分享图片
在第一种情况下,知道这两个序列是相关的。而在第二种情况下,我们仍然有一个非零的r值。

然而,p值基本上告诉这个系数是什么样的,不应对它过多关注。
技术分享图片
在前三个具有高相关系数的情形中,我们可能要把X1或X2扔掉,因为它们似乎传递了相似的信息。

然而在最后一种情况中,我们应该所两个特征都保留。在应用中,这种决策当然是由p值驱动的。

尽管这种方法在前面这个例子中工作得不错,但在实际应用中却并不好。基于相关性的特征选择方法的一个最大缺点就是,它只能检测出线性关系(可以用一条直线拟合的关系)。如果在非线性数据中使用相关性,就有问题了。
技术分享图片
除右下图以外的所有图中,尽管人的眼睛可以立即看到X1或X2之间的关系,却没法发现相关系数。很明显,相关性在检测线性关系中是很有用的,但对于其他关系就不行了。而对于非线性关系,可以用互信息。

以上是关于机器学习中如何用筛选器检测冗余?的主要内容,如果未能解决你的问题,请参考以下文章

放弃机器学习框架,如何用Python做物体检测?

Python机器学习及实践——进阶篇2(特征提升之特征筛选)

Python机器学习及实践——进阶篇2(特征提升之特征筛选)

机器学习中如何处理不平衡数据?

Python 这几种方法进行机器学习特征筛选,有效提升模型性能

如何用机器学习识别猫叫和狗叫声?