概论
机器学习算法及应用场景不断更新变化,也意味着也必须跟得上学术及大牛的脚步,在这条路上迈着魔鬼的步伐不断前进,不敢停歇。
知识的更新需要随时记录,写的过程其实也是一种梳理的过程,并且加强一遍记忆。
第一次写,最近比较关注的是特征选择过程。
引言
其实在每一次做数据分析的过程中,这是不可缺少的一步。但是当面试官问你,阐述一下对特征工程的理解,你还是觉得心慌。为什么?因为你没有对它的概念、以及在机器学习中的角色及作用进行过系统的思考过。因此我决定记录一下,也是对它的搜索、思考及系统的梳理。
特征工程
特征工程概念
关于特征工程,业界的一句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限。
机器学习模型需要数据来训练,但是通常需要对数据进行预处理,以便在训练的时候发挥作用。这种预处理,也就是所说的“特征工程”。
特征工程是指从原始数据转换为特征向量的过程。特征工程是机器学习中最重要的起始步骤,会直接影响机器学习的效果,并通常需要大量的时间。特征工程包括数据清理、特征提取、特征选择等过程。
清华大学数据科学研究院中提过,在机器学习黑客马拉松和竞赛中,特征工程的质量通常是进入排行榜10强和无缘50强的重要区别。因此可见特征工程的重要性。
特征工程相关资料搜索
http://www.sohu.com/a/253092596_787107
这是我觉得讲的框架性很全面的一篇文章。涵盖了特征工程的很多方面,让我之前凌乱的思路得到了骨架,成为了一体。
https://www.jiqizhixin.com/articles/2018-06-21-2
除了上面一惊喜发现之外,还知道了去年更新的python FeatureTools,实现了特征选择自动化的想法,想法简单但逻辑复杂,以下附上项目名称及代码地址。
项目地址:https://docs.featuretools.com/
代码地址:https://github.com/WillKoehrsen/automated-feature-engineering/blob/master/walk_through/Automated_Feature_Engineering.ipynb
特征工程过程
- 特征使用方案
a 要实现我们的目标需要哪些数据——基于业务理解,尽可能找出对因变量有影响的所有自变量
b 可用性评估 : 获取难度 覆盖率 准确率 - 特征获取方案
a 如何获取这些特征?
b 如何存储? - 特征处理
a 特征清洗
aa 清洗异常样本
(方法:标准差法 1sigma 68% 2 95% 3 99.7% 之外 异常值)
bb 采样: 数据不均衡 样本权重
b 预处理
aa 单个特征(归一化、离散化、虚拟变量、缺失值、数据转换(指数、对数、Box-Cox))
bb 多个特征
aaa 降维(LDA 线性判别分析、PCA主成分因子分析)
bbb 特征选择
过滤法:思路-自变量与因变量之间的关联-相关系数法、卡方检验、信息增益等
包裹法:思路-根据目标函数来决定是否加入一个变量。迭代-产生特征子集,评价(完全搜索、自发式搜索、随机搜索)
嵌入法: 思路-学习器自动选择特征(正则化(lasso、岭回归)、决策树、深度学习)
c 衍生变量
对原始数据加工,生成有商业意义的变量 - 特征监控
特征有效性分析(特征重要性、特征权重)
特征监控
尽管前方是洪水猛兽,但无所谓只有往前冲,因为你要知道后退一步即是悬崖。针对某种情景的无奈与无所畏惧。——送给自己以及还在犹豫徘徊、失望懊恼的你。