特征选择

待整理,需要合并指”特征工程文档中”。。。

机器学习中,有哪些特征选择的工程方法

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已

  • 计算每一个特征与响应变量的相关性
    工程上常用的手段有计算皮尔逊系数互信息系数皮尔逊系数只能衡量线性相关性,而**互信息系数能够很好地度量各种相关性,但是计算相对复杂一些,好在很多toolkit里边都包含了这个工具(如sklearn的MINE),得到相关性之后就可以排序选择特征了;

  • 构建单个特征的模型,通过模型的准确性为特征排序,借此来选择特征;

  • 通过L1正则项来选择特征
    L1正则方法具有稀疏解的特性,因此天然具备特征选择的特性,但是要注意,L1没有选到的特征不代表不重要,原因是两个具有高相关性的特征可能只保留了一个,如果要确定哪个特征重要应再通过L2正则方法交叉检验;

  • 训练能够对特征打分的预选模型
    RandomForest和Logistic Regression等都能对模型的特征打分,通过打分获得相关性后再训练最终模型;

  • 通过特征组合后再来选择特征
    如对用户id和用户特征最组合来获得较大的特征集再来选择特征,这种做法在推荐系统和广告系统中比较常见,这也是所谓亿级甚至十亿级特征的主要来源,原因是用户数据比较稀疏,组合特征能够同时兼顾全局模型和个性化模型。

  • 通过深度学习来进行特征选择
    目前这种手段正在随着深度学习的流行而成为一种手段,尤其是在计算机视觉领域,原因是深度学习具有自动学习特征的能力,这也是深度学习又叫unsupervised feature learning的原因。从深度学习模型中选择某一神经层的特征后就可以用来进行最终目标模型的训练了。

如何进行特征选择

特征选择是一个重要的数据预处理过程,主要有两个原因:一是减少特征数量、降维,使模型泛化能力更强,减少过拟合;二是增强对特征和特征值之间的理解

常见的特征选择方式:

  • 去除方差较小的特征,比如PCA
  • 正则化。1正则化能够生成稀疏的模型。L2正则化的表现更加稳定,由于有用的特征往往对应系数非零。
  • 随机森林,对于分类问题,通常采用基尼不纯度或者信息增益,对于回归问题,通常采用的是方差或者最小二乘拟合。一般不需要feature engineering、调参等繁琐的步骤。它的两个主要问题,1是重要的特征有可能得分很低(关联特征问题),2是这种方法对特征变量类别多的特征越有利(偏向问题)。
  • 稳定性选择。是一种基于二次抽样和选择算法相结合较新的方法,选择算法可以是回归、SVM或其他类似的方法。它的主要思想是在不同的数据子集和特征子集上运行特征选择算法,不断的重复,最终汇总特征选择结果,比如可以统计某个特征被认为是重要特征的频率(被选为重要特征的次数除以它所在的子集被测试的次数)。理想情况下,重要特征的得分会接近100%。稍微弱一点的特征得分会是非0的数,而最无用的特征得分将会接近于0。

你知道有哪些数据处理和特征工程的处理


数据预处理

1、特征向量的缺失值处理:
1)缺失值较多.直接将该特征舍弃掉,否则可能反倒会带入较大的noise。
2)缺失值较少,其余的特征缺失值都在10%以内,我们可以采取很多的方式来处理:

  • 把NaN直接作为一个特征,假设用0表示;
  • 连续值,用均值填充;
  • 用随机森林等算法预测填充;

2、连续值:离散化。有的模型(如决策树)需要离散值
3、对定量特征二值化。核心在于设定一个阈值,大于阈值的赋值为1,小于等于阈值的赋值为0。如图像操作
4、皮尔逊相关系数,去除高度相关的列


数据不平衡问题

  • 采样,对小样本加噪声采样(过拟合),对大样本进行下采样(欠拟合)
  • 数据生成,利用已知样本生成新的样本(深度学习的数据增强)
  • 进行特殊的加权,如在Adaboost中或者SVM中
  • 采用对不平衡数据集不敏感的算法
  • 改变评价标准:用AUC/ROC来进行评价
  • 采用Bagging/Boosting/ensemble等方法
  • 在设计模型的时候考虑数据的先验分布

详见:https://www.cnblogs.com/zhaokui/p/5101301.html

图片数据增强(Data augmentation):

  • 水平翻转
  • 随机裁剪
  • 样本不平衡, 进行 Label shuffle
  • 其他
    平移变换;
    旋转/仿射变换;
    高斯噪声、模糊处理
    对颜色的数据增强:图像亮度、饱和度、对比度变化