快捷搜索:  汽车  科技

sklearn时间序列(怎么利用sklearn进行特征选择)

sklearn时间序列(怎么利用sklearn进行特征选择)比较两个模型中的最小二乘误差,并检查模型X和Y之间的误差是否显着或偶然引入。F-Test进行假设检验模型X和Y,其中X是仅由常数创建的模型,Y是由常数和特征创建的模型。过滤方法考虑特征与目标变量之间的关系,以计算特征的重要性。F测试F-Test是一种统计测试,用于比较模型并检查模型之间的差异是否显着。

现代数据集中包含从数百万物联网设备和传感器收集的数据的信息非常丰富。这使得数据具有高维度,并且看到具有数百个特征的数据集是很常见的,并且看到它达到数万个并不罕见。

sklearn时间序列(怎么利用sklearn进行特征选择)(1)

特征选择是数据科学家工作流程中非常关键的组成部分。当呈现具有非常高维度的数据时,模型通常会窒息,因为

  • 训练时间随着特征的数量呈指数增长。
  • 随着特征数量的增加,模型的过度拟合风险也在增加。

特征选择方法通过减少尺寸而不会损失总信息来帮助解决这些问题。它还有助于理解特征及其重要性。

在本文中,我将讨论以下特征选择技术。

  1. 过滤方法
  2. 包装方法
  3. 嵌入式方法。
过滤方法

过滤方法考虑特征与目标变量之间的关系,以计算特征的重要性。

F测试

F-Test是一种统计测试,用于比较模型并检查模型之间的差异是否显着。

F-Test进行假设检验模型XY,其中X是仅由常数创建的模型,Y是由常数和特征创建的模型。

比较两个模型中的最小二乘误差,并检查模型XY之间的误差是否显着或偶然引入。

F-Test在特征选择中很有用,因为我们了解每个特征在改进模型中的重要性。

Scikit learn 使用F-Test 提供选择K最佳特征

sklearn.feature_selection.f_regression

用于分类任务

sklearn.feature_selection.f_classif

使用F-Test选择功能有一些缺点。F-Test检查并仅捕获特征和标签之间的线性关系。高度相关的特征被赋予较高的分数,较少的相关特征被给予较低的分数。

1. 相关性具有高度欺骗性,因为它不会捕获强烈的非线性关系。

如Anscombe的四重奏所示,使用像关联这样的汇总统计数据可能是一个坏主意。

sklearn时间序列(怎么利用sklearn进行特征选择)(2)

Francis Anscombe说明了四个不同的数据集如何具有相同的均值,方差和相关性,以强调"汇总统计"并不能完全描述数据集,并且可能具有相当大的欺骗性。

相互信息

两个变量之间的相互信息衡量一个变量与另一个变量的相关性。如果XY是两个变量,和

1. 如果XY是独立的,那么通过知道X就不能获得关于Y的信息,反之亦然。因此他们的互信息是0

2. 如果X是一个确定性函数Ÿ,那么我们就可以判断XÿŸX与互信息1

3. 当我们有Y = f(X,Z,M,N)时,0 <互信息<1

我们可以通过使用目标变量对互信息进行排序,从特征空间中选择我们的特征。

通过F-Test使用互信息的优点是,它与特征和目标变量之间的非线性关系很好。

Sklearn为回归和分类任务提供了具有互信息的功能选择。

sklearn.feature_selection.mututal_info_regression sklearn.feature_selection.mututal_info_classif

sklearn时间序列(怎么利用sklearn进行特征选择)(3)

F-Test很好地捕捉了线性关系。互信息捕获两个变量之间的任何关系。

http://scikit-learn.org/stable/auto_examples/feature_selection/plot_f_test_vs_mi.html

方差阈值

此方法可删除具有低于某个截止值的变化的特征。

这个想法是当一个特征本身变化不大时,它通常具有非常小的预测能力。

sklearn.feature_selection.VarianceThreshold

方差阈值不考虑特征与目标变量的关系。

包装方法

包装方法生成具有特征子集的模型并测量其模型性能。

前向搜索

此方法允许您搜索模型性能的最佳特征,并将它们一个接一个地添加到您的特征子集中。

sklearn时间序列(怎么利用sklearn进行特征选择)(4)

前向选择方法用于从5个特征中选择最佳3个特征,特征3 2和5作为最佳子集。

对于具有n个特征的数据,

- >在第一轮'n'模型中创建具有单独特征的模型,并选择最佳预测特征。

- >在第二轮中,使用每个特征和先前选择的特征创建"n-1"模型。

- >重复这一过程,直到选择了'm'特征的最佳子集。

递归特征消除

顾名思义,此方法一个接一个地消除了特定模型上性能最差的特征,直到知道了最佳特征子集。

sklearn时间序列(怎么利用sklearn进行特征选择)(5)

递归消除一个接一个地消除了最少解释的特征。特征2 3和5是通过递归消除得到的最佳特征子集。

对于具有n个特征的数据,

- >在第一轮'n-1'模型中创建了除一个以外的所有特征的组合。删除效果最差的功能

- >在第二轮'n-2'模型是通过删除另一个特征创建的。

包装方法通过广泛的贪婪搜索为您提供最佳功能集。

但是包装方法的主要缺点是需要训练的大量模型。它在计算上非常昂贵并且具有大量特征是不可行的。

嵌入式方法

某些机器学习模型提供的见解也可以实现特征选择。

LASSO线性回归可用于选择特征。套索回归是通过在线性回归的成本函数中添加一个额外项来执行的。除了防止过度拟合之外,还将不太重要的特征的系数减小到零。

sklearn时间序列(怎么利用sklearn进行特征选择)(6)

为了正则化,已将突出显示的术语添加到线性回归的成本函数中。

sklearn时间序列(怎么利用sklearn进行特征选择)(7)

当我们在成本函数中改变ƛ时,系数已在该图中绘制。我们观察到,对于ƛ~= 0,大多数特征的系数朝向零。在上图中,我们可以看到,当ƛ= 0.4时,只有'lcavol','svi'和'lweight'是非零系数的特征。

基于树的模型计算特征重要性,因为它们需要将最佳性能的特征保持在靠近树的根部。构建决策树涉及计算最佳预测特征。

sklearn时间序列(怎么利用sklearn进行特征选择)(8)

决策树将最重要的功能保留在根目录附近。在这个决策树中,我们发现腿的数量是最重要的特征,其次是它隐藏在床下并且它是美味的等等。

基于树基模型的特征重要性基于基尼指数卡方值计算。

数据科学中的大部分内容都是高度依赖于上下文和数据的,并且没有针对特征选择的一站式解决方案,最好的方法是了解每种方法的机制并在需要时使用。

猜您喜欢: