特征工程

来源:互联网 发布:淘宝页面装修教程 编辑:程序博客网 时间: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

       


0 0
原创粉丝点击