特征工程
来源:互联网 发布:淘宝页面装修教程 编辑:程序博客网 时间:2024/04/30 05:26
特征工程指的是使用专业背景知识和技巧处理数据,使得得到的特征能够在机器学习算法中获得优秀的结果.
特征工程的目的就是筛选出更好的特征,得到更好的训练数据.好的训练数据即使是用简单的模型也能得到很好的结果.
1. 数据预处理
1.1 数据采集
明确需要采集的数据;
一般需要考虑以下几点:数据是否对最后的结果预测有帮助?数据能否采集?线上实时计算的时候获取是否快捷?
例子:预测用户对商品的下单情况,或给用户推荐商品,需要采集的信息?
- 店家:店铺评价星级/店铺开店时长/
- 商品: 商品评分/商品评价/销量/价格/材质/
- 用户: 历史信息(购买物品的最低价最高价)/消费能力/商品停留时间/喜好标签/
1.2 数据清洗
去除脏数据;例如商品的刷单数据
判断脏数据的方式:
(1)简单属性判定,例如:一个人一个月买了10w的发卡;
(2)组合或统计属性判定: 若判定一个人是否会买篮球鞋,但样本中女性用户占90%
(3)补齐可对应的缺省值: 丢掉不可信的样本,缺省值过多的字段不考虑
1.3 数据采样
在经过数据采集/清洗后,正负样本可能是不均衡的,此时便需要数据采样.
数据采样的常用方法是随机采样和分层采样.
采样一般会破坏数据的分布,因为数据包含多个维度,不能每个维度都满足分布
正负样本不平衡的处理方法:
(1) 当正样本>>负样本,且数据量都很大时, 采用下采样
(2) 当正样本>>负样本,且数据量不大时, 采集更多的数据/上采样(例如图像中的旋转)/修改损失函数(负样本的惩罚系数加大,若错了,则增大惩罚值)
2. 特征处理
2.1 数值型数据
(1) 归一化/幅度调整: 将数据幅度调整到[0,1]区间
(2) 统计值: 即max/min/mean,次序型(排名)/比例型(好中差评比例)/加减平均(价格高于平均价格多少)
(3) 离散化: 将连续值转换成非线性数据;例如价格表,价格区间为[0-100],以1元为间距分割成100个区间,用100维的向量代表每一个价格所处的区间,则1.2和1.6所对应的向量是一样的.
(4) 柱状分布: 离散化后统计每个区间的个数做柱状图
2.2 类别型数据
类别型数据一般是文本信息,需要转换为数值形式进行存储.
(1) one-hot编码: 根据此特征对应的类别数目设置向量维度,表示某一类别即将对应的位置为1即可.
(2) histogram映射: 将每列的特征取出,根据目标内容做统计,然后将目标中的每个内容对应的百分比填到对应的向量的位置.这样可以将这两个特征联系起来.例如比较男女的爱好比例,爱好有3种,散步/运动/看剧,男对应向量[1/3,2/3,0],女对应向量[1/3,0,2/3].
2.3 时间型数据
时间型数据即可以看做是连续值(持续时间/间隔时间),也可以看做是离散值(星期几,几月份).
2.4 文本型数据
(1) 词袋模型: 经过预处理后,去除停用词,剩下的词依据词典映射为稀疏向量.
(2) n-gram: 即n个相邻词的组合,有的文本对应的词袋模型可能是一样的,但其实内容是不一样的.
(3) tf-idf: 评价词对于一个文档集或其中一篇文本的重要程度,词的重要性随它在文件中出现的次数增加而增加(正比),但同时随着它在文档集中出现的频率增加而减少(反比)
2.5 组合数据
(1) 拼接型: 例如挖掘用户对某种类型的喜爱,将用户和类型拼接起来,正负权重,代表喜欢或不喜欢
(2) 模型特征组合: 通过GBDT产生特征组合路径,组合特征和原始特征都参与训练
3. 特征选择
特征存在冗余:部分特征的相关度太高了,消耗计算性能;存在噪声,部分特征可能对结果存在负影响
特征选择和降维是不一样的,特征选择只是丢掉原始特征中和结果预测关系不大的,降维则是以原始特征为基础,计算组合构成新特征.
3.1 过滤型方法
评估每个特征和结果的相关程度,根据相关性排序,保留top特征.
度量相关程度的方法: pearson相关系数/互信息/距离相关度
pearson系数只能衡量线性相关性,互信息系数能够很好地度量各种相关性.
缺点: 只考虑了单个特征对结果的影响,没有考虑特征之间的关联作用,可能丢掉有用的关联特征,在工业界使用较少.
3.2 包裹型数据
把特征选择看做一个特征子集搜索问题,筛选各种特征子集,用模型评估效果.
算法: 递归特征删除算法,即删除对模型正确率贡献不大的特征
例子: 首先用全部特征得到一个模型,然后根据线性模型的系数,删除5-10%的弱特征,观察准确率的变化;逐步进行,直到准确率出现大的下滑停止.
3.3 嵌入型方法
根据模型分析特征的重要性,最常见的方式是用正则化方式来做特征选择.
线性回归中参数的系数即代表相关性;
L1正则化具有截断作用,若特征和结果没有相关性,则其权重为0;L1没有选择的特征不代表不重要,有可能是两个具有高相关性的特征只保留了一个,要确定哪个特征重要再通过L2正则方法交叉检验.
参考
[1] http://www.cnblogs.com/jianzhitanqiao/archive/2016
[2] http://blog.csdn.net/JoyceWYJ/article/category/6245404
- 特征工程
- 特征工程
- 特征工程
- 特征工程
- 特征工程
- 特征工程
- 特征工程
- 特征工程
- 特征工程
- 特征工程
- 特征工程
- 特征工程
- 特征工程
- 特征工程
- 特征工程
- 特征工程
- 特征工程
- 特征工程
- Unity3D学习日记(十) iOS获取局域网的IP
- OGL 累积缓存
- Java多线程--Thread中start()和run()的区别
- mpc8260 17
- 程序员技术练级攻略
- 特征工程
- Redis + Keepalived实现Redis的HA:
- iOS-内存泄露检测工具(MLeaksFinder)
- 关于于渊的自己写操作系统Windows环境搭建
- 高可用、开源的Redis缓存集群方案
- android中文件加密和解密的实现
- android NetworkInfo类
- linux下杀死进程(kill)的N种方法
- Android exercise 3