热线电话:13121318867

登录
2020-08-07 阅读量: 1435
特征筛选及PAC

特征筛选:

  • 当特征非常多的时候,可能存在冗余,特征越多,可能噪音越多,同时特征越多,模型效率越低,可以考虑进行特征筛选来去掉无效的信息,看看是否可以提高模型的准确度。既可以提升模型的泛化能力,也能够减少模型运行的时间

  • 特征筛选的方法,在对测试集进行筛选的时候,使用的是通过训练集训练之后的模型进行筛选

  • 在特征筛选的方法中,以下方法一到四的效果(单变量特征筛选方法)不如方法五和方法六的效果好

  • 方法一:方差过滤,单变量特征筛选方法

    • 一般来说方差大,所包含的信息量也大

    • 首先计算出每个特征的方差,如果方差小于0.05,就删掉,反之保留

    • from sklearn.feature_selection import VarianceThreshold:通过这个包进行方差过滤

    • 使用参数threshold,进行方差的阈值设置

    • 树模型中可能不会用到全部的特征值,可能只会用到部分特征值,所以树模型构建的时间比较快

    • get_support,是一个函数,可以查看到原数据集中删除掉的特征值是哪些,返回的是True和False的数组

    • variances_,记录的是每个特征的方差

  • 相关性过滤方法,有可能三个方法都需要去试一下,或者将三个方法串联起来使用。三个方法的结果可能是差异不大,如果差异很大的话那么就需要使用Embedded或者Wrapper这两种方法

  • 方法二:相关性过滤之卡方检验,单变量特征筛选方法

    • 查看每个特征和标签之间的相关性,如果没有相关则删除

    • 卡方检验检验的就是特征是否与标签之间独立,独立的特征删掉

    • 如果模型的解释性要求没有那么高,可以使用卡方检验来筛选特征,也可以使用互信息过滤

  • 方法三:相关性过滤之F检验,检验特征和标签之前是否有线性关系

    • 方差为0的特征不能进行F检验

    • 如果需要构建可解释模型,可以使用线性回归、逻辑回归等,这个时候可以使用F检验来进行相关的特征选取,也可以使用互信息过滤来进行特征选择

  • 方法四:相关性过滤之互信息过滤,检验特征和标签之前是否有非线性关系

    • 这种方法找了很多种非线性关系,所以很耗时

  • 方法五:Embedded嵌入法

    • 通过模型拟合出来的效果,feature_importance特征重要性来进行特征的筛选

    • 可以通过参数threshold来进行阈值的设置

    • 这个方法的缺点是threshold参数的值没有明确的标准进行设置,除非使用学习曲线或者网格搜索

    • 这个模型只跑了一遍,而不一样的数据集在模型中的表现可能不一样,可能导致嵌入法选择的特征是有偏的

  • 方法六:包装法

    • 使用递归的形式来找到最优的特征,例如使用递归特征消除法

    • 这个方法耗时很长,但是效果很好

    • 每次删掉一部分最不重要的特征,导入模型进行下一次的迭代,此时重新生成特征重要性,再删除最不重要的一部分特征,直到特征数量为我们自己设置的数量为止。这个过程中,特征重要性的计算也会原来越准确

    • 这个方法中需要设置保留特征值的个数,只能通过业务来确认或者通过学习曲线来确认

    • ranking_中可以看到每个特征的重要性,ranking_越小,特征越重要,否则越不重要

  • 所有特征筛选中的方法,都可以使用get_support来查看选中的是哪些特征

  • 特征选择的方法即是删除掉部分特征,这个方法比较危险,会删除特征,也会删除特征间的相关性

  • 树模型算法倾向卡方过滤(决策树,随机森林);使用线性回归类的算法倾向F检验(线性回归,逻辑回归, SVM);这些方法都没有RFE好

降维算法:

  • PCA,手动实现该算法之前首先要进行去中心化,方便后面的计算

  • 计算原来矩阵协方差矩阵(原矩阵去中心化后(减去均值)得到的矩阵的转置乘以去中心化后的矩阵)的特征值和特征向量,用特征向量中的值分别乘以原矩阵的列向量,则构造出新的特征

  • 新构造出的特征两两独立,新特征的方差正好是对应的特征值

  • 1. PCA使用线性代数的方法,对数据集的空间进行了变化

  • 2. 计算协方差矩阵,了解到,非对角线上是非0 ,如果直接删某一个特征的,会一并将非对角线上的值删除

  • 3. 同PCA的方法,计算方差矩阵的特征向量,使用特征向量对空间进行变化。换一句话来说,使用原来所有P个老的特征,借助特征向量通过线性组合,得到P个新特征

  • 4. 新的P个特征的特点,每一个新特征都是由所有老的特征通过线性组合的得到了。并且所有的新的特征两两独立!

  • 5. 新的空间下,PCA保证得到的新特征两两独立,这样的话,就可以轻松无忧无虑来进行方差过滤了

  • PCA的实现过程

  • 为什么新的特征的方差为方差矩阵的特征向量

  • 协方差矩阵长这样

  • PCA的缺点:不能解释,每一个新的特征都是由原来所有的老特征通过线性组合得到,每一个特征都不可以解释,且PCA只能针对连续型的变量

  • pca模型中可以通过极大似然方法,让模型自己选择最好的个数


32.2423
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子