特征工程除了构建特征和特征选择以外,还包含数据预处理
数据预处理
离群点处理:
例如
上图中存在一定的离群点,此时我们可以对这些离群点作以下处理:
- 当作缺失值进行处理
- 删掉离群点所载样本
- 使用统计值进行填充
缺失值处理: 当我们面对一些缺失值时,我们应该考虑这些缺失值是否为一个真正意义上的缺失
错误值处理: 明错误值(一眼就看出来是错误的,比如身高5米......);暗错误值(比如匿名比赛时选手的信息......)
假标签处理: 常见的两种假标签:错误标签和标签和评估指标不一致
特征提取
类别特征
编码方式
自然数编码:将特征转化成对应的自然数
独热编码:转化为对应的属性树的维度的信息
count编码(替代类别特征):统计对应的类别出现的频次去替代所对应的类别特征
目标编码:观察特征对目标的影响大不大
统计方式
count
nunique(宽度)
ratio(偏好)
数值特征
交叉统计
我们可以对用户特征进行两两交叉,比如用户性别有两个属性,用户年龄有三个属性,交叉之后,我们就拥有了六个属性,力度就由粗变细了,将细腻的力度结合类别特征的统计方式,又能拓展很多细粒度的特征
行交叉(均值、中位数、最值)
业务交叉构建
离散方式
分桶
二值化(0/1)
时间特征
日期变量(年、月、周、日、小时、分钟)
距离某天的时间差,是否某个特殊日期,时间组合
时序相关特征( 历史平移,滑窗统计)
多值特征
在日常数据中,我们可能会遇见一些利用多个标签去描述的特征,这就是多值特征
one-hot:将标签进行展开(有几个值展开成多少维度)
countvectorizer:将标签展开后统计每一个值出现的频次
TF-IDF:在做nrp自然语言数据处理时常常会用到,可以得到类似于向量的展示,我们可以对该向量进行降维来获得新特征
特征选择
上面我们介绍了特征的提取,根据特征提取,我们可以构建很多特征,但是其中可能会存在一些冗余的特征,或者是一些相关性比较高的,没有价值的特征,此时,我们需要进行特征选择。常用的特征选择方法如下:
过滤法: 相关系数+卡方检验+互信息
最直接,效率较快。可以直接去衡量特征与标签之间的相关分数,将分数较低的进行过滤
封装法: 前向搜索+后向搜索
耗时。每次增加或删除一个特征就要对模型进行训练检验,如果说效果或者它的一个评价指标有提升的话,那我们可以确定一个特征是否留存
嵌入法: 基于学习模型的特征排序
可以通过某些方法获取到特征的重要性(根据特征信息增益的分数或者它整体分类的次数和来进行打分的),这样可以一次性对特征进行排序