LR总结二--特征工程
上篇总结了LR的理论,这篇总结使用LR时关于特征工程方面的知识。主要从特征来源、特征选择、特征处理几个方面总结。
我所面对的任务是训练一个LR模型来预测用户对歌曲的喜爱与否。
一、特征来源
一般情况下模型所需要的特征来自于两个方面,1:和业务相关的原始特征,2:通过其他模型提取的高级特征。针对我的问题,第一种来源的特征就有很多,比如歌曲的相关信息(歌曲名,歌手名,歌曲语言,歌曲发行地区),用户相关的信息(用户的注册时间,用户id,用户是否为vip,用户所使用的手机及网络类型),环境相关的信息(日志中听歌的时间,听歌所在的地理位置),这些特征和业务具体相关,有些可能对问题有用,有些可能对预测结果没有用处。第二种来源的特征就是需要人工进行组合的特征和模型处理后得到的特征,这类特征是特征工程所主要做的工作。比如通过特征交叉将歌曲和用户特征组合得到的特征,通过GBDT训练后得到的特征,这些都是相对于和业务相关的原始特征的高级特征。此处高级并不代表这个特征就对问题处理有用,只是相对的。
二、特征选择
一般情况下,我们一开始并不确定哪些特征是有用的,哪些特征是对预测结果影响较小的。我们获取的特征个数往往很多,所以需要筛选一部分特征,有利用模型的训练和线上部署。
2.1 过滤法选择特征
我们通过计算特征某些指标,来确定哪些特征应该舍弃,通常有一下几种指标。
使用的指标最多的是方差,方差越大的特征,我们认为越有用。如果方差比较小,这个特征可能对我们的算法作用不大。
相关系数指标:用于输出连续值的监督学习算法中,分别计算训练集中每个特征与输出值的相关系数,设定一个阈值,选择相关系数大的部分特征。
卡方检验:卡方检验可以检测某个特征的分布和输出值的分布之间的相关性。
信息熵:从信息熵的角度,计算信息增益,评估特征和输出值之间的关系。(类似决策树的特征选择过程)。
2.2 包装法选择特征
典型算法是递归消除特征法(RFE),SVM-RFE使用svm做特征选择。它选用svm进行多轮训练,每轮训练后,消除若干权重系数对应的特征,直到特征的数目满足我们的需求为止。
2.3 嵌入法选择特征
这种方法比较常用的是使用L1正则化和L2正则化进行特征选择。
三、特征处理
经过特征选择后,我们所剩余的特征有数值特征(歌曲热度),类别特征(是否vip),时间特征(注册时间),地理特征等多种多样的特征。我们需要把他们处理成数值,输入到模型中。
3.1 数值特征
这是最常见的特征类型,数值特征又分为连续性的数值特征,离散性的数值类型。对于连续性特征,有以下处理方法:
a离散化:通过分组的方式将其离散化,也可以通过GBDT进行离散化。
b截断:有时候太多的精度可能只是噪声、因此在保证信息的基础上对其进行截断。
c二值化:这个也属于离散化,不过是离散成0和1。比如用户对一首歌曲的播放次数。
d缩放:即进行归一化
对于离散性数值特征,上述的方法也是适用的。
3.2 类别特征
类别特征可以是数值(用户的种类,vip和非vip),也可以是标签数据(歌曲的曲风),一般有以下编码方法:
a one-hot方法,这个是最常用的方法。通过将类别特征编码成0和1的数组,可以提高数据的稀疏性。
B 自然数编码,将类别分别编码为0 1 2 3 。。。
c 二进制编码,在one-hot基础上将0和1表示成二进制,缩小存储的开销。
D 分层编码,如身份证可以对不同位数进行分层编码。
E 散列编码,类似与hash的方法,通过hash函数将值分到不同的桶中。
3.3 时间特征
时间特征是个重要的因素,对其编码也是有很多方法:
a 按照类别特征进行处理,将时间转换成年月日,周几,是否月初、是否闰年等特征
b 按照连续数值特征处理,转换成时间戳后,可以计算样本时间到未来时间的时间戳的差,转换成连续值。
C 权重法: 根据时间的新旧计算出一个权重,相当于增加一个新特征表示新旧。
D 历史特征的方法,t时刻的样本,可以将t-1,t-2时刻的值作为特征使用。意思是可以将用户上周的听歌信息加入到此时的样本中,这样利用了历史信息。
3.4 地理特征
用户的地理位置,所在的经纬度也是重要的特征,处理方法如下:
1、转化成类别特征,可以转换成省市区等信息进行处理,也可以对经纬度做散列转换成类别
2、转换成数值特征,计算两个位置的距离比如和省会城市的距离作为特征
3.5 文本特征
歌曲的歌词也包含了很多信息,好的歌曲也会吸引用户听歌,处理方法如下:
1、分词,通过词袋模型将歌词转换成向量
2、TF-IDF,经过对次品信息的利用后转换成向量
3、word2vec,通过算法进行语义分析转换成向量
3.6 音频特征
歌曲的音频特征是最原始的特征,往往也比较难使用,我使用过的方法有:
1、原始特征,通过对音频进行截取,并计算MFCC系数后转换成向量使用
2、图形特征,通过对音频的音高,音色等特征的抽取,生成声谱图,转成成rgb图像处理
3、深度学习方法,将音频经过前两种方法处理后,输入神经网络模型进行训练,得到隐藏因子作为音频的特征
四、特征的数字处理
1、 z-score标准化:最常用,求出均值mean 和标准差std,然后用(x-mean)/std代替x。特征变成了均值为0,方差为1.
2、 min-max标准化:离差标准化。
3、 L1/L2标准化:求出特征向量x的笵数L,然后用x/L代替x。
4、 中心化:pca降维的时候,求出特征x的平均值x-mean 后,用x-mean代替x,使得特征的均值改变,方差不变。
五、异常样本清洗
1、 聚类方法:找出聚类之后簇中样本很少或者离簇中心距离很远的样本,这些可能是异常样本。
2、 异常点检测:算法有one class svm 和 iForest算法
六、处理不平衡数据
1、 权重法
对每个类别增加一个权重,该类别下的样本越多,权重越低。
2、 采样法
重采样和过采样,分别针对数据多的类别和数据少的类别。这两个采样法改变了数据集的分布,可能导致泛化能力减小。smote算法对于数据少的类别,利用类别下的数据,重新生成数据,增加这个类别的样本,可以减小这个影响。