特征工程指南

特征工程
数据科学最有创造力的方面。
要像其他任何有创造力的尝试一样对待它,就想写一个喜剧的秀。
坚持头脑风暴
创建模板或公式
检查/重新审视以前的工作
特征分类
一些预处理似乎永远都是必要的
很高的基数(即包含大量不同的值)会带来很稀疏的数据
填补缺失值是一个难点
Onehot 编码
One-of-K 给一个长度为 K 的数组编码
基本方法:大多使用一些线性的算法
去掉第一列避免共线性
稀疏格式是记忆友好的(便于存储)
目前对待缺失值的大部分实现方法都不够优雅,没有考虑变量。
哈希编码
对固定长度的数组进行 Onehot 编码
避免极度稀疏的数据
可能会引发冲突性
可用不同的哈希函数重复操作并 bagging 小凹凸精度的结果
冲突性可能会降低结果的准确度,也可能提升结果的准确度
优雅的处理新的变量(比如 new user-agents)
标签编码
给每个类一个独一无二的数字化 ID
对于非线性的基于树模型的算法很有用
不增加维度
完全打乱 cat_var --num_id 的映射并重新训练,平均小凹凸精度。
Count 编码
用训练集里的 count 替换对应的变量
对线性或非线性的算法都适用
对异常值敏感
可以加入对数变换,和 counts 一起使用时效果良好
用‘1’代替没有考虑的变量
可以主动给一些冲突性:相同的编码,不同的变量
LabelCount 编码
按训练集中的 counts 等级给变量分类
对线性或非线性算法都适用
对异常值不敏感
不会对不同的变量进行相同的编码
两全其美
目标编码
用目标的比例对类别变量编码(二元分类或回归)
注意避免过拟合
Stacking 的形式:输出目标的平均值的单变量模型
记得做交叉验证
加入平滑性避免出现编码为 0 的情况
加入随机噪声避免过拟合
当被正确的应用时,是最好的线性或非线性编码
嵌入类别
用神经网络来创建类别变量的稠密层
在函数近似问题中将类别变量映射到欧式空间
模型训练更快
更少的存储开销
比 Onehot 编码更精准
NaN 编码
给 NAN 值一个明确的值来代替其被忽略的情况
NAN 值可以保存信息
注意避免过拟合
仅当 NAN 值在训练集和测试集中一致或在本地验证了其独立性时方
可使用
多项式编码
为类别变量间的交互进行编码
没有交互的线性算法不能解决 XOR 问题(逻辑运算)
一个拥有多项式的内核可以解决 XOR 问题
探索特征空间,用:FS,Hashing and/or VW
扩张编码
从一个单变量创建多个类别变量
一些高基数的特征,比如 user-agents,里面有非常多的信息:
is_mobile?
Is_latest_version?
Operation_system
Browser_build
Etc
整合编码
将不同的类别变量映射到同一个变量中
拼写错误,稍有不同的工作描述,全名 vs 缩写
真实的数据是散乱的,自由文本尤其如此
找出特征是很难的,费时,需要专业的知识。应用机器学习基本上就
等于特征工程。

--------------Andrew Ng
数字化特征
使数据进入算法更容易
可由 floats,counts,numbers 组成
更易估算缺失值
凑整
数字化变量的凑整
有损耗的压缩方式:保存数据中大部分重要的特征
有时候太过精准反而会带来噪声
被凑整的变量可以当做类别变量
在凑整前可进行对数变换
装箱
把数字化变量放入箱中,并用 bin-ID 编码
用分位数装箱是很实用的,甚至可以用模型找出可选的箱
可以优雅的找到训练集范围外的变量

缩放
将数字化变量缩放到一个确定的范围内
标准化缩放
最大最小缩放
根缩放
对数缩放
填补
填补缺失值
用缺失值组合硬编码
求平均:相当基础
求中位数:应对离群点时更健壮
直接忽略:只是推迟问题
使用模型:可以暴露算法偏差
交互
数字化变量间具体的交互编码
尝试:减,加,乘法,除法
使用:通过统计检验进行特征选择,或通过训练集对特征重要性排序
易忽略:人的直觉;有时一些诡异的交互会带来出其不意的效果
机器学习项目众多,有点成功了,有的失败了。到底是什么造成了它
们 的 区 别 ? 简 单 来 说 最 重 要 的 就 是 对 特 征 的 使 用 。
------------Predro Domingos
线性算法的非线性编码
用非线性硬编码来改进线性算法
多项式内核
叶编码(嵌入随机森林)
遗传算法
局部线性嵌入,谱嵌入,t-SNE
行统计
NAN 值数
零值数
负值数
平均值,最大值,最小值,偏度,等
时间变量
时间变量,比如日期,需要更好的本地验证方案(比如回溯测试)
这里很容易犯错
有很多机会获得重大突破
投影到圆内
将单个的特征,比如 day_of_week,投影到一个圆的两个坐标上
确保 max 和 min 间的距离等于 min 和 min+1 间的距离
使用 day_of_week,day_of_month,hour_of_day
趋势线
代替编码:总花费,对某件事编码要像:上周的花费,上个月的花费,
上一年的花费
给出一个算法趋势:两个顾客花费相当,但却有截然不同的表现方式
-------一个顾客可能开始花的更多,而另一个接下来可能会减少花费
重大事件的临近
硬编码类别特征,如:data_3_days_before_holidays:1
Try:国庆节,重大体育事件,周末,每个月的第一个星期六,等
这些因素可能会对花费行为产生重大影响
空间变量
空间变量是对本地空间编码的变量
示例:GPS,城市,国家,地址
将位置归类
克里金插值
K-means 分类
原经纬度
将城市转换为经纬度
给街名添加邮政编码
与中心的接近程度
确定当前位置与中心点的接近程度
小城镇传承了周边的大城市的文化和语言
手机的位置可映射到最近的商业中心或超市
空间的欺骗行为
本地事件的数据可以作为可疑行为的指示
不可能的旅行速度:在多个国家同时出现交易
在不同城镇的花费多过在家或送货地址
从不在同一地点花费
探索
数据探索可以发现数据的健壮程度,离群点,噪声,特征工程的想法,
以及特征清洗的想法
可用的有:控制台,pandas,notebook
试试简单的统计:min,max
合并目标,一遍找到项目间的相关性
迭代/调试
特征工程是一个迭代的过程:合理的规划以便快速迭代
使用次线性调试:输出过程中的信息,要做伪日志
使用工具进行快速实验
许多的想法会失败,更多的想法就会成功
标签工程
把标签/目标/依赖性变量当做数据的特征,反之亦然
对数变换:y---> log(y+1) | exp(y_pred)-1
平方变换
箱行变换
创建一个 score,来当做最初的回归目标函数
训练回归来预测测试集里没有的特征
自然语言处理
关于类别特征的所有想法都能用
深度学习(自动化特征工程)在这个领域越来越越来越吃香,但浅度
的学习和精细化特征设计仍然很有竞争力。
高度稀疏的数据可能会带来维数灾难
这部分有许多机会来做特征工程:
清洗:
大写变小写
解码
去掉符号
修复
标志法
编码标点来标记:硬编码“!”和“?”
标志:将句子切分成单词
N-Grams:连续的记号编码:“I like the Beatles”--->[“I like”,”like the”,”the
Beatles”]
Char-grams: 和 N-Grams 一 样 , 但 是 是 字 母 级 的 :“ Beatles ”
--->[“Bea”,”eat”,”atl”,”tle”,”les”]
词缀:和 char-grams 一样,但是只针对后缀和前缀
去除
停止词:去掉出现在停止词列表中的词/标记
特殊词:去掉只在训练集中出现过几次的单词。
常见词:去掉可能不在停止词列表中但却及其常见的词

拼写校正:改变正确拼写的标志
切分:只拿出一个单词中的前 8 个字母
词干:去掉单词/标记的词根 cars-->car
把文中的词按屈折变化形式进行归类:never be late--->never are late
相似性
标记相似性:两个文本中出现的标记个数
压缩距离:寻找比当前文本更好的压缩距离的另一个文本
编辑/汉明/杰卡德距离:检查两个字符串间的相似性
Word2Vec/Glove:检查两个平均向量间的余弦相似性
词频-逆文档词频
词频:减少长文本的偏好
逆文档词频:减少常见标记的偏好
词频-逆文档词频:用于识别文档中最重要的标记,来去除不重要的
标记,或预处理降维
降维
PCA:将文本的维度降到 50-100
SVD:将文本的维度降到 50-100
LDA: TF-IDF followed by SVD
LSA: 创建主题向量
外部模型
情绪分析:得出一个反应文本中积极或消极情绪的向量
主题模型:用另一个数据集来创建一个新数据集的主题向量
神经网络&深度学习
神经网络号称 end-to-end 的自动化特征工程
特征工程垂死的领域?
不!继续专注在建筑工程领域
尽管许下了承诺:计算机视觉像这样使用特征:HOG,SIFT,美白,
摄动,图像金字塔,旋转,缩放 z 缩放,日志,架克,外部语义数据,
等。

原文地址:http://blog.51cto.com/yixianwei/2142523

时间: 2024-11-08 02:16:35

特征工程指南的相关文章

特征工程(Feature Enginnering)学习记要

最近学习特征工程(Feature Enginnering)的相关技术,主要包含两块:特征选取(Feature Selection)和特征抓取(Feature Extraction).这里记录一些要点,作为备忘. 特征选取 R中的FSelector包实现了一些特征选取的算法,主要分两大类: Algorithms for filtering attributes: cfs, chi.squared, information.gain, gain.ratio, symmetrical.uncertai

机器学习 特征工程之特征选择

概念 首先看一下维基百科中关于特征选择的介绍: 在机器学习和统计学中,特征选择 也被称为变量选择.属性选择 或变量子集选择 .它是指:为了构建模型而选择相关特征(即属性.指标)子集的过程. 在机器学习中,每个特征对于目标类别的影响并不相同,所以需要从特征集中挑选出一组最具统计意义的特征子集,把其他无用数据删掉,达到降维的目的. 特征选择的目标是寻找最优特征子集.特征选择能剔除不相关(irrelevant)或冗余(redundant )的特征,从而达到减少特征个数,提高模型精确度,减少运行时间的目

机器学习:特征工程

特征选择直接影响模型灵活性.性能及是否简洁. 好特征的灵活性在于它允许你选择不复杂的模型,同时运行速度也更快,也更容易理解和维护. 特征选择 四个过程:产生过程,评价函数,停止准则,验证过程. 目的:过滤特征集合中不重要特征,挑选一组最具统计意义的特征子集,从而达到降维的效果. 选择标准:特征项和类别项之间的相关性(特征重要性). - - -搜索特征子空间的产生过程- - - 搜索的算法分为完全搜索(Complete),启发式搜索(Heuristic), 随机搜索(Random) 3大类. 完全

最近看到的“特征工程”相关文章,特汇总在一起方便浏览~

最近看到的“特征工程”相关文章,特汇总在一起方便浏览~ 对于搞数据的和玩深度学习的特征工程是不可少的一环,尤其是特征选择,好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点.底层结构,这对进一步改善模型.算法都有着重要作用. 这里先上一篇总括<特征工程技术与方法> 这篇文章详细梳理了特征工程所包含的内容,对机器学习中的特征.特征的重要性.特征提取与选择.特征的构建.学习等子类问题也给与了总结,总之看过这篇文章之后对特征工程就能有一个总体的认识.(这张图总结的太好了,一目了然,贴出来!)

特征工程(转载)

最近想拿一个DateCastle比赛上的关于预测客户人品的项目实际操作下我的sas,拿到数据后发现,最急需解决的问题是特征工程的问题,有1300多个维度的特征,自己想到的思路是由于这些特征是什么,都没有中文的说明,所以无法根据业务经验进行特征筛选,所以需要先通过相关性分析,然后再考虑PCA等方法,正巧看到一篇关于特征工程的详细解说文章~在这就分享给大家啦~ http://machinelearningmastery.com/discover-feature-engineering-how-to-

互联网广告综述之点击率特征工程

互联网广告综述之点击率特征工程 声明: 1)该博文是整理自网上很大牛和专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应,更有些部分本来就是直接从其他博客复制过来的.如果某部分不小心侵犯了大家的利益,还望海涵,并联系老衲删除或修改,直到相关人士满意为止. 3)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢. 4)阅读本文需要机器学习.统计学习理论.优化算法等等基础(如果没有也没关

大数据:“人工特征工程+线性模型”的尽头

大数据:“人工特征工程+线性模型”的尽头 作者:李沐 来源:http://qing.blog.sina.com.cn/1953709481/74733da9330036o7.html 11年的时候我加入百度,在凤巢使用机器学习来做广告点击预测.当时非常惊讶于过去两年内训练数据如此疯狂的增长.大家都在热情的谈特征,每次新特征的加入都能立即得到AUC的提升和收入的增长.大家坚信特征才是王道,相信还会有源源不断的特征加入,数据规模还会成倍的增长.我也深受感染,坚定的相信未来两年数据至少还会长十倍,因此

【特征工程】特征选择与特征学习

http://www.jianshu.com/p/ab697790090f 特征选择与特征学习 在机器学习的具体实践任务中,选择一组具有代表性的特征用于构建模型是非常重要的问题.特征选择通常选择与类别相关性强.且特征彼此间相关性弱的特征子集,具体特征选择算法通过定义合适的子集评价函数来体现.在现实世界中,数据通常是复杂冗余,富有变化的,有必要从原始数据发现有用的特性.人工选取出来的特征依赖人力和专业知识,不利于推广.于是我们需要通过机器来学习和抽取特征,促进特征工程的工作更加快速.有效. 特征选

使用Python做单机特征工程

目录 1 特征工程是什么?2 数据预处理 2.1 无量纲化 2.1.1 标准化 2.1.2 区间缩放法 2.1.3 无量纲化与正则化的区别 2.2 对定量特征二值化 2.3 对定性特征哑编码 2.4 缺失值计算 2.5 数据变换 2.6 回顾3 特征选择 3.1 Filter 3.1.1 方差选择法 3.1.2 相关系数法 3.1.3 卡方检验 3.1.4 互信息法 3.2 Wrapper 3.2.1 递归特征消除法 3.3 Embedded 3.3.1 基于惩罚项的特征选择法 3.3.2 基于