机器学习特征工程

2018/3/15更新

结合KAGGLE竞赛经验、算法面试情况和jasonfreak的总结,个人总结出以下机器学习特征处理的方法;分享给大家,希望对大家有帮助


特征使用方案:1、要实现我们目标,需要什么数据----结合特定业务,具体情况具体分析
              2、数据可用性评估:1、获取难度
2、覆盖率
  3、准确率

特征获取方案:1、如何获取特征(接口调用or自己清洗or/github资源下载等)
      2、如何存储?(/data/csv/txt/array/Dataframe//其他常用分布式)

特征处理:1、特征清洗:1.1:通过describe数据描述、matplotlib、snsborn数据可视化操作,清洗异常样本
                       1.2:数据不平衡处理:过采样、欠采样、Boostrap、Smote、Msote、代价敏感转化等技术,进行处理;其中过采样和欠采样是在数据层面上,通过采样技术,来降低数据倾斜率;而Smote方法是通过利用最近邻生成样本;但是在生成的过程中,由于最近邻的不稳定行;可能会引进噪声样本进入数据集,因此改进的方法MSmote被提出,通过对产生的样本进一步做异常处理,降低这种可能性,但是无法保证确定性;代价敏感转化技术是通过对样本进行加权,然后做一定处理,使得原始的算法可以由代价不敏感转为代价敏感,其实就是实现全局的代价最优,因此可以在训练如此,将样本较少的类设置一个较大权重,如果大家对这方面研究有兴趣,可以私信或者留言,我可以推荐大家一些优秀的论文,因为我的课题方向就是这个!
          
  2、单个特征:2.1:归一化:去除量纲影响
                       2.2:离散化:通过hash编码实现,进行特征转换, 注意:直接数字编码会导致算法在一堆没有意                                                 义的大小顺序中学习!!!!(Spark高级数据分析-P65),建议还是用one-hot 哈希编码;如果仅仅是两个类,用0-1编码是不会有太大问题的,但是one-hot编码存在一个问题就是,如果类别过程,生成的稀疏编码维度将会过大,甚至造成维度灾;因此,有资料推荐使用many-to-many 进行hash分类,从而降低维度;但是many-to-many过程,需要进行分析,如果聚类一组特征,从而实现较好的效果,具体还要再找找资料,欢迎补充,谢谢!
                       2.3:缺失值处理:如果缺失部分大,可以考虑放弃该条特征,否则利用平均值、中位数、众数等进行缺失值
    补充
                       2.4:数据转换:为了使得数据之间反应出清晰的相关性(解决偏度影响),可以对数据进行log、指数等转换

          3、特征降维:3.1:PCA:无监督映射过程,通过数学映射;找出特征方差大的组合,相应的特征向量能够概括总                                                               特征90%以上信息(具备数学推导,大家有兴趣可以看一下)
                                3.2:LDA:监督映射过程,使得同类点距离越近,类间距离越远
                                3.3:随机森林算法:通过袋外样本(Out-Of-Bag),对每棵决策树进行误差判断,之后再利用随机树变换某一                                                                 维特征,观察其误差的变化,如果误差变化大,即认为特征重要

                                3.4:filter:通过数学上方差、信息熵等操作,观察每个维度特征情况,进行降维;

                                3.5:特征衍生:对数据进行一定的加工,生成重要特征,进行信息补充

欢迎转载,注明出处,谢谢!

参考:https://www.cnblogs.com/jasonfreak/p/5448385.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
特工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。它包括特征抽取、特征预处理和特征降维等内容。特征工程对于机器学习的效果具有直接影响。 在Python中进行机器学习特征工程,可以使用多个库和工具来完成。下面是一些常用的Python库和工具: 1. Scikit-learn:Scikit-learn是一个功能丰富的机器学习库,提供了许多特征工程的方法,包括特征抽取、特征预处理和特征降维等。你可以使用Scikit-learn来进行特征选择、标准化、缺失值处理等操作。 2. Pandas:Pandas是一个用于数据分析和处理的库,提供了丰富的数据操作功能。你可以使用Pandas来加载和清洗数据,进行数据预处理和特征选择。 3. Numpy:Numpy是Python中一个强大的数值计算库,提供了高效的数组操作功能。你可以使用Numpy来进行数值特征的处理,如归一化、标准化和缩放等。 4. Featuretools:Featuretools是一个用于自动特征工程的库,它可以根据数据的结构和关系自动生成特征。你可以使用Featuretools来创建新的特征,通过组合和聚合现有特征。 5. Feature-Engine:Feature-Engine是一个专注于特征工程的库,提供了多个特征处理方法。你可以使用Feature-Engine来处理缺失值、离群值、编码分类变量等。 在进行机器学习特征工程时,你需要根据具体的问题和数据集选择适合的方法和工具。通过合理的特征工程处理,可以提高机器学习模型的性能和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值