红色石头的个人网站:红色石头的个人博客-机器学习、深度学习之路www.redstonewill.com
数据预处理后,我们生成了大量的新变量(比如独热编码生成了大量仅包含0或1的变量)。但实际上,部分新生成的变量可能是多余:一方面它们本身不一定包含有用的信息,故无法提高模型性能;另一方面过这些多余变量在构建模型时会消耗大量内存和计算能力。因此,我们应该进行特征选择并选择特征子集进行建模。
项目地址:https://github.com/YC-Coder-Chen/feature-engineering-handbookgithub.com
本文将介绍特征工程中的 Multivariate Filter Methods 多元特征过滤。
目录:
1.1.2 Multivariate Filter Methods 多元特征过滤
单变量特征过滤仅考虑了每一变量与目标变量之间的关系,而忽视了变量间的相关性。多元变量过滤则解决了这一问题,其考虑了变量之间的相互关系,基于整个特征空间选择最佳特征。因此多元特征过滤在删除冗余变量方面表现更好。这里利用亚利桑那州立大学开发的skfeature模块来进行多元特征过滤。
1.1.2.1 Max-Relevance Min-Redundancy (mRMR) 最大相关最小冗余
最大相关最小冗余试图寻找一个与目标变量有较高相关性(例如:MI)的变量子集,同时这个子集中的变量还应具有较低的相互关联性。通过解析源代码,我们发现,skfeature中最大相关最小冗余方法仅适用于分类问题中的离散特征,因为它计算过程中使用的是计算离散情形下的互信息 (MI)的公式。
公式:
假设数据集共包含m个特征,则基于mRMR公式,其中第n个特征的重要性可被表示为:
( , ) 为变量 与目标变量Y的互信息。1/| |∑ ∈ ( , )为变量 与现有变量子集中所有变量的互信息的平均值。
mRMR其实是一个逐步(step-wise)的方法,在mRMR特征选择过程的每一步中,具有最高特征重要性 ( )的变量 ,( ∉ )将会被加入子集中,直至子集中的变量数达到用户要求。
import numpy as np
from skfeature.function.information_theoretical_based import MRMR
from sklearn.datasets import load_iris # 利用iris数据作为演示数据集
# 载入数据集
iris = load_iris()
X, y = iris.data, iris.target
# 选择前100个观测点作为训练集
# 剩下的50个观测点作为测试集
# 由于skfeature中的mRMR仅适用于离散变量
# 因此我们通过将float转换为int而把所有连续变量转换为离散变量
# 此转换仅用于演示目的
train_set &#