特征工程
- 特征工程
特征=>数据中抽取出来的对结果预测有用的信息
特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程
- 意义
更好的特征意味着更强的灵活度
更好的特征意味着只需用简单模型
更好的特征意味着更好的结果
- 数值型数据
-
幅度调整与归一化
-
标准化
- 统计值
- 离散化
将年龄一列分为三列:
age>60 | age>=6 and age <=60 | age <6 |
---|
4.1 等距切分
均匀分布的数据适合此切分方式
4.2 等平切分
按照分位数进行切分
- 类别型数据
- One-hot编码/哑变量
r | g | b | y |
---|---|---|---|
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
- Hash 技巧(文本处理方式)
John likes to watch movies
mary likes movies too
john also likes football
john | likes | to | watch | movies | Mary | too | also | football |
---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
-
Histogram映射
通过训练集得到映射关系男->[1/3,2/3,0],则在测试集中如果遇到男,则直接将其映射为[1/3,2/3,0]即可
- 时间类型数据
- 连续值
a) 持续时间(单页浏览时长)
b) 间隔时间(上次购买/点击离现在的时间) - 离散值
a) 一天中哪个时间段
b) 一周中星期几
c)一年中哪个星期
d)一年中哪个季度
e) 工作日/周末
- 文本类型数据
-
词袋
文本数据预处理后,去掉停用词,剩下的词组成的list,在词库中的映射稀疏向量。
其原理与Hash技巧相同 -
把词袋中的词扩充到n-gram
“bi grams are cool” 扩充至如下:
[‘bi’ ‘grams’ ‘are’ ‘cool’ ‘bi grams’ ‘grams are’ ‘are cool’] -
Tf-idf特征
TF-IDF是一种统计方法,用以评估一个词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料出现的频率成反比下降
TF:Term Frequency
TF(t)=(词t在当前文中出现的次数)/(t在全部文档中出现的次数)
IDF:Invert Document Frequency
IDF(t)=ln(总文档数/含t的文档数)
-
统计型数据
根据实际情况确定
-
组合型数据
可以根据决策树确定
-
特征选择原因
- 冗余:部分特征的相关度太高,消耗计算性能
- 噪声:部分特征是对预测结果有负影响
- 特征选择VS降维
- 前者只踢掉原本特征里和结果预测关系不大的,后者做特征的计算组合构成新特征
- SVD或者PCA确实也能解决一定的高纬度问题
- 特征选择方式之 过滤型
- 评估单个特征和结果之间的相关程度,排序留下Top相关的特征部分
- Person相关系数,互信息,距离相关度等
- 缺点:没有考虑到特征之间的关联作用,可能把有用的关联特征剔除掉
- 特征选择方式之 包裹型
- 把特征选择看作一个特征子集搜索问题,筛选各种特征子集,用模型评估效果
- 典型的包裹型算法为递归特征删除算法
- 比如使用逻辑回归,使用方法如下:
a. 用全量特征跑一个模型
b. 根据线性模型的系数,删除掉5-10%的弱特征,观察准确率变化
c. 逐步进行,直至准确率出现大的下滑停止
- 常见特征选择方式之 嵌入型
- 根据模型来分析特征的重要性
- 最常见的方式为用正则化来做特征选择