
正确选择数据分析功能可以使您:
- 在有老师和没有老师的情况下提高机器学习模型的质量,
- 减少培训时间并减少所需的计算能力,
- 在高维输入数据的情况下,可以减弱“维数的诅咒”。
必须对属性的重要性进行评估才能解释模型的结果。
我们将考虑现有的用于选择有或没有老师的学习问题的属性的方法。 每种方法都使用Python的开放源代码实现进行了说明,因此您可以快速测试建议的算法。 但是,这并不是一个完整的选择:在过去的20年中,已经创建了许多算法,在这里您将找到其中最基本的算法。 要进行更深入的研究,请查看此
评论 。
有老师和没有老师的模型
教师具有选择算法,通过这些算法,您可以确定与教师一起完成教学任务的最佳工作质量的适当特征(例如,分类和回归问题)。 这些算法需要访问标记的数据。 对于未标记的数据,还有许多特征选择方法可根据各种标准评估所有特征:方差,熵,保持局部相似性的能力等。 在没有老师的情况下使用启发式方法检测到的相关特征也可以在具有老师的模型中使用,因为它们可以检测特征与目标变量之间的关联以外的模式。
特征选择方法通常分为4类:过滤器,包装器,嵌入式和混合。
包装纸
通过这种方法,我们考虑到了应用学习算法的最终结果(例如,解决分类问题的准确性提高了多少),评估了属性子集的有效性。 在搜索策略和建模的这种组合中,可以使用任何学习算法。

现有的选择策略:
- 直接选择(正向选择) :我们先从一组空要素开始,然后迭代添加可最大程度提高模型质量的要素。
- 向后选择 :我们从一组所有属性开始,然后在每次迭代中都删除“最差”属性。
实现:这些算法在
mlxtend包中实现,这里是
一个使用
示例 。
- RFE (递归特征消除):一种贪婪搜索算法,它通过递归定义越来越小的特征集来选择特征。 它会按照删除顺序对符号进行排序。
实施: scikit-learn
内联方法
该组包括可同时训练模型和选择特征的算法。 通常使用l1-
正则器 (稀疏正则器)或限制某些符号的条件来实现。
- SMLR (稀疏多项式逻辑回归):该算法使用ARD(自动相关性确定)作为经典多项式Logistic回归的一部分,实现了l1正则化。 正则化确定每个特征的重要性,并使那些对预测无用的特征无效。
实施: SMLR - ARD (自动相关性确定回归):模型使用贝叶斯岭回归。 与例如最小二乘法相比,它将权重的权重更强地移为零。

ARD将某些功能的权重归零,从而有助于识别相关尺寸。
实施: scikit-learn
正则化算法的其他示例:
套索 (实现
l1-正则化),
岭回归 (实现
l2-正则化),
弹性网 (实现
l1-和
l2-正则化)。 如果以图形方式绘制这些方法,则可以看到套索回归将系数限制为正方形,山脊回归线则描述了圆,而弹性网处于中间位置。
https://scikit-learn.org/stable/auto_examples/linear_model/plot_sgd_penalties.html这里提供
了对这些算法的全面描述。
筛选器
通过这种方法,我们仅根据属性的固有特征来评估属性的重要性,而无需涉及学习算法。 与包装方法相比,这些方法速度更快,所需的计算资源更少。 如果没有足够的数据来建模特征之间的统计相关性,则过滤器会产生比包装器更差的结果。 与包装器不同,此类方法不易再培训。 当包装方法需要太多计算能力时,它们被广泛用于处理高维数据。
教师方法
- 缓解 :此方法从数据集中随机选择样本,并根据所选实例与最接近它的相同和相反类别的两个对象之间的差异,更新每个属性的重要性。 如果同一类别的两个最接近邻居的属性值存在差异,则其重要性降低;相反,如果不同类别的对象的属性值之间存在差异,则重要性会相应增加。
如果属性的值对于同一类别的最近对象比与不同类别的最近对象相比,其权重减小,则权重减小。 否则重量会增加。
先进的ReliefF算法使用特征加权并搜索更多最近的邻居。
实施: scikit-rebate , ReliefF - Fisher分数 :常用于二进制分类问题。 Fisher比率(FiR)定义为每个类别的属性平均值之间的距离除以它们的方差:
FiR_ {i} = \ frac {\左| \ bar {X} _ {i} ^ {(0)}-\ bar {X} _ {i} ^ {(1)} \ right |} {\ sqrt {var(X_ {i})^ {(0)} + var(X_ {i})^ {(1}}}}
实现: scikit-feature ,用法示例 。 - 卡方得分 :检查两个分类变量的观测频率和预期频率之间是否存在显着差异。 因此,检验了两个变量之间不存在联系的零假设。
卡方独立性标准 。
为了正确地应用卡方标准来检查数据集中的不同符号与目标变量之间的关系,必须满足以下条件:变量必须是分类的 ,独立的并且预期频率必须大于5 。 最后一个条件保证可以使用卡方分布来近似统计标准(检验统计量)的CDF(累积密度函数)。 在这里了解更多。
实现: sklearn , scipy - CFS (基于相关的特征选择):此方法的原理可以表述为:
如果符号的值根据其所属的一个或另一类而系统地更改,则符号是相关的。
因此,良好的特征子集包含与目标变量高度相关但彼此不相关的那些特征。 k个特征子集的分数计算如下 :
在这里 是一个特征和一个类之间所有相关性的平均值,并且 -特征之间所有相关性的平均值。 CFS标准定义如下:
CFS = \底线{S_ {k}} {max} \左[\ frac {r_ {cf_ {1}} + r_ {cf_ {2}} + \ cdots + r_ {cf_ {k}}} {\ sqrt {k + 2(r_ {f_ {1} f_ {2}} + \ cdots + r_ {f_ {i} f_ {j}} + \ cdots + r_ {f_ {k} f_ {1}}}}} \对]
实现: scikit-feature ,用法示例 。 - FCBF (基于快速相关性的滤波器):此方法比ReliefF和CFS更快,更有效,因此更常用于高维输入。 实际上,这是一种考虑相关性和冗余性的典型方法,其中首先针对所有属性(X和YI(X,Y)之间的互信息除以它们的熵之和)计算对称不确定性,然后按此标准对属性进行排序,并且然后多余的被去除。
实施: skfeature , https : //github.com/shiralkarprashant/FCBF
没有老师的方法
- 方差 :已经表明,字符方差估计可以是选择特征的有效方法。 通常,色散几乎为零的符号并不重要,可以将其删除。
实施: 方差阈值 - 平均绝对差 :计算属性值与其平均值之间的平均绝对差( 实现 )。
较高的值往往具有较高的预测能力。 - 分散率 :算术平均值除以几何平均值。 较高的方差对应于更相关的功能( 实现 )。
由于 当且仅当尊重平等 然后:
- 拉普拉斯分数 :基于观察,一个类的数据通常相互之间更靠近,因此您可以通过要素反映这种相似性的能力来评估其重要性。 该方法包括通过测量任意距离将数据嵌入到最近邻图中,然后计算权重矩阵。 然后,对于每个特征,我们计算拉普拉斯准则并获得一个属性,使得最小值对应于最重要的尺寸。 但是,实际上,在选择要素子集时,通常会使用不同的聚类算法(k-means方法),通过该算法选择最有效的组。
实施: scikit功能 - 拉普拉斯准则与基于距离的熵相结合 :该算法基于拉普拉斯准则,其中k均值聚类被熵取代。 该算法在高维数据集上具有更高的稳定性( 实现 )。
- MCFS (多集群特征选择):执行频谱分析以测量不同特征之间的相关性。 对于数据聚类和特征评估,使用了拉普拉斯算子(图拉普拉斯算子)的特征向量。 他们的计算在本文中描述。
实施: https : //github.com/danilkolikov/fsfc - 算法LFSBSS (局部特征选择), 加权k均值 (加权k均值), SPEC和Apriori在 此处考虑并在此软件包中实现。
混合方法
实现特征选择的另一种方法是在两个阶段的过程中组合使用过滤器和包装器:首先,通过统计属性过滤特征,然后应用包装方法。
其他来源
许多文献都考虑了特征选择的问题,在这里,我们仅略微涉及了整个科学研究工作。
scikit-feature软件包中实现了我未提及
的其他特征选择算法的完整
列表 。
也可以使用
PLS (如
本文所述的偏最小二乘)或使用线性尺寸缩小方法(如此处所示)确定相关特征。
翻译的喷气信息系统