1 特征工程
特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。过程包含了特征提取、特征构建、特征选择等模块。
特征工程的目的是筛选出更好的特征,获取更好的训练数据。因为好的特征具有更强的灵活性,可以用简单的模型做训练,更可以得到优秀的结果。“工欲善其事,必先利其器”,特征工程可以理解为利其器的过程。
2 数据采集、数据清洗、数据采样
数据采集:收集原始数据的过程。我们要知道那些数据对最后我们的目标有影响。
数据清洗:我们可以把算法理解为工厂中加工商品的机器,以后生产的产品如何,跟原材料的好坏是密不可分的。数据清洗会花掉很多时间,这期间会让我们更加理解业务场景。数据清洗要把不可信的样本要去掉,缺失值比较多的样本也要去掉。
数据采样:在很多场景下正负样本都是不均匀的。很多模型对正负样本又比较敏感,比如LR。
(1)当正样本 >> 负样本的时候,同时数据量都比较大,正样本做下采样。
(2)当正样本 >> 负样本的时候,量不是很大的时候,负样本可以重采样。
3 数据预处理、常见特征处理方法
数据预处理:
我们这里使用python语言,使用pandas。在进行数据特征处理前,我们可以使用pandas了解数据的大体情况。
* head()
* info()
* describe() 这个会统计数值类型的情况
了解数据的大体信息最后,我们可以做一些数据预处理,比如缺失值补全。
(1)使用pandas的fillna
train.loc[:,'Age'] = train['Age'].fillna(value=train['Age'].mean())
(2) 使用sklearn中的Imputer
特征处理
数值型:
(1)幅度调整/归一化
(2)统计值max ,min,mean,std
最大最小值
分位数
(3) Log等值变化
(4)离散化
等距切分
等频切分
(5)高次与四则运算的特征
高次特征
(6)数值型转化为类别行
类别型:
(1)one-hot编码/哑变量
(2)hash值、聚类处理,比如分桶处理
(3)统计类别比例,转换为数值类型
时间型:
时间类型既可以看作连续的、也可以作为分散的。
离散:
比如昨天是一周中的那一天,在一年的那一个周,那个月份。
连续:
比如浏览商品的时长,抖音视频观看的时长或者时间间隔。
文本类型:
这个涉及到一些NLP的知识。文本处理一般先分词,去掉停用词语。
可以使用词袋模型、TF-IDF、word2vec(CBOW和Skip-gram)
词袋模型:
TF-IDF
统计类型:
(1)分位线
(2)次序型,比如商品的等级
(3)比列型,比如这一个商品,好评率是多少。
其它类型:
根据业务场景,设计的一些生成特征的方法。
(1)组合特征,比如特征的拼接。
(2)模型特征组合,比如可以使用数模型产出特征组合
特征选择稍后更新。